• Michael Paquier's avatar
    Skip redundant anti-wraparound vacuums · 2aa6e331
    Michael Paquier authored
    An anti-wraparound vacuum has to be by definition aggressive as it needs
    to work on all the pages of a relation.  However it can happen that due
    to some concurrent activity an anti-wraparound vacuum is marked as
    non-aggressive, which makes it redundant with a previous run, and
    it is actually useless as an anti-wraparound vacuum should process all
    the pages of a relation.  This commit makes such vacuums to be skipped.
    
    An anti-wraparound vacuum not aggressive can be found easily by mixing
    low values of autovacuum_freeze_max_age (to control anti-wraparound) and
    autovacuum_freeze_table_age (to control the aggressiveness).
    
    28a8fa98 has added some extra logging printing all the possible
    combinations of anti-wraparound and aggressive vacuums, which now gets
    simplified as an anti-wraparound vacuum also non-aggressive gets
    skipped.
    
    Per discussion mainly between Andrew Dunstan, Robert Haas, Álvaro
    Herrera, Kyotaro Horiguchi, Masahiko Sawada, and myself.
    
    Author: Kyotaro Horiguchi, Michael Paquier
    Reviewed-by: Andrew Dunstan, Álvaro Herrera
    Discussion: https://postgr.es/m/20180914153554.562muwr3uwujno75@alvherre.pgsql
    2aa6e331
vacuumlazy.c 72.3 KB