【问题标题】:Query on statistics shown on pg_stat_progress_vacuum查询 pg_stat_progress_vacuum 上显示的统计信息
【发布时间】:2020-06-11 16:45:30
【问题描述】:

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

来自 Postgres 文档:

max_dead_tuplesbigint 在需要执行索引清理周期之前我们可以存储的死元组的数量,基于maintenance_work_mem

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

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

编辑:

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

请指教。

【问题讨论】:

    标签: postgresql psql vacuum


    【解决方案1】:

    VACUUM 是这样进行的:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2010-09-06
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 2013-11-12
      • 1970-01-01
      • 2023-03-25
      • 2011-05-08
      • 2011-09-16
      相关资源
      最近更新 更多