Postgres的检查是否有新行插入

问题描述 投票:0回答:1

我有许多相当大的表(300-400表,〜30000000每行)。每天(每天一次)我要检查是否有新行插入到任何表。可能数量插入可以从0到30万行变化的行。行是不会被删除。

此刻,我检查是否使用近似数插入任何新行。然后将它与以前的(昨天)的结果进行比较。

SELECT reltuples FROM pg_class WHERE oid='tablename'::regclass;

我怀疑主要的事情:如何尽快如果,例如,3000个行将被插入(或5行插入)reltuples将被更新?而且是近似计数这种情况下,一个好的解决方案?

我的配置参数为:

autovacuum_analyze_threshold: 50
autovacuum_analyze_scale_factor: 0.1
database postgresql count postgresql-9.4
1个回答
1
投票

reltuples将被更新每当VACUUM(IR自动清理)运行,所以这种数通常具有20%的误差裕度。

你会得到来自表的统计信息视图表中的行数的更好的估计:

SELECT n_live_tup
FROM pg_stat_user_tables
WHERE schemaname = 'myschema' AND relname = 'mytable';

这个数是由统计收集器更新,因此它不能保证100%准确的(有涉及UDP套接字),并且它可能需要一些时间,数据修改的效果是可见的存在。

不过它往往比reltuples更准确的估计。

© www.soinside.com 2019 - 2024. All rights reserved.