后台写进程
是一个独立的服务器进程,负责将“脏”(新的或修改的)缓冲区写入磁盘数据文件,以减少常规后端上的负载。
后台写进程
是在 PostgreSQL 8.0 中添加的。
直到 PostgreSQL 9.2 它还负责处理 检查点。
配置
目前以下配置项控制后台写进程的行为
bgwriter_delay
(整数
)bgwriter_lru_maxpages
(整数
)bgwriter_lru_multiplier
(浮点数
)bgwriter_flush_after
(整数
)
将 bgwriter_lru_maxpages
设置为零实际上会禁用后台写进程。
有关更多详细信息,请参阅 后台写进程配置文档。
统计
后台写进程本身写入的缓冲区数量记录在 pg_stat_bgwriter 视图的 "buffers_clean" 列中。
源代码
主要的后台写进程代码:src/backend/postmaster/bgwriter.c
实际的“繁重工作”是在 src/backend/storage/buffer/bufmgr.c 中完成的,特别是函数 BgBufferSync()
。
更改历史
正在开发中
- PostgreSQL 15
- 也将在崩溃恢复期间运行(提交 7ff23c6d)
- PostgreSQL 8.0
- 添加(初始提交 cfeca621)
参考
- PostgreSQL 文档: 后台写进程
有用链接
- PostgreSQL 后台写进程 - 2019年7月 Postgres 教程文章