Re: Partial vacuum versus pg_class.reltuples - Mailing list pgsql-hackers

From Heikki Linnakangas
Subject Re: Partial vacuum versus pg_class.reltuples
Date
Msg-id 4A377F97.9070704@enterprisedb.com
Whole thread Raw
In response to Re: Partial vacuum versus pg_class.reltuples  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
(back from vacation)

Tom Lane wrote:
> I wrote:
>> Another interesting question is why successive vacuums aren't causing
>> the index reltuples counts to go to zero.  Shouldn't a partial vacuum
>> result in *all* pages of the relation being marked as not needing to
>> be examined by the next vacuum?
> 
> I figured out the reason for that: the first 32 pages of the table are
> always scanned, even if the whole thing is frozen, because of the
> SKIP_PAGES_THRESHOLD logic.  We could change that behavior by
> initializing all_visible_streak to SKIP_PAGES_THRESHOLD instead of zero.
> But if we did so then having even just page zero be skippable would mean
> that we clear scanned_all and thus fail to update reltuples, which is
> probably not a good thing.

Right, that's exactly why I wrote it like that. I also thought about 
scanning the (beginning of the) visibility map first to see if there's 
big enough gaps in there to warrant skipping pages, but went with the 
current approach because it's so much simpler.

--   Heikki Linnakangas  EnterpriseDB   http://www.enterprisedb.com


pgsql-hackers by date:

Previous
From: Stefan Kaltenbrunner
Date:
Subject: Re: question about meaning of character varying without length
Next
From: Andres Freund
Date:
Subject: Re: machine-readable explain output