PostgreSQL erstellt einen Cache pro Backend (effektiv pro Verbindung) der Daten, die von pg_stat_get_activity()
verwendet werden Funktion, die sowohl von pg_stat_activity
verwendet wird und pg_stat_replication
.
Dieser Cache wird beim Commit/Rollback gelöscht, aber nicht am Ende jeder Anweisung innerhalb einer Transaktion in READ COMMITTED
wie immer.
Sie können es explizit mit SELECT pg_stat_clear_snapshot()
löschen . Rufen Sie es innerhalb des Körpers einer PL/PgSQL LOOP
auf zu aktualisieren.
Es gibt AFAIK keine Möglichkeit, PostgreSQL zu bitten, nach jeder Anweisung automatisch zu aktualisieren, wenn repeatable read
verwendet wird oder höhere Isolierung.
Siehe im Quellcode pgstat_read_current_status(void)
und pgstat_clear_snapshot(void)
.