Fix bugs not to discard statistics when changing stats_fetch_consistency
Shinya Kato <shinya11.kato@oss.nttdata.com>
From: Shinya Kato <Shinya11.Kato@oss.nttdata.com>
To: pgsql-hackers@postgresql.org
Date: 2024-01-11T09:18:38Z
Lists: pgsql-hackers
Attachments
- v1-0001-fix-stats-fetch-consinstency-bugs.patch (text/x-diff) patch v1-0001
Hi, hackers
There is below description in docs for stats_fetch_consistency.
"Changing this parameter in a transaction discards the statistics
snapshot."
However, I wonder if changes stats_fetch_consistency in a transaction,
statistics is not discarded in some cases.
Example:
--
* session 1
=# SET stats_fetch_consistency TO snapshot;
=# BEGIN;
=*# SELECT wal_records, wal_fpi, wal_bytes FROM pg_stat_wal;
wal_records | wal_fpi | wal_bytes
-------------+---------+-----------
23592 | 628 | 5939027
(1 row)
* session 2
=# CREATE TABLE test (i int); -- generate WAL records
=# SELECT wal_records, wal_fpi, wal_bytes FROM pg_stat_wal;
wal_records | wal_fpi | wal_bytes
-------------+---------+-----------
23631 | 644 | 6023411
(1 row)
* session 1
=*# -- snapshot is not discarded, it is right
=*# SELECT wal_records, wal_fpi, wal_bytes FROM pg_stat_wal;
wal_records | wal_fpi | wal_bytes
-------------+---------+-----------
23592 | 628 | 5939027
(1 row)
=*# SET stats_fetch_consistency TO cache;
=*# -- snapshot is not discarded, it is not right
=*# SELECT wal_records, wal_fpi, wal_bytes FROM pg_stat_wal;
wal_records | wal_fpi | wal_bytes
-------------+---------+-----------
23592 | 628 | 5939027
(1 row)
--
I can see similar cases in pg_stat_archiver, pg_stat_bgwriter,
pg_stat_checkpointer, pg_stat_io, and pg_stat_slru.
Is it a bug? I fixed it, and do you think?
--
Regards,
Shinya Kato
NTT DATA GROUP CORPORATION
Commits
-
Fix stats_fetch_consistency with stats for fixed-numbered objects
- 171d21f50c3e 15.6 landed
- 781bc121de89 16.2 landed
- 235c09efbb30 17.0 landed