确保PostgreSQL中的表统计信息是最新的

确保PostgreSQL中的表统计信息是最新的,sql,database,postgresql,database-design,relational-database,Sql,Database,Postgresql,Database Design,Relational Database,我们将得到几个表的行计数估计。我知道要使这些估计更好,统计数字必须是最新的;wiki指出,应该确保“您已经在表上运行了足够多的ANALYZE,以使这些统计信息保持最新” 我们希望某些表最终会被写入或更新得相当频繁(比如说,大约每秒150次是我的大概要求——这对我来说是“相当频繁的”,但我不确定这在现实生活中的DB中如何适用)。计数应该大约每秒发生一次,我要说的是,它们必须返回一个值,该值反映表中更改的行数,具有一定的准确性(即,如果数在几秒钟后没有更改,如果在这段时间内有许多插入,则会很奇怪)

我们将得到几个表的行计数估计。我知道要使这些估计更好,统计数字必须是最新的;wiki指出,应该确保“您已经在表上运行了足够多的
ANALYZE
,以使这些统计信息保持最新”

我们希望某些表最终会被写入或更新得相当频繁(比如说,大约每秒150次是我的大概要求——这对我来说是“相当频繁的”,但我不确定这在现实生活中的DB中如何适用)。计数应该大约每秒发生一次,我要说的是,它们必须返回一个值,该值反映表中更改的行数,具有一定的准确性(即,如果数在几秒钟后没有更改,如果在这段时间内有许多插入,则会很奇怪)

什么是“足够”的好值?是否有某种方法可以自动运行表上的
ANALYZE
?如果需要更多信息,请说出来,我会尽快编辑帖子

多谢各位

应该能够处理您想要做的事情。如果它正在运行,您可以在
postgresql.conf
中调整参数
autovacuum\u analyze\u threshold(integer)
,以满足您的需要

根据:

自动真空\u分析\u阈值(整数)

指定插入、更新或删除的元组的最小数目 需要在任何一个表中触发分析。默认值为50 元组。此参数只能在postgresql.conf文件或 在服务器命令行上。此设置可以为以下情况覆盖: 通过更改存储参数来创建单个表


请记住,这个数字并不能保证它运行的频率,它只是一个最小的阈值。与大多数配置选项一样,最好使用多个值进行一些测试,以在精度和性能之间取得最佳平衡,并确保它满足您的需要。

您可能需要进一步解释您的使用情况。表的修改频率(尤其是插入/删除操作)?您的问题的答案在很大程度上取决于插入或删除行的频率,以及您需要这些统计数据的准确性。@will-不确定这有多离题?评论对提问者和其他人都有帮助。@chris这不是关于管理RDBMS的?@Will-至少部分是关于DBA admin的。有些可能需要代码,我不确定。如果你认为问题应该在“”中,可能会留下这样的评论。当你有权绕过投票机制,在几秒钟内结束问题,而不是有人花15-20分钟来写问题时,可能最好在做出决定时行使自由裁量权。如果你真的决定关闭它,可能最好通过一条评论将努力解决这个问题的人指向正确的方向。@chriswell-put。我们可以利用你。不幸的是,我们有很多人不给。。。呃,任何对社区或其标准的关心(这是成功原因的三分之二),所以我们必须有点积极主动。OP有他的答案,问题没有被删除;结束语更像是一个提醒,我们正在努力将重点放在可回答的编程问题上。毫无疑问,它是在灰色地带,如果它被重新打开,我可以这样离开它。很抱歉,它并不完美。它与
autovacuum\u analyze\u scale\u factor
一起工作,因此调整这两个值可能是个好主意:太好了!我会检查的。谢谢