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 ---------------------------(end of broadcast)--------------------------- TIP 6: explain analyze is your friend