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

When and why should i trigger pg_stat_reset()?

我正在尝试了解如何监控和调整 postgresql 性能。我开始探索 tables pg_stat_all_tablespg_stat_statements 以收集有关活动元组、死元组、上次自动清理时间等的信息。有一些关于 n_live_tuples 的有用信息(在 table) 和 n_dead_tup util i 运行 pg_stat_reset 查询中接近实际行数。之后我得到了一些奇怪的结果——n_live_tupn_dead_tup 少。我找不到任何 articles/docs 关于我应该 运行 pg_stat_reset 查询的原因和时间(某些用例)。有人可以向我解释一下或提供一些有用的资源吗?

偶尔 运行 pg_stat_reset() 是可以的,比如每个月一次,以公平地 up-to-date 了解数据库中正在发生的事情。

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

后手动 VACUUMANALYZE 数据库

pg_stat_statements_reset() 没有这样的问题,所以 运行 随你喜欢。

最好的办法是拥有一个监控软件,定期检查统计值并为您提供开发(与以前的区别 运行)。这样您就不必重新设置统计信息,并且仍然可以很好地了解正在发生的事情。