PostgreSQL прави кеш за всеки бекенд (ефективно за всяка връзка) на данните, използвани от pg_stat_get_activity()
функция, използвана от двете pg_stat_activity
и pg_stat_replication
.
Този кеш се изчиства при извършване/връщане назад, но не в края на всеки оператор в рамките на транзакция в READ COMMITTED
както обикновено.
Можете изрично да го изчистите с SELECT pg_stat_clear_snapshot()
. Извикайте го в тялото на PL/PgSQL LOOP
за опресняване.
Няма AFAIK начин да поискате от PostgreSQL автоматично опресняване след всеки израз, когато използвате repeatable read
или по-висока изолация.
В изходния код вижте pgstat_read_current_status(void)
и pgstat_clear_snapshot(void)
.