什么时候以及为什么我应该触发pg_stat_reset?

问题描述

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

解决方法

可以偶尔运行pg_stat_reset()(例如每月一次),以获取有关数据库中最新情况的最新视图。

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

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

最适合您的是拥有一个监视软件,该软件定期检查统计信息的值并为您提供发展情况(与上次运行有所不同)。这样一来,您就不必重置统计信息,而且仍可以对发生的事情有个很好的了解。