• Robert Haas's avatar
    Expand hash indexes more gradually. · ea69a0de
    Robert Haas authored
    Since hash indexes typically have very few overflow pages, adding a
    new splitpoint essentially doubles the on-disk size of the index,
    which can lead to large and abrupt increases in disk usage (and
    perhaps long delays on occasion).  To mitigate this problem to some
    degree, divide larger splitpoints into four equal phases.  This means
    that, for example, instead of growing from 4GB to 8GB all at once, a
    hash index will now grow from 4GB to 5GB to 6GB to 7GB to 8GB, which
    is perhaps still not as smooth as we'd like but certainly an
    improvement.
    
    This changes the on-disk format of the metapage, so bump HASH_VERSION
    from 2 to 3.  This will force a REINDEX of all existing hash indexes,
    but that's probably a good idea anyway.  First, hash indexes from
    pre-10 versions of PostgreSQL could easily be corrupted, and we don't
    want to confuse corruption carried over from an older release with any
    corruption caused despite the new write-ahead logging in v10.  Second,
    it will let us remove some backward-compatibility code added by commit
    293e24e5.
    
    Mithun Cy, reviewed by Amit Kapila, Jesper Pedersen and me.  Regression
    test outputs updated by me.
    
    Discussion: http://postgr.es/m/CAD__OuhG6F1gQLCgMQNnMNgoCvOLQZz9zKYJQNYvYmmJoM42gA@mail.gmail.com
    Discussion: http://postgr.es/m/CA+TgmoYty0jCf-pa+m+vYUJ716+AxM7nv_syvyanyf5O-L_i2A@mail.gmail.com
    ea69a0de
pageinspect.sgml 21 KB