PostgreSQL vytváří mezipaměť dat používaných funkcí pg_stat_get_activity()
pro každý backend (efektivně pro každé připojení) funkce používaná oběma pg_stat_activity
a pg_stat_replication
.
Tato mezipaměť se vymaže při odevzdání/vrácení zpět, ale ne na konci každého příkazu v rámci transakce v READ COMMITTED
jako obvykle.
Můžete jej explicitně vymazat pomocí SELECT pg_stat_clear_snapshot()
. Volejte jej v těle PL/PgSQL LOOP
obnovit.
Neexistuje AFAIK žádný způsob, jak požádat PostgreSQL o automatické obnovení po každém příkazu při použití repeatable read
nebo vyšší izolace.
Ve zdrojovém kódu viz pgstat_read_current_status(void)
a pgstat_clear_snapshot(void)
.