PostgreSQL tworzy pamięć podręczną na backend (efektywnie na połączenie) danych używanych przez pg_stat_get_activity() funkcja używana przez pg_stat_activity i pg_stat_replication .
Ta pamięć podręczna jest czyszczona podczas zatwierdzania/wycofywania, ale nie na końcu każdej instrukcji w transakcji w READ COMMITTED jak zwykle.
Możesz to wyraźnie wyczyścić za pomocą SELECT pg_stat_clear_snapshot() . Wywołaj to w ciele LOOP PL/PgSQL do odświeżenia.
AFAIK nie ma sposobu, aby poprosić PostgreSQL o automatyczne odświeżanie po każdej instrukcji, gdy używasz repeatable read lub wyższa izolacja.
W kodzie źródłowym zobacz pgstat_read_current_status(void) i pgstat_clear_snapshot(void) .