PostgreSQL tạo bộ nhớ đệm cho mỗi phần phụ trợ (mỗi kết nối, một cách hiệu quả) của dữ liệu được sử dụng bởi pg_stat_get_activity()
hàm được sử dụng bởi cả pg_stat_activity
và pg_stat_replication
.
Bộ đệm ẩn này được xóa khi cam kết / khôi phục, nhưng không bị xóa ở cuối mỗi câu lệnh trong giao dịch trong READ COMMITTED
như thường lệ.
Bạn có thể xóa nó một cách rõ ràng bằng SELECT pg_stat_clear_snapshot()
. Gọi nó trong phần thân của LOOP
PL / PgSQL để làm mới.
AFAIK không có cách nào để yêu cầu PostgreSQL tự động làm mới sau mỗi câu lệnh khi sử dụng repeatable read
hoặc cách ly cao hơn.
Trong mã nguồn, hãy xem pgstat_read_current_status(void)
và pgstat_clear_snapshot(void)
.