On Thu, Mar 9, 2017 at 8:51 AM, Masahiko Sawada <sawada.m...@gmail.com> wrote: >> pg_class.relfrozenxid is InvalidTransactionId for indexes because >> indexes generally don't store XIDs. This is the one exception that I'm >> aware of, presumably justified by the fact that it's only for >> recyclable pages anyway, and those are currently *guaranteed* to get >> recycled quickly. In particular, they're guaranteed to get recycled by >> the next VACUUM. They may be recycled in the course of anti-wraparound >> VACUUM, even if VACUUM has no garbage tuples to kill (even if we only >> do lazy_cleanup_index() instead of lazy_vacuum_index()). This is the >> case that this patch proposes to have us skip touching indexes for. >> > > To prevent this, I think we need to not skip the lazy_cleanup_index > when ant-wraparound vacuum (aggressive = true) even if the number of > scanned pages is less then the threshold. This can ensure that > pg_class.relfrozenxid is not advanced past opaque->bp.xact with > minimal pain. Even if the btree dead page is leaved, the subsequent > modification makes garbage on heap and then autovauum recycles that > page while index vacuuming(lazy_index_vacuum).
Sorry for the delay in getting back to you. I think that that's safe, but it is a little disappointing that it does not allow us to skip work in the case that you really had in mind when writing the patch. Better than nothing, though, and perhaps still a good start. I would like to hear other people's opinions. -- Peter Geoghegan -- Sent via pgsql-hackers mailing list (email@example.com) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers