• Peter Geoghegan's avatar
    Add nbtree README section on page recycling. · b071a311
    Peter Geoghegan authored
    Consolidate discussion of how VACUUM places pages in the FSM for
    recycling by adding a new section that comes after discussion of page
    deletion.  This structure reflects the fact that page recycling is
    explicitly decoupled from page deletion in Lanin & Shasha's paper.  Page
    recycling in nbtree is an implementation of what the paper calls "the
    drain technique".
    
    This decoupling is an important concept for nbtree VACUUM.  Searchers
    have to detect and recover from concurrent page deletions, but they will
    never have to reason about concurrent page recycling.  Recycling can
    almost always be thought of as a low level garbage collection operation
    that asynchronously frees the physical space that backs a logical tree
    node.  Almost all code need only concern itself with logical tree nodes.
    (Note that "logical tree node" is not currently a term of art in the
    nbtree code -- this all works implicitly.)
    
    This is preparation for an upcoming patch that teaches nbtree VACUUM to
    remember the details of pages that it deletes on the fly, in local
    memory.  This enables the same VACUUM operation to consider placing its
    own deleted pages in the FSM later on, when it reaches the end of
    btvacuumscan().
    b071a311
README 60 KB