【问题标题】:When and why should i trigger pg_stat_reset()?何时以及为什么要触发 pg_stat_reset()?
【发布时间】:2020-10-27 13:45:18
【问题描述】:

我正在尝试了解如何监控和调整 postgresql 性能。我从探索表pg_stat_all_tablespg_stat_statements 开始,以收集有关活动元组、死元组、上次自动清空时间等的信息。有一些关于n_live_tuples 的有用信息(接近表中的真实行数)和@987654324 @util 我运行pg_stat_reset 查询。之后我得到了一些奇怪的结果——n_live_tupn_dead_tup 少。我找不到任何关于我为什么以及何时(某些用例)应该运行pg_stat_reset 查询的文章/文档。有人可以解释一下或提供一些有用的资源吗?

【问题讨论】:

  • n_live_tup 在第一次真空/自动真空发生之前无法正确计算。之后统计数据看起来像我预期的那样。

标签: postgresql performance vacuum


【解决方案1】:

偶尔运行pg_stat_reset() 是可以的,比如每月一次,以获得关于数据库中正在发生的事情的最新视图。

但是不要太频繁地这样做,因为它有一个缺点:系统相关的 autovacuum 过程依赖于这些统计数据,所以如果你这样做,你会错过几次 autovacuum(和 autoanalyze)运行。这在您的数据库中可能是也可能不是问题,但无论如何我不会经常这样做。如果可以,请在调用pg_stat_reset() 后手动VACUUMANALYZE 数据库。

pg_stat_statements_reset() 没有这样的问题,所以请尽可能多地运行它。

对您来说最好的办法是拥有一个监控软件,该软件可以定期检查统计数据的值并为您提供发展情况(与上一次运行的差异)。这样您就不必重新设置统计信息,并且仍然可以很好地了解正在发生的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    • 2013-12-15
    • 2016-10-26
    • 1970-01-01
    • 2011-12-08
    • 1970-01-01
    相关资源
    最近更新 更多