Re: BUG #1756: PQexec eats huge amounts of memory - Mailing list pgsql-bugs

From Denis Vlasenko
Subject Re: BUG #1756: PQexec eats huge amounts of memory
Date
Msg-id 200507070821.38121.vda@ilport.com.ua
Whole thread Raw
In response to Re: BUG #1756: PQexec eats huge amounts of memory  (Harald Armin Massa <haraldarminmassa@gmail.com>)
List 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 by date:

Previous
From: Hans-Jürgen Schönig
Date:
Subject: Sun inline assembler ...
Next
From: Denis Vlasenko
Date:
Subject: Re: BUG #1756: PQexec eats huge amounts of memory