问题描述
我试图了解如何监视和调整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
查询的文章/文档。有人可以向我解释一下还是提供一些有用的资源?
解决方法
可以偶尔运行pg_stat_reset()
(例如每月一次),以获取有关数据库中最新情况的最新视图。
但是不要经常这样做,因为它有一个缺点:与系统相关的自动清理过程依赖于这些统计信息,因此,如果这样做,您将错过几次自动清理(和自动分析)运行。在您的数据库中,这可能是问题,也可能不是问题,但是无论如何我都不会经常这样做。如果可以,请在调用VACUUM
之后手动ANALYZE
和pg_stat_reset()
数据库。
pg_stat_statements_reset()
并没有这样的问题,因此请尽可能多地运行它。
最适合您的是拥有一个监视软件,该软件定期检查统计信息的值并为您提供发展情况(与上次运行有所不同)。这样一来,您就不必重置统计信息,而且仍可以对发生的事情有个很好的了解。