track_io_timing
是一个 配置参数,用于控制是否跟踪数据库 I/O 调用的时间。
track_io_timing
在 PostgreSQL 9.2 中添加。
默认值
track_io_timing
的默认值为:off
。
用法
如果启用,则会在以下上下文中显示 I/O 时间信息
track_io_timing
默认情况下是禁用的,因为它会重复查询操作系统以获取当前时间。这可能会在某些平台上导致明显的开销;contrib 模块 pg_test_timing
可以帮助确定是否出现这种情况。
EXPLAIN (BUFFERS, ANALYZE)
如果使用 BUFFERS, ANALYZE
选项组合执行 EXPLAIN
,则任何发生的 I/O 都将用注释“I/O Timings
”标记。
pg_stat_database
以下列将更新为总 I/O 时间
blk_read_time
blk_write_time
pg_stat_statements
以下列将更新为总 I/O 时间
blk_read_time
blk_write_time
按 PostgreSQL 版本详细说明
track_io_timing (PostgreSQL 18)
设置 |
off |
单位 |
|
类别 |
统计/累积查询和索引统计 |
简短描述 |
收集数据库 I/O 活动的时间统计信息。 |
额外描述 |
|
上下文 |
超级用户 |
变量类型 |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
等待重启 |
false |
文档:track_io_timing
track_io_timing (PostgreSQL 17)
设置 |
off |
单位 |
|
类别 |
统计/累积查询和索引统计 |
简短描述 |
收集数据库 I/O 活动的时间统计信息。 |
额外描述 |
|
上下文 |
超级用户 |
变量类型 |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
等待重启 |
false |
文档:track_io_timing
track_io_timing (PostgreSQL 16)
设置 |
off |
单位 |
|
类别 |
统计/累积查询和索引统计 |
简短描述 |
收集数据库 I/O 活动的时间统计信息。 |
额外描述 |
|
上下文 |
超级用户 |
变量类型 |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
等待重启 |
false |
文档:track_io_timing
track_io_timing (PostgreSQL 15)
设置 |
off |
单位 |
|
类别 |
统计/累积查询和索引统计 |
简短描述 |
收集数据库 I/O 活动的时间统计信息。 |
额外描述 |
|
上下文 |
超级用户 |
变量类型 |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
等待重启 |
false |
文档:track_io_timing
track_io_timing (PostgreSQL 14)
设置 |
off |
单位 |
|
类别 |
统计/查询和索引统计收集器 |
简短描述 |
收集数据库 I/O 活动的时间统计信息。 |
额外描述 |
|
上下文 |
超级用户 |
变量类型 |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
等待重启 |
false |
文档:track_io_timing
track_io_timing (PostgreSQL 13)
设置 |
off |
单位 |
|
类别 |
统计/查询和索引统计收集器 |
简短描述 |
收集数据库 I/O 活动的时间统计信息。 |
额外描述 |
|
上下文 |
超级用户 |
变量类型 |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
等待重启 |
false |
文档:track_io_timing
track_io_timing (PostgreSQL 12)
设置 |
off |
单位 |
|
类别 |
统计/查询和索引统计收集器 |
简短描述 |
收集数据库 I/O 活动的时间统计信息。 |
额外描述 |
|
上下文 |
超级用户 |
变量类型 |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
等待重启 |
false |
文档:track_io_timing
track_io_timing (PostgreSQL 11)
设置 |
off |
单位 |
|
类别 |
统计/查询和索引统计收集器 |
简短描述 |
收集数据库 I/O 活动的时间统计信息。 |
额外描述 |
|
上下文 |
超级用户 |
变量类型 |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
等待重启 |
false |
文档:track_io_timing
track_io_timing (PostgreSQL 10)
设置 |
off |
单位 |
|
类别 |
统计/查询和索引统计收集器 |
简短描述 |
收集数据库 I/O 活动的时间统计信息。 |
额外描述 |
|
上下文 |
超级用户 |
变量类型 |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
等待重启 |
false |
文档:track_io_timing
track_io_timing (PostgreSQL 9.6)
设置 |
off |
单位 |
|
类别 |
统计/查询和索引统计收集器 |
简短描述 |
收集数据库 I/O 活动的时间统计信息。 |
额外描述 |
|
上下文 |
超级用户 |
变量类型 |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
等待重启 |
false |
文档:track_io_timing
track_io_timing (PostgreSQL 9.5)
设置 |
off |
单位 |
|
类别 |
统计/查询和索引统计收集器 |
简短描述 |
收集数据库 I/O 活动的时间统计信息。 |
额外描述 |
|
上下文 |
超级用户 |
变量类型 |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
等待重启 |
false |
文档:track_io_timing
track_io_timing (PostgreSQL 9.4)
设置 |
off |
单位 |
|
类别 |
统计/查询和索引统计收集器 |
简短描述 |
收集数据库 I/O 活动的时间统计信息。 |
额外描述 |
|
上下文 |
超级用户 |
变量类型 |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
文档:track_io_timing
track_io_timing (PostgreSQL 9.3)
设置 |
off |
单位 |
|
类别 |
统计/查询和索引统计收集器 |
简短描述 |
收集数据库 I/O 活动的时间统计信息。 |
额外描述 |
|
上下文 |
超级用户 |
变量类型 |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
文档:track_io_timing
track_io_timing (PostgreSQL 9.2)
设置 |
off |
单位 |
|
类别 |
统计/查询和索引统计收集器 |
简短描述 |
收集数据库 I/O 活动的时间统计信息。 |
额外描述 |
|
上下文 |
超级用户 |
变量类型 |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
off |
重置值 |
off |
源文件 |
|
源代码行号 |
|
文档:track_io_timing
更改历史
示例
将 track_io_timing
与 EXPLAIN
一起使用
postgres=# SET track_io_timing = ON;
SET
postgres=# EXPLAIN (BUFFERS, ANALYZE) SELECT COUNT(*) FROM object;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------
Aggregate (cost=87.40..87.41 rows=1 width=8) (actual time=48.855..48.874 rows=1 loops=1)
Buffers: shared read=30
I/O Timings: read=1.411
-> Seq Scan on object (cost=0.00..75.92 rows=4592 width=0) (actual time=0.338..25.602 rows=4477 loops=1)
Buffers: shared read=30
I/O Timings: read=1.411
Planning Time: 5.024 ms
Execution Time: 49.186 ms
(8 rows)
请注意,在执行上述查询后,数据现在将被缓存,重新执行将不会涉及 I/O,并且 EXPLAIN
输出中不会包含“I/O Timings
”值。
postgres=# EXPLAIN (BUFFERS, ANALYZE) SELECT COUNT(*) FROM object;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------
Aggregate (cost=87.40..87.41 rows=1 width=8) (actual time=53.178..53.196 rows=1 loops=1)
Buffers: shared hit=30
-> Seq Scan on object (cost=0.00..75.92 rows=4592 width=0) (actual time=0.043..26.705 rows=4477 loops=1)
Buffers: shared hit=30
Planning Time: 0.174 ms
Execution Time: 53.295 ms
(6 rows)
尝试以非超级用户身份设置 track_io_timing
postgres=*> SET track_io_timing TO on;
ERROR: permission denied to set parameter "track_io_timing"