Hi, Alena! On Tue, Jun 16, 2026 at 6:10 PM Alena Rybakina <[email protected]> wrote: > Attached is a reworked version of the patch set. The main change is that the > statistics are no longer exposed through a contrib extension; they are now > built-in system views - pg_stat_vacuum_tables, pg_stat_vacuum_indexes and > pg_stat_vacuum_database - backed by pg_stat_get_vacuum_*() functions and > stored > in the cumulative statistics system under a dedicated stats kind > (PGSTAT_KIND_VACUUM_RELATION). Collection is controlled by a single > track_vacuum_statistics GUC; the per-relation tracking list, the reset > function and the shared-memory-size helper from the extension version are > gone. > > The series is also split into smaller, self-contained commits - one per metric > category (core heap/tuple counters, missed dead tuples/pages, visibility-map > transitions, the buffer/WAL/timing sampling machinery, per-relation buffers, > timing and the wraparound failsafe, and WAL) - with the documentation and > tests growing inside each commit. > > Other changes: > > index statistics are accumulated across the bulkdelete and cleanup passes and > reported once per index, in both the serial and parallel paths; > index_vacuum_count is no longer exposed; > the regression coverage is now an in-core vacuum_stats test with > deterministic checks and dedicated scenarios for the non-trivial paths > (truncation, freeze, cost delay, WAL full-page images, index page deletion), > an isolation test for recently_dead/missed_dead tuples, and a xid_wraparound > TAP test for the failsafe counter.
Thank you for the updated patchset. Some notes about it. 1) PgStat_CommonCounts.interrupts_count is never incremented. 2) LVRelState.wraparound_failsafe_count can only be incremented once in lazy_check_wraparound_failsafe(). Should we replace it with a bool? 3) Vacuum statistics isn't counted correctly for parallel index vacuum. parallel_vacuum_process_one_index() doesn't call neither extvac_stats_start_idx(), extvac_stats_end_idx(), or extvac_accumulate_idx_repor(). This leads all index vacuum stats to go the heap stats. I also think you need a reliable test cases to cover issues like this. 4) It seems that pgstat_vacuum_db_flush_cb() and pgstat_vacuum_relation_flush_cb() are unused as pgstat_report_vacuum_extstats() reports directly to shmem. What was your intention here? 5) Commit message of 0001 uses stale names rev_all_visible_pages/rev_all_frozen_pages counters for visible_page_marks_cleared` / `frozen_page_marks_cleared. ------ Regards, Alexander Korotkov Supabase
