track_wal_io_timing
track_wal_io_timing:收集 WAL I/O 等待计时。实测在档范围为 PG14–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 off,context 为 superuser。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。
说明
Fact — 官方简述译文:收集 WAL I/O 等待计时。
身份
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG14 |
| 在档版本 | PG14–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | ff99918c625a — Track total amounts of times spent writing and syncing WAL data to disk. |
| 提交日期 | 2021-03-09 |
| Discussion | 讨论 1 |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG14–19 Beta 3 | off |
— | off |
机制详解
track_wal_io_timing 测量 WAL I/O 等待,并在 pg_stat_io 与 pg_stat_get_backend_io() 的 wal 对象下暴露;它与普通数据库 I/O 计时相互独立。
收集会反复读取操作系统时钟,可能产生依平台而异的开销。pg_test_timing 可测时钟读取成本,负载测试则反映总影响。
它不会改变 wal_sync_method、持久性或 WAL 吞吐。与 track_io_timing 配合可把 WAL 等待与关系/临时文件 I/O 分开。其 superuser 上下文允许获授权会话修改,无需重启服务器。
调优建议
提示
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 分析提交延迟、需要把 WAL write/sync 等待与关系 I/O 分开时启用。测量平台时钟开销,并把计数与 synchronous_commit、wal_sync_method 和存储行为关联。 |
| OLAP | 读密集分析可能很少受益,而批量导入与刷新任务的写阶段可能很有价值。应按真正使用证据的写阶段启用,而不是仅因负载标签是 OLAP。 |
| 小规格 | 除非正在诊断 WAL 延迟且时钟读取便宜,否则保持 off。只有需要同时区分 WAL 与非 WAL 等待时,才与 track_io_timing 配合。 |
Pigsty 取值
以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。
| 模板 | 有效值 | 与上游 boot 比较 | 源表达式 |
|---|---|---|---|
| OLTP | 未修改 | — | — |
| OLAP | 未修改 | — | — |
| CRIT | 未修改 | — | — |
| TINY | 未修改 | — | — |
注意
Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG14–19 Beta 3 未修改;OLAP: PG14–19 Beta 3 未修改;CRIT: PG14–19 Beta 3 未修改;TINY: PG14–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。
常见坑
- 期待 WAL 计时包含 track_io_timing 测量的关系与临时文件 I/O。
- 把 WAL 等待经过时间当成纯设备服务时间。
- 认为该开关会改变持久性、wal_sync_method 或 WAL 吞吐。
- 没有在生产平台测量时钟读取开销就启用。
关联参数
track_io_timing · wal_sync_method · synchronous_commit · track_counts · stats_fetch_consistency