![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=1739349139-hssTGDx3wi5HvnqBoBmPzeXsbEbyVbJa-0-1c7c1d5cb97b40367ed761452aeb124c)
图2.2 PostgreSQL的内存架构
2.2.1 本地内存区域
每个后端进程都会分配一块本地内存区域用于查询处理。该区域会分为几个子区域 —— 子区域的大小有的固定,有的可变。表 2.2 列出了主要的子区域。更多详细内容将在后续章节中介绍。
表2.2 本地内存区域
![](https://epubservercos.yuewen.com/9095F3/14737439805565406/epubprivate/OEBPS/Images/Figure-0032-0020.jpg?sign=1739349139-8VTBVrgZxean8GeNrmyEKGMUDstchltO-0-97b15b7086cef7ce3f44319f2c8b0538)
2.2.2 共享内存区域
PostgreSQL服务器启动时会分配共享内存区域,该区域分为几个固定大小的子区域。表2.3列出了主要的子区域。更多详细内容将在后续章节中介绍。
表2.3 共享内存区域
![](https://epubservercos.yuewen.com/9095F3/14737439805565406/epubprivate/OEBPS/Images/Figure-0032-0021.jpg?sign=1739349139-xpJSuulWHtzXOQPqdPTlWqEBt0aqyJhX-0-0c2b9e55d0189e40797ba4aebbfe957f)
除了上面这些,PostgreSQL还分配了以下几个区域:
· 用于访问控制机制的子区域(例如信号量、轻量级锁、共享和排他锁等)。
· 各种后台进程使用的子区域,例如checkpointer和autovacuum。
· 用于事务处理的子区域,例如保存点与两阶段提交(2PC)。