首页 > 解决方案 > 在每一步之间查询 pg_stat_reset 和 pg_stat_user_tables

问题描述

在我的 Java Batch 中,我想pg_stat_user_tables在每个步骤之后收集数据。

例如,我想从pg_stat_user_tables.

我在java中尝试了这个算法:

call pg_stat_reset()
Step 1
collect pg_stat_user_tables (or pg_stat_xact_user_tables) for Step 1
call pg_stat_reset()
Step 2
collect pg_stat_user_tables (or pg_stat_xact_user_tables) for Step 2
...
call pg_stat_reset()
Step n
collect pg_stat_user_tables (or pg_stat_xact_user_tables) for Step n

但是从表中收集的统计数据并不统一,并且经常出现在后面的步骤中(第 2 步中扫描的表出现在第 3 步或以后的收集数据中)。

是否pg_stat_user_tables包含pg_stat_xact_user_tables实时数据?

我做错了什么还是不可能为每个小步骤收集实时数据?

标签: postgresqlpostgresql-9.4usage-statistics

解决方案


统计信息不是实时更新的,而是由统计信息收集器进程异步收集和更新的。

如果这是出于调试目的,也许您可​​以在每一步之后等待几秒钟,那么您很有可能获得当前的统计信息。

对于生产用途,我看不到在每个步骤之后收集统计数据的意义。


推荐阅读