pg_stat_get_backend_io()
是一个系统函数,用于返回指定后端的 I/O 统计信息。
pg_stat_get_backend_io()
在 PostgreSQL 18 中添加。
用法
pg_stat_get_backend_io ( integer ) →
setof record (
OUTbackend_type
text,
OUTobject
text,
OUTcontext
text,
OUTreads
bigint,
OUTread_time
double precision,
OUTwrites
bigint,
OUTwrite_time
double precision,
OUTwritebacks
bigint,
OUTwriteback_time
double precision,
OUTextends
bigint,
OUTextend_time
double precision,
OUTop_bytes
bigint,
OUThits
bigint,
OUTevictions
bigint,
OUTreuses
bigint,
OUTfsyncs
bigint,
OUTfsync_time
double precision,
OUTstats_reset
timestamp with time zone
)
返回结果集中的字段与 pg_stat_io
视图中的字段相同。
请注意,以下类型的后端不返回统计信息,因为每种类型只有一个,并且可以通过 pg_stat_io
检索。
startup process
检查点写入器
background writer
autovacuum 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 的博客文章