三、架构与进程
PostgreSQL 采用多进程架构:主进程(通常称为 postmaster)监听连接并创建后端进程(backend),后端完成客户端认证和语句执行。后台辅助进程承担检查点、缓冲区写出、日志写出及维护工作。理解这些职责与内存边界,是定位连接、内存和输入输出(Input/Output,I/O)问题的基础。
知识结构
图中展示资源关系;数据页与日志的持久化必须遵守 WAL(Write-Ahead Logging,预写日志)规则,具体顺序见第六章。提交时后端也可能参与日志刷盘,不能把所有日志写出都归给 WAL writer。
本章目录
学习目标
- 说清 postmaster/backend/后台进程各自职责与协作
- 理解"每连接一进程"模型对连接数与内存的含义(为何需连接池)
- 区分共享内存与每会话内存,理解
work_mem的并发放大效应
学习检查
| 观察对象 | 应能解释的问题 |
|---|---|
pg_stat_activity 的 backend_type、state 与等待事件 | 哪些是客户端后端、哪些是后台进程?连接数与活跃查询数为何不同? |
shared_buffers 与 work_mem | 哪部分由进程共享,哪部分会随执行节点、并行工作进程和活跃查询放大? |
effective_cache_size | 为什么修改优化器的缓存估计不会直接分配内存? |
work_mem 是部分执行操作的预算,并非每个连接预分配一份,也不是整条查询的总内存上限。容量估算还需考虑哈希操作、并行执行、维护任务和操作系统缓存,详见内存结构。
依赖与前置
- 前置:二、安装、部署与配置。
- 下一章:四、存储、页与元组。
- 后续深入:六、WAL 与恢复、九、优化器与执行计划。
