Re: 64-bit XIDs in deleted nbtree pages

Peter Geoghegan <pg@bowt.ie>

From: Peter Geoghegan <pg@bowt.ie>
To: Masahiko Sawada <sawada.mshk@gmail.com>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Heikki Linnakangas <hlinnaka@iki.fi>
Date: 2021-02-22T22:54:54Z
Lists: pgsql-hackers
On Mon, Feb 22, 2021 at 4:21 AM Masahiko Sawada <sawada.mshk@gmail.com> wrote:
> The 0001 patch looks good to me. In the documentation, I think we need
> to update the following paragraph in the description of
> vacuum_cleanup_index_scale_factor:

Good point. I think that the structure should make the page deletion
triggering condition have only secondary importance -- it is only
described at all to be complete and exhaustive. The
vacuum_cleanup_index_scale_factor-related threshold is all that users
will really care about in this area.

The reasons for this are: it's pretty rare to have many page
deletions, but never again delete/non-hot update even one single
tuple. But when that happens, it's *much* rarer still to *also* have
inserts, that might actually benefit from recycling the deleted page.
So it's very narrow.

I think that I'll add a "Note" box that talks about the page deletion
stuff, right at the end. It's actually kind of an awkward thing to
describe, and yet I think we still need to describe it.

I also think that the existing documentation should clearly point out
that the vacuum_cleanup_index_scale_factor only gets considered when
there are no updates or deletes since the last VACUUM -- that seems
like an existing problem worth fixing now. It's way too unclear that
this setting only really concerns append-only tables.

-- 
Peter Geoghegan



Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Recycle nbtree pages deleted during same VACUUM.

  2. VACUUM VERBOSE: Count "newly deleted" index pages.

  3. Use full 64-bit XIDs in deleted nbtree pages.

  4. Fix nbtree cleanup-only VACUUM stats inaccuracies.

  5. Fix undercounting in VACUUM VERBOSE output.

  6. Delete empty pages in each pass during GIST VACUUM.

  7. Use full 64-bit XID for checking if a deleted GiST page is old enough.

  8. Allow VACUUM to be run with index cleanup disabled.

  9. Skip full index scan during cleanup of B-tree indexes when possible

  10. Do index FSM vacuuming sooner.

  11. Avoid early reuse of btree pages, causing incorrect query results.

  12. Clean up API for ambulkdelete/amvacuumcleanup as per today's discussion.