首页 > 解决方案 > 查询 pg_stat_progress_vacuum 上显示的统计信息

问题描述

我试图了解以下参数的含义:max_dead_tuples/num_dead_tuplespg_stat_progress_vacuum视图上。

从 Postgres 文档中:

max_dead_tuples bigint 在需要执行索引真空周期之前,我们可以存储的死元组的数量,基于maintenance_work_mem.

num_dead_tuples bigint 自上次索引真空循环以来收集的死元组数。

maintenance_work_mem这是否意味着每个分配都会更改此值?我尝试为此参数设置不同的值,并且数字max_dead_tuples增加到 178956970 并且没有进一步移动。即使我减少maintenance_work_mem这个计数器保持不变。为什么呢?这两个参数说明什么?

编辑:

注意到当我使用 select 重置统计信息时pg_stat_reset();更改后maintenance_work_mem,我在max_dead_tuples. 但我不明白为什么价值观不一致?

请指教。

标签: postgresqlpsqlvacuum

解决方案


VACUUM收益如下:

  1. 它扫描表,直到找到尽可能多的死元组autovacuum_work_mem(默认为maintenance_work_mem)。max_dead_tuples是 PostgreSQL 估计有多少元组适合autovacuum_work_mem.

  2. 它扫描所有索引并删除指向那些死元组的条目。

重复这两个步骤,直到处理完整个表。num_dead_tuples是在当前迭代中已经找到的死元组的数量。

据我所知,改变maintenance_work_mem不会影响已经运行的VACUUM,但我可能错了。


推荐阅读