【问题标题】:How to setup Autovacuum monitoring for PostgreSql RDS instances如何为 PostgreSql RDS 实例设置 Autovacuum 监控
【发布时间】:2020-05-04 07:35:24
【问题描述】:

我需要为 RDS 实例设置 Autovacuum 监控。需要确保 Autovacuuming 在特定于表的 Autovacuuming 上运行良好。有什么完美的方法来设置监控。所有参数都应该是监控的一部分。

谢谢。

【问题讨论】:

    标签: postgresql amazon-web-services amazon-rds postgresql-9.1 autovacuum


    【解决方案1】:

    这是一个很好的查询来确定 autovacuum 是否过期:

    SELECT t.oid::regclass AS tablename,
           s.n_dead_tup AS dead_tuples,
           t.reltuples AS live_tuples,
           GREATEST(s.n_dead_tup::float8 - 50.0, 0) / t.reltuples AS dead_ratio
    FROM pg_stat_all_tables AS s
       JOIN pg_namespace AS n
          ON s.schemaname = n.nspname
       JOIN pg_class AS t
          ON t.relname = s.relname
             AND t.relnamespace = n.oid
    WHERE t.reltuples <> 0
    ORDER BY dead_ratio DESC;
    

    如果最后一个数字明显高于 0.2(并且您没有更改 autovacuum 参数),则有问题。

    衡量 autovacuum 运行的频率并不重要,因为它取决于表的利用率,需要 autvacuum 的频率。

    【讨论】:

      【解决方案2】:

      有 2 个参数决定何时触发 autovacuum 过程

      • autovacuum_vacuum_threshold • autovacuum_vacuum_scale_factor

      真空阈值定义为: 真空阈值 = 真空基础阈值 + 真空比例因子 * 元组数

      其中真空基阈值为 autovacuum_vacuum_threshold,真空缩放因子为 autovacuum_vacuum_scale_factor,元组数为 pg_class.reltuples。

      “autovacuum_vacuum_threshold”(整数)指定在任何一个表中触发 VACUUM 所需的更新或删除元组的最小数量。默认值为 50 个元组。

      “autovacuum_analyze_scale_factor”指定在决定是否触发 ANALYZE 时添加到 autovacuum_analyze_threshold 的表大小的一部分。默认值为 0.1(表大小的 10%)。

      让我们想象一个场景,您没有设置上述两个参数并且它们使用默认值。现在,例如,如果您有一个包含一千万条记录的表,其中包含一万个死元组。这仍然不会触发 autovacuum,因为根据上面的公式,vacuum 阈值将等于 (50+10% of 一千万),大约是 100 万个死元组。

      因此,为了使 autovacuum 更加激进,您可以在 table 级别相应地设置上述两个参数,这样可以降低阈值,从而更快地触发 autovacuum。

      有关 Autovacuum Tuning 基础知识的更多信息,请参阅以下文档链接: o https://www.2ndquadrant.com/en/blog/autovacuum-tuning-basics/ o https://aws.amazon.com/blogs/database/a-case-study-of-tuning-autovacuum-in-amazon-rds-for-postgresql/ o https://www.postgresql.org/docs/9.5/routine-vacuuming.html o https://www.postgresql.org/docs/9.5/runtime-config-autovacuum.html#GUC-AUTOVACUUM-VACUUM-SCALE-FACTOR ohttps://www.postgresql.org/docs/9.5/runtime-config-autovacuum.html#GUC-AUTOVACUUM-VACUUM-THRESHOLD

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-01-27
        • 1970-01-01
        • 2013-02-18
        • 2017-09-08
        • 2021-06-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多