Skip to content

三、架构与进程 ​

PostgreSQL 采用多进程架构:主进程(通常称为 postmaster)监听连接并创建后端进程(backend),后端完成客户端认证和语句执行。后台辅助进程承担检查点、缓冲区写出、日志写出及维护工作。理解这些职责与内存边界,是定位连接、内存和输入输出(Input/Output,I/O)问题的基础。

知识结构 ​

图中展示资源关系;数据页与日志的持久化必须遵守 WAL(Write-Ahead Logging,预写日志)规则,具体顺序见第六章。提交时后端也可能参与日志刷盘,不能把所有日志写出都归给 WAL writer。

本章目录 ​

  1. 进程模型:postmaster、backend 与后台进程
  2. 内存结构:Shared Buffers、WAL Buffers 与 work_mem

学习目标 ​

  • 说清 postmaster/backend/后台进程各自职责与协作
  • 理解"每连接一进程"模型对连接数与内存的含义(为何需连接池)
  • 区分共享内存与每会话内存,理解 work_mem 的并发放大效应

学习检查 ​

观察对象应能解释的问题
pg_stat_activity 的 backend_type、state 与等待事件哪些是客户端后端、哪些是后台进程?连接数与活跃查询数为何不同?
shared_buffers 与 work_mem哪部分由进程共享,哪部分会随执行节点、并行工作进程和活跃查询放大?
effective_cache_size为什么修改优化器的缓存估计不会直接分配内存?

work_mem 是部分执行操作的预算,并非每个连接预分配一份,也不是整条查询的总内存上限。容量估算还需考虑哈希操作、并行执行、维护任务和操作系统缓存,详见内存结构。

依赖与前置 ​

相关主题 ​

ICP 备案号待补充 · Gitee 主页