Tom Lane wrote:
> The main problem with the levels proposed by Takahiro-san is that any
> transition from FROZEN to not-FROZEN *must* be exactly recovered,
> because vacuum will never visit an allegedly frozen page at all. This
> appears to require WAL-logging DSM state changes, which is a pretty
> serious performance hit.
I doubt it would be a big performance hit. AFAICS, all the information
needed to recover the DSM is already written to WAL, so it wouldn't need
any new WAL records.
> I'd be happier if the DSM content could be
> treated as just a hint. I think that means not trusting it for whether
> a page is frozen to the extent of not needing vacuum even for
> wraparound. So I'm inclined to propose that there be only two states
> (hence only one DSM bit per page): page needs vacuum for space recovery,
> or not. Vacuum for XID wraparound would have to hit every page
> regardless.
If we don't have a frozen state, we can't use the DSM to implement
index-only scans. Index-only scans will obviously require a lot more
work than just the DSM, but I'd like to have a solution that enables it
in the future.
-- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com