选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

文档 / 配置参数 / 资源消耗

CONFIGURATION PARAMETER资源消耗 / 后台写入器

bgwriter_delay

设置后台写进程两轮工作之间的休眠时间。

Background writer sleep time between rounds.

整数 重载生效 引入 9.0(基线) 现存至 20 devel 0 次默认值变更

类型
整数integer
上下文
重载生效改配置文件后重载(pg_ctl reload / SIGHUP)即可生效
默认值
200 ms原始值 200 ms
取值范围
10 – 10000
引入版本
9.0(基线)
状态
现存

PostgreSQL 18 手册 官方文档

版本轨迹

相对 PostgreSQL 17 无变化。

默认值变迁

200 ms 9.0 – 20

默认值自 PostgreSQL 9.0 起没有变过。带单位的取值换算成了可读形式,原始的 boot_val 与单位写在悬浮提示里。

手册说明

PostgreSQL 18 手册 · 19.4 资源消耗 本站手册 官方原文

本版译文与 PostgreSQL 12 完全一致,下面就是同一段文字。

指定后台写入器活动轮次之间的延迟。在每个轮次中,写入器都会为一定数量的脏缓冲区发出写操作(可以用下面的参数控制)。 然后它就休眠 bgwriter_delay的时长, 然后重复动作。当缓冲池中没有脏缓冲区时,不管 bgwriter_delay,它都会进入更长的休眠。如果指定值时没有单位,则以毫秒为单位。默认值是 200 毫秒(200ms)。 注意在许多系统上,休眠延迟的有效解析度是 10 毫秒;因此,为bgwriter_delay设置一个 不是 10 的倍数的值与把它设置为下一个更高的 10 的倍数是一样的效果。这个选项只能在服务器命令行上或者在postgresql.conf文件中设置。

机制详解

后台写进程完成一轮、写出选中的共享缓冲区脏页后,会休眠 bgwriter_delay。没有脏页时,无论本值如何,它都可能进入更长休眠。

较短间隔能更快响应缓冲区需求,但会更频繁唤醒进程。有些系统的有效定时精度约为 10 ms,因此更小值或非整十值实际可能向上取整。

每轮考虑的页面数由近期缓冲区分配需求、bgwriter_lru_multiplier 与 bgwriter_lru_maxpages 共同决定;checkpoint 由另一套机制处理。其 SIGHUP 上下文允许通过重载配置生效,无需重启服务器。

调优建议

按典型负载给出的取值思路,不是放之四海皆准的配方:实际取值要看数据量、并发度与硬件。

  • OLTP在线事务处理

    只应结合 bgwriter 与 checkpoint 指标调优 bgwriter_delay。目标是在不过度重复写的前提下减少后端自行写页并平滑延迟;每次只改一个维度。

  • OLAP分析与批处理

    批量写入可能持续触及 bgwriter_delay 限制。应测总写入字节、checkpoint 与存储排队,不能只看前台查询延迟。

  • 小规格低配实例与开发机

    小主机通常需要保守的写平滑。激进 bgwriter_delay 会抢占前台 I/O;除非实测后端自行写页是问题,否则保留默认。

常见问题

  • 修改 bgwriter_delay 时忽略文档单位与配置生效上下文。
  • 只优化孤立基准,却忽略并发后的资源总量。
  • 认为配置值能够保证操作系统或存储层实际行为。
  • 修改后没有重新验证启动、故障转移与负载延迟。

演化历史

相邻两个大版本之间的差异,新的在前。版本号链到该版的快照。

  1. PostgreSQL 20 ← 19 沿用 19

    事实沿用 19

逐版本快照

每个收录版本里的 7 项事实,与上一个存在的版本不同的格子带底色。版本号链到该版。

版本 默认值单位上下文类型最小值最大值枚举值
9.0 200 ms ms 重载生效 整数 10 10000
9.1 200 ms ms 重载生效 整数 10 10000
9.2 200 ms ms 重载生效 整数 10 10000
9.3 200 ms ms 重载生效 整数 10 10000
9.4 200 ms ms 重载生效 整数 10 10000
9.5 200 ms ms 重载生效 整数 10 10000
9.6 200 ms ms 重载生效 整数 10 10000
10 200 ms ms 重载生效 整数 10 10000
11 200 ms ms 重载生效 整数 10 10000
12 200 ms ms 重载生效 整数 10 10000
13 200 ms ms 重载生效 整数 10 10000
14 200 ms ms 重载生效 整数 10 10000
15 200 ms ms 重载生效 整数 10 10000
16 200 ms ms 重载生效 整数 10 10000
17 200 ms ms 重载生效 整数 10 10000
18 200 ms ms 重载生效 整数 10 10000
19 200 ms ms 重载生效 整数 10 10000
20 沿用 200 ms ms 重载生效 整数 10 10000

参考资料

同类参数

参数 类型 上下文 默认值 版本变动 最近变更
Resource Usage 资源消耗 4 个
后台写入器 4
bgwriter_delay 整数 重载生效 200 ms
设置后台写进程两轮工作之间的休眠时间。 现存
bgwriter_flush_after 整数 重载生效 512 KiB (64 × 8kB)
设置后台写进程写出多少页面后请求操作系统下刷。 现存
bgwriter_lru_maxpages 整数 重载生效 100 101 次
设置后台写进程每轮最多刷新的 LRU 页面数。 现存
bgwriter_lru_multiplier 浮点 重载生效 2
设置为预计近期缓冲区需求预留清洁页面的倍数。 现存