pg_stat_get_backend_io() 是一个系统函数,用于返回指定后端的 I/O 统计信息。
pg_stat_get_backend_io() 在 PostgreSQL 18 中添加。
用法
pg_stat_get_backend_io ( integer ) →
setof record (
OUTbackend_typetext,
OUTobjecttext,
OUTcontexttext,
OUTreadsbigint,
OUTread_timedouble precision,
OUTwritesbigint,
OUTwrite_timedouble precision,
OUTwritebacksbigint,
OUTwriteback_timedouble precision,
OUTextendsbigint,
OUTextend_timedouble precision,
OUTop_bytesbigint,
OUThitsbigint,
OUTevictionsbigint,
OUTreusesbigint,
OUTfsyncsbigint,
OUTfsync_timedouble precision,
OUTstats_resettimestamp with time zone
)
返回结果集中的字段与 pg_stat_io 视图中的字段相同。
请注意,以下类型的后端不返回统计信息,因为每种类型只有一个,并且可以通过 pg_stat_io 检索。
startup process检查点写入器background writerautovacuum launcher
可以使用 pg_stat_reset_backend_stats() 重置单个后端的统计信息。
变更历史
- PostgreSQL 18
- 添加(commit 9aea73fc)
示例
pg_stat_get_backend_io() 的基本用法示例
postgres=# SELECT *
FROM pg_stat_get_backend_io( pg_backend_pid() )
WHERE backend_type = 'client backend'
AND object = 'relation'
AND context = 'normal';
-[ RECORD 1 ]--+---------------
backend_type | client backend
object | relation
context | normal
reads | 122
read_time | 0
writes | 0
write_time | 0
writebacks | 0
writeback_time | 0
extends | 49
extend_time | 0
op_bytes | 8192
hits | 11049
evictions | 0
reuses |
fsyncs | 0
fsync_time | 0
stats_reset |
如果提供不存在的后端 ID,则返回一个空结果集。
postgres=# SELECT * FROM pg_stat_get_backend_io(999); (0 rows)
参考资料
- PostgreSQL 文档: 其他统计信息函数
有用链接
- Postgres 后端统计信息(第一部分):I/O 统计信息 - 2025 年 1 月 Bertrand Drouvot 的博客文章
