Wiki / Configuration Parameters
work_mem
Sets the base maximum amount of memory to be used by a query operation (such as a sort or hash table) before writing to temporary disk files. If this value is specified without units, it is taken as kilobytes. The default value is four megabytes (4MB). Note that a complex query might perform several sort and hash operations at the same time, with each operation generally being allowed to use as much memory as this value specifies before it starts to write data into temporary files. Also, several running sessions could be doing such operations concurrently. Therefore, the total memory used could be many times the value of work_mem; it is necessary to keep this fact in mind when choosing the value. Sort operations are used for ORDER BY, DISTINCT, and merge joins. Hash tables are used in hash joins, hash-based aggregation, memoize nodes and hash-based processing of IN subqueries. Hash-based operations are generally more sensitive to memory availability than equivalent sort-based operations. The memory limit for a hash table is computed by multiplying work_mem by hash_mem_multiplier. This makes it possible for hash-based operations to use an amount of memory that exceeds the usual work_mem base amount.
English manual coverage begins with PostgreSQL 7.4. Source history and runtime observations have their own recorded version boundaries.
Reading PG 18·Select a recorded version
- boot val
- 4096
- category
- Resource Usage / Memory
- context
- user
- documented
- true
- enumvals
- Unknown
- extra desc
- This much memory can be used by each internal sort operation and hash table before switching to temporary disk files.
- lang
- en
- max val
- 2147483647
- metadata version
- 18
- min val
- 64
- name
- work_mem
- short desc
- Sets the maximum memory to be used for query workspaces.
- source
- pg-settings-source-snapshot
- unit
- kB
- vartype
- integer
Definition PG 18
Sets the base maximum amount of memory to be used by a query operation (such as a sort or hash table) before writing to temporary disk files. If this value is specified without units, it is taken as kilobytes. The default value is four megabytes (4MB). Note that a complex query might perform several sort and hash operations at the same time, with each operation generally being allowed to use as much memory as this value specifies before it starts to write data into temporary files. Also, several running sessions could be doing such operations concurrently. Therefore, the total memory used could be many times the value of work_mem; it is necessary to keep this fact in mind when choosing the value. Sort operations are used for ORDER BY, DISTINCT, and merge joins. Hash tables are used in hash joins, hash-based aggregation, memoize nodes and hash-based processing of IN subqueries. Hash-based operations are generally more sensitive to memory availability than equivalent sort-based operations. The memory limit for a hash table is computed by multiplying work_mem by hash_mem_multiplier. This makes it possible for hash-based operations to use an amount of memory that exceeds the usual work_mem base amount.
Compare versions
Source references
Full definition and evidence JSON
Definition sources
center · PostgreSQL 18 · english-manuals:7a499d67cdf5239e8cf37d2be36e387fccea02c500c39f99f4a0b1d4e3452429
Text language: en · english-manuals:7a499d67cdf5239e8cf37d2be36e387fccea02c500c39f99f4a0b1d4e3452429