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 新增此参数。
默认值变迁
已记录的默认值在 PostgreSQL 18–19 之间未变。带单位的取值换算成了可读形式,原始的 boot_val 与单位写在悬浮提示里。
手册说明
启用基于代价的清理延迟计时(参见第 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 日志输出,却寻找该指标。
- 把布尔值当成时长或缓冲区尺寸参数。
演化历史
相邻两个大版本之间的差异,新的在前。版本号链到该版的快照。
-
PostgreSQL 18 ← 17 新增此参数
PostgreSQL 18 起可用
逐版本快照
每个收录版本里的 7 项事实,与上一个存在的版本不同的格子带底色。版本号链到该版。
参考资料
同类参数
| 参数 | 类型 | 上下文 | 默认值 | 版本变动 | 最近变更 |
|---|---|---|---|---|---|
| 累积查询和索引统计 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 等待的计时。 | 现存 | ||||