在这篇文章中,我们将讨论PostgreSQL的内存体系结构。 PostgreSQL中的内存体系结构可以分为两个广泛的类别:在以下小节中,简要描述了这些类别:
✔️ Local memory area:
它由 每个后端过程 分配。每个后端过程都为 查询处理 分配本地存储区域;每个区域都分为几个子区域,其大小是固定的或可变的。
默认情况下,每个会话的大小为4MB。例如:如果有100次会议,那么他们将消耗400 MB。下表显示了主要子区域的列表:
✔️ Shared memory area:
它是 。当 启动 时,PostgreSQL Server分配了共享存储区域。该区域还分为几个固定大小的子区域。下表显示了主要子区域的列表:
如果我们想从PostgreSQL中检查所有这些,那么以下查询将提供适当的结果:
postgres=# select name,setting,unit from pg_settings where name like '%buffer%';
name | setting | unit
----------------+---------+------
shared_buffers | 16384 | 8kB
temp_buffers | 1024 | 8kB
wal_buffers | 512 | 8kB
(3 rows)
postgres=# select name,setting,unit from pg_settings where name like '%work_mem%';
name | setting | unit
---------------------------+---------+------
autovacuum_work_mem | -1 | kB
logical_decoding_work_mem | 65536 | kB
maintenance_work_mem | 65536 | kB
work_mem | 4096 | kB
(4 rows)