PostgreSQL database have very simple memory structure for run time processing.
|shared_buffers (integer) [128M]||Amount of memory the database server uses for shared memory buffers.|
|wal_buffers (integer) [-1 i.e. 3% of shared buffer]||The default
setting of -1 selects a size equal to 1/32nd (about 3%) of shared_buffers, but not less than 64kB
nor more than the size of one WAL segment, typically 16MB. This value can be set manually
if the automatic choice is too large or too small, but any positive value less than 32kB will be
treated as 32kB.
16MB > Wal Buffer > 32KB
|temp_buffers (integer) [8M]||Maximum number of temporary buffers used by EACH database session.|
|maintenance_work_mem (integer) [64M]||Maximum amount of memory to be used by maintenance operations, such as VACUUM, CREATE INDEX, and ALTER TABLE ADD FOREIGN KEY|
|autovacuum_work_mem (integer)||Maximum amount of memory to be used by EACH autovacuum worker process (autovacuum_max_workers)|
|work_mem (integer) [4M]||Amount of memory to be used by EACH internal sort operations and hash tables before writing to temporary disk files|
PostgreSQL : Memory Structure