Casey Duncan <casey@pandora.com> writes:
> I have some nightly statisics queries that runs against a view which
> unions several large tables. Recently one of these queries started
> running into out of memory errors. This is on postgresql 8.1.8
> running on 32-bit Debian Linux.
What have you got work_mem set to, and what's the actual process size
limit the kernel is enforcing? It looks to me like your query will
try to eat at least twice work_mem for the two COUNT DISTINCT operations.
Another issue is that the measurement of how much space is really being
used is not necessarily very accurate --- I don't recall exactly how
good 8.1 is about that, but it wouldn't surprise me too much if the
actual net memory demand was about twice as much again.
Anyway the short answer is probably "reduce work_mem".
regards, tom lane