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)
.