Hi, all!
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.
--
-----------
Best regards,
Alena Rybakina
Yandex Cloud