![PostgreSQL指南:内幕探索](https://wfqqreader-1252317822.image.myqcloud.com/cover/920/26297920/b_26297920.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.2 内存架构
PostgreSQL的内存架构可以分为两个部分:
· 本地内存区域——由每个后端进程分配,供自己使用。
· 共享内存区域——供PostgreSQL服务器的所有进程使用。
下面将简要介绍这两部分架构。图2.2是 PostgreSQL的内存架构。
![](https://epubservercos.yuewen.com/9095F3/14737439805565406/epubprivate/OEBPS/Images/Figure-0031-0019.jpg?sign=1739240931-cHVbNwBWxvFt9Ond6PejClhMLSt7zsve-0-722e60abd1d3398c904d18e19d5476a2)
图2.2 PostgreSQL的内存架构
2.2.1 本地内存区域
每个后端进程都会分配一块本地内存区域用于查询处理。该区域会分为几个子区域 —— 子区域的大小有的固定,有的可变。表 2.2 列出了主要的子区域。更多详细内容将在后续章节中介绍。
表2.2 本地内存区域
![](https://epubservercos.yuewen.com/9095F3/14737439805565406/epubprivate/OEBPS/Images/Figure-0032-0020.jpg?sign=1739240931-AnLKjKSwlhq3NXitkjVZDYeZmAHbE1O2-0-c4e4e2c35512247541b3518a5a1a88fb)
2.2.2 共享内存区域
PostgreSQL服务器启动时会分配共享内存区域,该区域分为几个固定大小的子区域。表2.3列出了主要的子区域。更多详细内容将在后续章节中介绍。
表2.3 共享内存区域
![](https://epubservercos.yuewen.com/9095F3/14737439805565406/epubprivate/OEBPS/Images/Figure-0032-0021.jpg?sign=1739240931-U3k4HjfZNoOSlSUU054yuitJfauNxEcL-0-5027a74b63bd15900e349984a795f9d0)
除了上面这些,PostgreSQL还分配了以下几个区域:
· 用于访问控制机制的子区域(例如信号量、轻量级锁、共享和排他锁等)。
· 各种后台进程使用的子区域,例如checkpointer和autovacuum。
· 用于事务处理的子区域,例如保存点与两阶段提交(2PC)。