PostgreSQL membuat cache per-backend (per-koneksi, secara efektif) dari data yang digunakan oleh pg_stat_get_activity() fungsi yang digunakan oleh pg_stat_activity dan pg_stat_replication .
Cache ini dihapus saat komit/kembalikan, tetapi tidak di akhir setiap pernyataan dalam transaksi di READ COMMITTED seperti biasa.
Anda dapat menghapusnya secara eksplisit dengan SELECT pg_stat_clear_snapshot() . Sebut saja di dalam tubuh PL/PgSQL LOOP untuk menyegarkan.
Tidak ada cara AFAIK untuk meminta PostgreSQL melakukan penyegaran otomatis setelah setiap pernyataan saat menggunakan repeatable read atau isolasi yang lebih tinggi.
Dalam kode sumber, lihat pgstat_read_current_status(void) dan pgstat_clear_snapshot(void) .