PostgreSQL maakt een cache per backend (per verbinding, effectief) van de gegevens die worden gebruikt door de pg_stat_get_activity()
functie gebruikt door zowel pg_stat_activity
en pg_stat_replication
.
Deze cache wordt gewist bij commit/rollback, maar niet aan het einde van elke instructie binnen een transactie in READ COMMITTED
zoals gewoonlijk.
Je kunt het expliciet wissen met SELECT pg_stat_clear_snapshot()
. Noem het binnen de body van een PL/PgSQL LOOP
om te vernieuwen.
Er is geen manier om PostgreSQL te vragen om automatisch te vernieuwen na elke instructie bij gebruik van repeatable read
of hogere isolatie.
Zie in de broncode pgstat_read_current_status(void)
en pgstat_clear_snapshot(void)
.