后台写入器是一个独立的服务器进程,负责将“脏”的(新建或修改过的)缓冲区写入磁盘数据文件,以减轻普通后端进程的负载。
后台写入器是在 PostgreSQL 8.0 中添加的。
直到 PostgreSQL 9.2,它还负责处理 检查点。
配置
当前控制后台写入器行为的配置项如下:
bgwriter_delay(integer)bgwriter_lru_maxpages(integer)bgwriter_lru_multiplier(floating point)bgwriter_flush_after(integer)
将 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 Tutorial撰写的文章
