在每一步之间查询 pg_stat_reset 和 pg_stat_user_tables

querying pg_stat_reset and pg_stat_user_tables between every step

在我的 Java 批次中,我想在每个步骤后从 pg_stat_user_tables 收集数据。

例如,我想从pg_stat_user_tables.

收集每个步骤的每个table的顺序扫描数

我在 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

但是从 tables 收集的统计数据并不统一,并且经常出现在较晚的步骤中(第 2 步中扫描的 tables 出现在从第 3 步或更高版本收集的数据中) .

pg_stat_user_tablespg_stat_xact_user_tables是否包含实时数据?

是我做错了什么,还是无法为每个小步骤收集实时数据?

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

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

对于生产用途,我看不出在每个步骤后收集统计信息的意义。