PostgreSQL指南:内幕探索
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2 内存架构

PostgreSQL的内存架构可以分为两个部分:

· 本地内存区域——由每个后端进程分配,供自己使用。

· 共享内存区域——供PostgreSQL服务器的所有进程使用。

下面将简要介绍这两部分架构。图2.2是 PostgreSQL的内存架构。

图2.2 PostgreSQL的内存架构

2.2.1 本地内存区域

每个后端进程都会分配一块本地内存区域用于查询处理。该区域会分为几个子区域 —— 子区域的大小有的固定,有的可变。表 2.2 列出了主要的子区域。更多详细内容将在后续章节中介绍。

表2.2 本地内存区域

2.2.2 共享内存区域

PostgreSQL服务器启动时会分配共享内存区域,该区域分为几个固定大小的子区域。表2.3列出了主要的子区域。更多详细内容将在后续章节中介绍。

表2.3 共享内存区域

除了上面这些,PostgreSQL还分配了以下几个区域:

· 用于访问控制机制的子区域(例如信号量、轻量级锁、共享和排他锁等)。

· 各种后台进程使用的子区域,例如checkpointer和autovacuum。

· 用于事务处理的子区域,例如保存点与两阶段提交(2PC)。