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