wrong again, Fabio.
PostgreSQL is not coded to manage memory usage in the way you think it
does with work_mem. Here is a quote from Citus about the dangers of
setting work_mem too high.
When you consume more memory than is available on your machine
you can start to see out of out of memory
errors within your
Postgres logs, or in worse cases the OOM killer can start to randomly
kill running processes to free up memory. An out of memory error in
Postgres simply errors on the query you’re running, where as the the OOM
killer in linux begins killing running processes which in some cases
might even include Postgres itself.
When you see an out of
memory
error you either want to increase the overall RAM
on the machine itself by upgrading to a larger instance OR you want to
decrease the amount of memory that work_mem
uses. Yes, you read that right: out-of-memory it’s
better to decrease work_mem
instead of increase since that is the amount of
memory that can be consumed by each process and too many operations are
leveraging up to that much memory.
https://www.citusdata.com/blog/2018/06/12/configuring-work-mem-on-postgres/
Regards,
Michael Vitale
Nope Michael,
if 'stuff' gets spilled to disk does
not end up in an error. It
will silently write a file to disk for the
time being and then deleted it when your operation is
finished.
period.
Based
on your log settings, it might
appear in the logs, under 'temporary file created..'.
regards,
fabio pardi
On 20/07/18 15:00, MichaelDBA wrote:
I do not think that is
true. Stuff just gets spilled to disk when the work_mem buffers would
exceed the work_mem constraint. They are not constrained by what real
memory is available, hence the memory error! They will try to get
memory even if it is not available as long as work_mem buffers threshold
is not reached.
Regards,
Michael Vitale
work_mem cannot be the cause of it for the simple reason that if
the memory needed by your query overflows work_mem, it will spill
to disk
regards,
fabio pardi
On 20/07/18 14:35, MichaelDBA wrote:
Perhaps your "work_mem"
setting is causing the memory problems. Try reducing it to see if that
alleviates the problem.
Regards,
Michael Vitale