3

我们将使用 PostgreSQL 中的一个系统表来获取几个表的行数估计值。我知道要使这些估计更好,统计数据需要更新;此处的 wiki声明应确保“您已经ANALYZE在桌面上运行了足够多的数据以使这些统计信息保持最新”。

我们预计某些表格最终会被频繁地写入或更新(例如,我的大致目标是每秒大约 150 次 - 这对我来说“相当频繁”,但我不确定这在现实生活中是否合格数据库)。计数应该每秒发生一次,我会说它们有必要返回一个值,该值反映表中更改的行数具有一定程度的准确性(即,如果数字确实会很奇怪如果在此期间有很多插入,几秒钟后不会改变)。

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

非常感谢你!

4

1 回答 1

2

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

根据文档

autovacuum_analyze_threshold(整数)

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

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

于 2013-01-29T15:07:53.137 回答