PostgreSQL pg_stat_progress_vacuum 查看 vacuum 进度

PostgreSQL About 2,180 words

说明

pg_stat_progress_vacuum查看的是vacuum的进度,不显示vacuum full的进度。

vacuum full的进度使用pg_stat_progress_cluster查看。

SQL

select * from pg_stat_progress_vacuum;

输出

postgres=# select * from pg_stat_progress_vacuum;
 pid | datid | datname  | relid |     phase     | heap_blks_total | heap_blks_scanned | heap_blks_vacuumed | index_vacuum_count | max_dead_tuples | num_dead_tuples
-----+-------+----------+-------+---------------+-----------------+-------------------+--------------------+--------------------+-----------------+-----------------
 635 |     5 | postgres | 90234 | scanning heap |            3279 |              1008 |                  0 |                  0 |          954189 |               0
(1 row)

含义

列名 类型 描述
pid integer 后端进程的进程 ID
datid oid 后端连接的数据库的 OID
datname name 后端连接的数据库的名称
relid oid 正在进行 VACUUM 操作的表的 OID (引用 pg_class.oid
phase text 当前 VACUUM 操作的阶段,详见下方的 phase 描述
heap_blks_total bigint 表中的堆块总数,该值在扫描开始时报告,稍后添加的块无需访问
heap_blks_scanned bigint 已扫描的堆块数量。由于使用可见性地图优化扫描,有些块会被跳过但仍计入此总数。当扫描完成时该数字等于 heap_blks_total
heap_blks_vacuumed bigint 已清理的堆块数量。除非表没有索引,否则此计数器只在清理堆阶段推进。不包含死元组的块会被跳过,有时计数器会跳跃前进。
index_vacuum_count bigint 完成的索引 VACUUM 周期的数量
max_dead_tuple_bytes bigint 基于 maintenance_work_mem,在需要执行索引 VACUUM 周期之前可以存储的死元组数据量
dead_tuple_bytes bigint 自上次索引 VACUUM 周期以来收集的死元组数据量
num_dead_item_ids bigint 自上次索引 VACUUM 周期以来收集的死项标识符数量
indexes_total bigint 将要被 VACUUM 或清理的索引总数,这个值在清理索引阶段或 VACUUM 索引阶段开始时报告
indexes_processed bigint 已处理的索引数。这个计数器仅在清理索引或 VACUUM 索引阶段推进

phase 状态

phase 含义
initializing VACUUM 正在准备开始扫描堆。这一阶段预计会非常短暂
scanning heap VACUUM 正在扫描堆。如果需要,将修剪和整理每一页,并可能执行冻结活动。可以使用 heap_blks_scanned 列来监控扫描进度
vacuuming indexes VACUUM 正在对索引进行清理。如果表有索引,这个阶段会至少发生一次。在按需对索引进行多次清理后,才会返回继续扫描堆。
vacuuming heap VACUUM 正在对堆进行清理。这与扫描堆不同,并且在每一次索引清理之后发生。如果 heap_blks_scanned 小于 heap_blks_total,系统会在这个阶段后返回继续扫描堆。
cleaning up indexes VACUUM 正在清理索引,这个阶段在堆完全扫描并且所有索引和堆清理完成之后进行。
truncating heap VACUUM 正在截断堆以将空页返回操作系统,这个阶段在索引清理之后进行。
performing final cleanup VACUUM 正在执行最终清理。在这个阶段,VACUUM 会清理空闲空间地图,更新 pg_class 中的统计信息并将统计信息报告给累积统计系统。完成这一阶段后,VACUUM 将结束。

官方文档

https://www.postgresql.org/docs/17/progress-reporting.html#VACUUM-PROGRESS-REPORTING

Views: 30 · Posted: 2025-02-20

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb/LiteNote

扫描下方二维码关注公众号和小程序↓↓↓

扫描下方二维码关注公众号和小程序↓↓↓


Today On History
Browsing Refresh