From aec813b2fe066093ce7355f22b7396dd13b8e11b Mon Sep 17 00:00:00 2001 From: Justin Pryzby Date: Sun, 29 Dec 2019 14:56:02 -0600 Subject: [PATCH v1 5/6] Report number of pages_allvisible/frozen.. ..as requested by Jeff Janes --- src/backend/access/heap/vacuumlazy.c | 37 ++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/src/backend/access/heap/vacuumlazy.c b/src/backend/access/heap/vacuumlazy.c index 08ad6b5..b739d49 100644 --- a/src/backend/access/heap/vacuumlazy.c +++ b/src/backend/access/heap/vacuumlazy.c @@ -125,7 +125,9 @@ typedef struct LVRelStats double new_rel_tuples; /* new estimated total # of tuples */ double new_live_tuples; /* new estimated total # of live tuples */ double new_dead_tuples; /* new estimated total # of dead tuples */ - BlockNumber pages_removed; + BlockNumber pages_removed; /* Due to truncation */ + BlockNumber pages_frozen; + BlockNumber pages_allvisible; double tuples_deleted; BlockNumber nonempty_pages; /* actually, last nonempty page + 1 */ /* List of TIDs of tuples we intend to delete */ @@ -427,11 +429,13 @@ heap_vacuum_rel(Relation onerel, VacuumParams *params, get_namespace_name(RelationGetNamespace(onerel)), RelationGetRelationName(onerel), vacrelstats->num_index_scans); - appendStringInfo(&buf, _("pages: %u removed, %u remain, %u skipped due to pins, %u skipped frozen\n"), + appendStringInfo(&buf, _("pages: %u removed, %u remain, %u skipped due to pins, %u skipped frozen, %u marked all visible, %u marked frozen\n"), vacrelstats->pages_removed, vacrelstats->rel_pages, vacrelstats->pinskipped_pages, - vacrelstats->frozenskipped_pages); + vacrelstats->frozenskipped_pages, + vacrelstats->pages_allvisible, + vacrelstats->pages_frozen); appendStringInfo(&buf, _("tuples: %.0f removed, %.0f remain, %.0f are dead but not yet removable, oldest xmin: %u\n"), vacrelstats->tuples_deleted, @@ -647,6 +651,9 @@ lazy_scan_heap(Relation onerel, VacuumParams *params, LVRelStats *vacrelstats, vacrelstats->scanned_pages = 0; vacrelstats->tupcount_pages = 0; vacrelstats->nonempty_pages = 0; + vacrelstats->pages_frozen = 0; + vacrelstats->pages_allvisible = 0; + vacrelstats->latestRemovedXid = InvalidTransactionId; lazy_space_alloc(vacrelstats, nblocks); @@ -944,6 +951,8 @@ lazy_scan_heap(Relation onerel, VacuumParams *params, LVRelStats *vacrelstats, visibilitymap_set(onerel, blkno, buf, InvalidXLogRecPtr, vmbuffer, InvalidTransactionId, VISIBILITYMAP_ALL_VISIBLE | VISIBILITYMAP_ALL_FROZEN); + vacrelstats->pages_allvisible++; + vacrelstats->pages_frozen++; END_CRIT_SECTION(); } @@ -1275,8 +1284,12 @@ lazy_scan_heap(Relation onerel, VacuumParams *params, LVRelStats *vacrelstats, { uint8 flags = VISIBILITYMAP_ALL_VISIBLE; - if (all_frozen) + if (all_frozen) { flags |= VISIBILITYMAP_ALL_FROZEN; + vacrelstats->pages_frozen++; + } + + vacrelstats->pages_allvisible++; /* * It should never be the case that the visibility map page is set @@ -1475,6 +1488,14 @@ lazy_scan_heap(Relation onerel, VacuumParams *params, LVRelStats *vacrelstats, "%s%u pages are entirely empty.\n", empty_pages), msgprefix, empty_pages); + appendStringInfo(&sbuf, ngettext("%sMarked %u page all visible, ", + "%sMarked %u pages all visible, ", + vacrelstats->pages_allvisible), + msgprefix, vacrelstats->pages_allvisible); + appendStringInfo(&sbuf, ngettext("%u page frozen.\n", + "%u pages frozen.\n", + vacrelstats->pages_frozen), + vacrelstats->pages_frozen); appendStringInfo(&sbuf, _("%s%s."), msgprefix, pg_rusage_show(&ru0)); // why translate this ?? ereport(elevel, @@ -1692,10 +1713,14 @@ lazy_vacuum_page(Relation onerel, BlockNumber blkno, Buffer buffer, uint8 flags = 0; /* Set the VM all-frozen bit to flag, if needed */ - if ((vm_status & VISIBILITYMAP_ALL_VISIBLE) == 0) + if ((vm_status & VISIBILITYMAP_ALL_VISIBLE) == 0) { flags |= VISIBILITYMAP_ALL_VISIBLE; - if ((vm_status & VISIBILITYMAP_ALL_FROZEN) == 0 && all_frozen) + vacrelstats->pages_allvisible++; + } + if ((vm_status & VISIBILITYMAP_ALL_FROZEN) == 0 && all_frozen) { flags |= VISIBILITYMAP_ALL_FROZEN; + vacrelstats->pages_frozen++; + } Assert(BufferIsValid(*vmbuffer)); if (flags != 0) -- 2.7.4