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