CONFIGURATION PARAMETER运行时统计数据 / 累积查询和索引统计
track_io_timing
收集数据库 I/O 等待计时。
Collects timing statistics for database I/O activity.
布尔 会话(超级用户) 引入 9.2 现存至 20 devel 0 次默认值变更
- 类型
- 布尔bool
- 上下文
- 会话(超级用户)超级用户可在会话内用 SET 修改
- 默认值
off- 引入版本
- 9.2
- 状态
- 现存
版本轨迹
相对 PostgreSQL 17 无变化。
默认值变迁
默认值自 PostgreSQL 9.2 起没有变过。带单位的取值换算成了可读形式,原始的 boot_val 与单位写在悬浮提示里。
手册说明
启用数据库I/O调用的计时。 默认情况下,此参数处于关闭状态,因为它将重复查询操作系统的当前时间,这可能会在某些平台上造成显著的开销。 您可以使用pg_test_timing工具来测量系统上计时的开销。 I/O计时信息显示在 pg_stat_database中,在EXPLAIN的输出中,当使用BUFFERS选项时,在VACUUM的输出中,当使用VERBOSE选项时,由autovacuum执行自动清理和自动分析时,当设置了log_autovacuum_min_duration时,以及由pg_stat_statements。 只有超级用户和具有适当SET权限的用户才能更改此设置。
机制详解
track_io_timing 测量 WAL 对象以外的数据库 I/O 等待时间,并填充 pg_stat_database、pg_stat_io、pg_stat_get_backend_io()、带 BUFFERS 的 EXPLAIN、维护输出与相关扩展。
该设置会反复读取操作系统时钟,开销依平台而异,可用 pg_test_timing 测量;记录的是等待经过时间,不是纯设备服务时间。
WAL I/O 由 track_wal_io_timing 单独控制。启用计时只增加可观测性,不会让 I/O 异步化,也不会改变规划成本。其 superuser 上下文允许获授权会话修改,无需重启服务器。
调优建议
按典型负载给出的取值思路,不是放之四海皆准的配方:实际取值要看数据量、并发度与硬件。
-
OLTP在线事务处理
pg_stat_io、带 BUFFERS 的 EXPLAIN 或事故分析需要数据库 I/O 等待时间时启用。用 pg_test_timing 与峰值语句速率测时钟开销;
-
OLAP分析与批处理
长扫描与落盘会让关系和临时文件计时很有价值。只有这些计数真正用于诊断时才长期开启,并比较执行开销,区分经过等待与纯设备服务时间。
-
小规格低配实例与开发机
只有平台时钟读取成本可接受且指标有人使用时才用 on。该布尔值没有“保守数值大小”;off 只移除计时,不会移除 I/O。
常见问题
- 把等待经过时间当成不含排队和调度影响的纯设备服务时间。
- 期待该开关让 I/O 异步化或改变规划器成本估计。
- 误以为它包含 WAL 计时;WAL 由 track_wal_io_timing 控制。
- 没有在实际平台测量时钟读取开销就启用。
演化历史
相邻两个大版本之间的差异,新的在前。版本号链到该版的快照。
-
PostgreSQL 20 ← 19 沿用 19
事实沿用 19
-
PostgreSQL 15 ← 14 仅描述更新
分类
Statistics / Query and Index Statistics CollectorStatistics / Cumulative Query and Index Statistics -
PostgreSQL 9.2 ← 9.1 新增此参数
PostgreSQL 9.2 起可用
逐版本快照
每个收录版本里的 7 项事实,与上一个存在的版本不同的格子带底色。版本号链到该版。
| 版本 | 默认值 | 单位 | 上下文 | 类型 | 最小值 | 最大值 | 枚举值 |
|---|---|---|---|---|---|---|---|
| 9.2 | off |
— |
会话(超级用户) |
布尔 |
— |
— |
— |
| 9.3 | off |
— |
会话(超级用户) |
布尔 |
— |
— |
— |
| 9.4 | off |
— |
会话(超级用户) |
布尔 |
— |
— |
— |
| 9.5 | off |
— |
会话(超级用户) |
布尔 |
— |
— |
— |
| 9.6 | off |
— |
会话(超级用户) |
布尔 |
— |
— |
— |
| 10 | off |
— |
会话(超级用户) |
布尔 |
— |
— |
— |
| 11 | off |
— |
会话(超级用户) |
布尔 |
— |
— |
— |
| 12 | off |
— |
会话(超级用户) |
布尔 |
— |
— |
— |
| 13 | off |
— |
会话(超级用户) |
布尔 |
— |
— |
— |
| 14 | off |
— |
会话(超级用户) |
布尔 |
— |
— |
— |
| 15 | off |
— |
会话(超级用户) |
布尔 |
— |
— |
— |
| 16 | off |
— |
会话(超级用户) |
布尔 |
— |
— |
— |
| 17 | off |
— |
会话(超级用户) |
布尔 |
— |
— |
— |
| 18 | off |
— |
会话(超级用户) |
布尔 |
— |
— |
— |
| 19 | off |
— |
会话(超级用户) |
布尔 |
— |
— |
— |
| 20 沿用 | off |
— |
会话(超级用户) |
布尔 |
— |
— |
— |
参考资料
同类参数
| 参数 | 类型 | 上下文 | 默认值 | 版本变动 | 最近变更 |
|---|---|---|---|---|---|
| 累积查询和索引统计 8 | |||||
stats_fetch_consistency |
枚举 | 会话 | cache |
— | |
| 设置读取累计统计信息时的一致性方式。 | 现存 | ||||
track_activities |
布尔 | 会话(超级用户) | on |
— | |
| 收集会话当前执行命令的信息。 | 现存 | ||||
track_activity_query_size |
整数 | 重启生效 | 1 KiB |
132 次 | |
| 设置 pg_stat_activity.query 预留的字节数。 | 现存 | ||||
track_cost_delay_timing |
布尔 | 会话(超级用户) | off |
— | |
| 收集基于成本的 vacuum 延迟计时。 | 现存 | ||||
track_counts |
布尔 | 会话(超级用户) | on |
— | |
| 收集数据库活动累计统计。 | 现存 | ||||
track_functions |
枚举 | 会话(超级用户) | none |
— | |
| 收集函数调用次数与耗时统计。 | 现存 | ||||
track_io_timing |
布尔 | 会话(超级用户) | off |
— | |
| 收集数据库 I/O 等待计时。 | 现存 | ||||
track_wal_io_timing |
布尔 | 会话(超级用户) | off |
— | |
| 收集 WAL I/O 等待计时。 | 现存 | ||||