• Heikki Linnakangas's avatar
    Generate less WAL during GiST, GIN and SP-GiST index build. · 9155580f
    Heikki Linnakangas authored
    Instead of WAL-logging every modification during the build separately,
    first build the index without any WAL-logging, and make a separate pass
    through the index at the end, to write all pages to the WAL. This
    significantly reduces the amount of WAL generated, and is usually also
    faster, despite the extra I/O needed for the extra scan through the index.
    WAL generated this way is also faster to replay.
    
    For GiST, the LSN-NSN interlock makes this a little tricky. All pages must
    be marked with a valid (i.e. non-zero) LSN, so that the parent-child
    LSN-NSN interlock works correctly. We now use magic value 1 for that during
    index build. Change the fake LSN counter to begin from 1000, so that 1 is
    safely smaller than any real or fake LSN. 2 would've been enough for our
    purposes, but let's reserve a bigger range, in case we need more special
    values in the future.
    
    Author: Anastasia Lubennikova, Andrey V. Lepikhov
    Reviewed-by: Heikki Linnakangas, Dmitry Dolgov
    9155580f
gindesc.c 5.75 KB