PostgreSQL прави кеш за всеки бекенд (ефективно за всяка връзка) на данните, използвани от pg_stat_get_activity() функция, използвана от двете pg_stat_activity и pg_stat_replication .
Този кеш се изчиства при извършване/връщане назад, но не в края на всеки оператор в рамките на транзакция в READ COMMITTED както обикновено.
Можете изрично да го изчистите с SELECT pg_stat_clear_snapshot() . Извикайте го в тялото на PL/PgSQL LOOP за опресняване.
Няма AFAIK начин да поискате от PostgreSQL автоматично опресняване след всеки израз, когато използвате repeatable read или по-висока изолация.
В изходния код вижте pgstat_read_current_status(void) и pgstat_clear_snapshot(void) .