Re: BUG #1756: PQexec eats huge amounts of memory

Поиск
Список
Период
Сортировка
От Denis Vlasenko
Тема Re: BUG #1756: PQexec eats huge amounts of memory
Дата
Msg-id 200507070821.38121.vda@ilport.com.ua
обсуждение исходный текст
Ответ на Re: BUG #1756: PQexec eats huge amounts of memory  (Harald Armin Massa <haraldarminmassa@gmail.com>)
Список pgsql-bugs
On Wednesday 06 July 2005 16:52, Harald Armin Massa wrote:
> Denis,
>
> $result = pg_query($db, "SELECT * FROM big_table");
>
> you are reading a big result (as I suspect from big_table) into memory. It
> is perfectly normal that this uses large amounts of memory.

No, I am not reading it into memory. I am executing query _on the server_,
fetching result row-by-row and discarding rows as prey are processed
(i.e. without accumulating all rows in _client's memory_) in the part
of php script which you snipped off.

Similar construct with Oracle, with 10x larger table,
does not use Apache (php) memory significantly.

php's pg_query() calls PQuery(), a Postgresql client library function,
which is likely implemented so that it fetches all rows and stores them
in client's RAM before completion.

Oracle OCI8 does not work this way, it keeps result set
on db server (in a form of a cursor or something like that).

> [it would be rather suspicious if loading a big file / big resultset would
> not use big amounts of memory]
--
vda

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Hans-Jürgen Schönig
Дата:
Сообщение: Sun inline assembler ...
Следующее
От: Denis Vlasenko
Дата:
Сообщение: Re: BUG #1756: PQexec eats huge amounts of memory