PostgreSQL内存体系结构
#postgres #database #apacheage #agedb

在这篇文章中,我们将讨论PostgreSQL的内存体系结构。 PostgreSQL中的内存体系结构可以分为两个广泛的类别:在以下小节中,简要描述了这些类别:

✔️ Local memory area:

它由 每个后端过程 分配。每个后端过程都为 查询处理 分配本地存储区域;每个区域都分为几个子区域,其大小是固定的或可变的。

默认情况下,每个会话的大小为4MB。例如:如果有100次会议,那么他们将消耗400 MB。下表显示了主要子区域的列表:

Local memory area

✔️ Shared memory area:

它是 。当 启动 时,PostgreSQL Server分配了共享存储区域。该区域还分为几个固定大小的子区域。下表显示了主要子区域的列表:

Shared memory area
在下图中,图形描述了这些过程:

Memory architecture
如果我们想从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)

✔️ References:

  1. https://age.apache.org/
  2. https://github.com/apache/age
  3. https://www.interdb.jp/pg/index.html