内容提要
PostgreSQL 16 引入了 pg_stat_io,这是一个提供 I/O 行为洞察的系统视图。它区分临时和永久关系以及存储类型。建议开启 track_io_timing 以跟踪性能问题。
关键要点
-
PostgreSQL 16 引入了 pg_stat_io 系统视图,提供 I/O 行为的深刻洞察。
-
pg_stat_io 视图帮助用户调试和评估性能相关问题。
-
pg_stat_io 包含多个重要列,如 backend_type、object、context、reads、writes 等。
-
backend_type 表示信息来源的后端类型,PostgreSQL 16 目前有 9 种后端类型。
-
object 列区分临时关系和永久关系,永久关系包括表和索引。
-
context 列表示 I/O 操作的上下文,包括 normal、vacuum、bulkread 和 bulkwrite。
-
reads 和 writes 列表示 I/O 操作的数量,单位为操作次数。
-
read_time 和 write_time 列用于测量 I/O 操作所花费的时间,需开启 track_io_timing。
-
writebacks 列表示从内核向操作系统发送数据的请求数量。
-
extends 列表示 PostgreSQL 数据文件的增长情况,extend_time 列测量增长所需时间。
-
op_bytes 列表示 I/O 操作的块大小,通常为 8k。
-
hits 列监控缓存命中次数,evictions 列表示从缓存中移除的块数量。
-
reuses 列表示在 I/O 操作中重用的缓冲区数量。
-
fsyncs 和 fsync_time 列用于区分数据写入磁盘的情况。
-
stats_reset 列表示数据累积的时间和统计信息的重置时间。
-
pg_stat_io 提供了对数据库引擎内部操作的重要信息,帮助识别性能问题。