↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

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

百科 / 配置参数 / 运行时统计数据

CONFIGURATION PARAMETER运行时统计数据 / 累积查询和索引统计

track_cost_delay_timing

启用基于代价的清理延迟计时(参见第 19.10.2 节)。

Collects timing statistics for cost-based vacuum delay.

布尔 会话(超级用户) 引入 18 现存至 20 devel 0 次默认值变更

类型
布尔bool
上下文
会话(超级用户)超级用户可在会话内用 SET 修改
默认值
off
引入版本
18
状态
现存

PostgreSQL 18.7 手册 官方文档 引入提交 bb8dff9995

版本轨迹

PostgreSQL 18 新增此参数。

默认值变迁

off 18 – 19

已记录的默认值在 PostgreSQL 18–19 之间未变。带单位的取值换算成了可读形式,原始的 boot_val 与单位写在悬浮提示里。

手册说明

PostgreSQL 18.7 手册 · 19.9 运行时统计数据 本站手册 官方原文

启用基于代价的清理延迟计时(参见第 19.10.2 节)。默认情况下该参数关闭,因为它需要反复查询操作系统当前时间,在某些平台上可能带来显著开销。你可以使用 pg_test_timing 工具来衡量系统上的计时开销。基于代价的清理延迟计时信息会显示在 pg_stat_progress_vacuum、pg_stat_progress_analyze 中,也会显示在带有 VERBOSE 选项的 VACUUM 和 ANALYZE 输出中,并且当设置了 log_autovacuum_min_duration 时,自动清理进程还会为自动清理和自动分析记录这些信息。只有超级用户和具有适当 SET 权限的用户才能更改此设置。

机制详解

track_cost_delay_timing 测量 VACUUM 与 ANALYZE 因成本限速实际休眠的时间,并出现在进度视图、详细命令输出与符合条件的 autovacuum 日志中。

收集会反复读取操作系统时钟,开销依平台而异。它不会启用 vacuum delay,也不会改变 vacuum_cost_* 策略。

该指标用于区分实际工作与有意节流。广泛启用前可用 pg_test_timing 测量读取时钟的开销。其 superuser 上下文允许获授权会话修改,无需重启服务器。

调优建议

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

  • OLTP在线事务处理

    需要区分 VACUUM/ANALYZE 实际工作与有意 cost-delay 休眠时启用。用 pg_test_timing 和 autovacuum 负载测时钟读取开销;它是布尔值,不设置大小,也不会自行启用成本延迟。

  • OLAP分析与批处理

    长维护与分析工作重叠、需要量化节流时间时有用。应把报告的延迟时间与维护总时长、前台延迟一起比较,并且只有运维真正使用该证据时才长期开启。

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

    除非需要 vacuum-delay 诊断且平台时钟读取足够便宜,否则保持 off。启用本身不改变维护节流策略;vacuum_cost_* 参数仍然独立。

常见问题

  • 误以为该开关会启用成本型 vacuum delay,而不是只计时已有延迟。
  • 不使用 pg_test_timing 测量,就忽略平台相关的时钟读取开销。
  • 没有启用相关进度、verbose 或 autovacuum 日志输出,却寻找该指标。
  • 把布尔值当成时长或缓冲区尺寸参数。

演化历史

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

  1. PostgreSQL 18 ← 17 新增此参数

    PostgreSQL 18 起可用

逐版本快照

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

版本 默认值单位上下文类型最小值最大值枚举值
18 off — 会话(超级用户) 布尔 — — —
19 off — 会话(超级用户) 布尔 — — —
20 — — — 布尔 — — —

参考资料

同类参数

参数 类型 上下文 默认值 版本变动 最近变更
Statistics 运行时统计数据 8 个 ↗
累积查询和索引统计 8
stats_fetch_consistency 枚举 会话 cache —
确定在事务中多次访问累积统计信息时的行为。 现存
track_activities 布尔 会话(超级用户) on —
启用对每个会话当前执行命令的信息收集,包括其标识符和命令开始执行的时间。 现存
track_activity_query_size 整数 重启生效 1 KiB 132 次
为每个活动会话指定存储当前执行命令的文本所预留的内存量,它们被用于 pg_stat_activity.query 字段。 现存
track_cost_delay_timing 布尔 会话(超级用户) off —
启用基于代价的清理延迟计时(参见第 19.10.2 节)。 现存
track_counts 布尔 会话(超级用户) on —
启用对数据库活动的统计信息收集。 现存
track_functions 枚举 会话(超级用户) none —
启用函数调用次数和耗时的跟踪。 现存
track_io_timing 布尔 会话(超级用户) off —
启用数据库 I/O 等待的计时。 现存
track_wal_io_timing 布尔 会话(超级用户) off —
启用 WAL I/O 等待的计时。 现存