- PostgreSQL指南:内幕探索
- (日)铃木启修
- 372字
- 2020-08-27 20:51:49
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)。