我何时以及为什么应该触发 pg_stat_reset()?

luk*_*hol 2 postgresql performance vacuum

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

Lau*_*lbe 7

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

但不要经常这样做,因为它有一个缺点:系统相关的自动清理过程依赖于这些统计数据,因此如果这样做,您将错过几次自动清理(和自动分析)运行。这可能是也可能不是您的数据库中的问题,但无论如何我不会经常这样做。如果可以的话,在调用后手动VACUUM并ANALYZE数据库pg_stat_reset()。

不存在这样的问题pg_stat_statements_reset(),因此您可以随意运行它。

对您来说最好的事情是拥有一个监控软件,可以定期检查统计值并为您提供进展情况(与之前运行的差异)。这样您就无需重置统计数据,并且仍然可以很好地了解正在发生的情况。