Thread: Work Mem Allocation Questions

Work Mem Allocation Questions

From
Brad Nicholson
Date:
1: Is the default work_mem pre-allocated to the Postgres processes - or
does it get allocated when needed?  Say I have work_mem at 30MB - will
Postgres allocate that 30MB on connection, or only when it needed by a
query?

2: If work_mem is, say,  30MB, and my query needs 10MB - will Postgres
allocate all 30MB, or just the 10MB I need?

--
Brad Nicholson  416-673-4106
Database Administrator, Afilias Canada Corp.



Re: Work Mem Allocation Questions

From
Bill Moran
Date:
In response to Brad Nicholson <bnichols@ca.afilias.info>:

> 1: Is the default work_mem pre-allocated to the Postgres processes - or
> does it get allocated when needed?  Say I have work_mem at 30MB - will
> Postgres allocate that 30MB on connection, or only when it needed by a
> query?

It's allocated on demand and freed when no longer needed.

> 2: If work_mem is, say,  30MB, and my query needs 10MB - will Postgres
> allocate all 30MB, or just the 10MB I need?

Same answer.

Keep in mind that work_mem is not an upper cap, it is a per-sort limit.
Thus a query with 5 sorts could allocate 5 * work_mem.  The docs have
a little more detail on this.

--
Bill Moran
http://www.potentialtech.com
http://people.collaborativefusion.com/~wmoran/