PostgreSQL laver en per-backend (per-forbindelse, effektivt) cache af de data, der bruges af pg_stat_get_activity() funktion brugt af både pg_stat_activity og pg_stat_replication .
Denne cache ryddes ved commit/rollback, men ikke i slutningen af hver erklæring i en transaktion i READ COMMITTED som sædvanligt.
Du kan udtrykkeligt rydde det med SELECT pg_stat_clear_snapshot() . Kald det i brødteksten af en PL/PgSQL LOOP for at opdatere.
Der er AFAIK ingen måde at bede PostgreSQL om automatisk at opdatere efter hvert udsagn, når du bruger repeatable read eller højere isolation.
Se pgstat_read_current_status(void) i kildekoden og pgstat_clear_snapshot(void) .