• Marko Mäkelä's avatar
    MDEV-14916 InnoDB reports warning for "Purge reached the head of the history list" · bdcd7f79
    Marko Mäkelä authored
    The warning was originally added in
    commit c6766305
    (MySQL 4.1.12, 5.0.3) to trace claimed undo log corruption that
    was analyzed in https://lists.mysql.com/mysql/176250
    on November 9, 2004.
    
    Originally, the limit was 20,000 undo log headers or transactions,
    but in commit 9d6d1902
    in MySQL 5.5.11 it was increased to 2,000,000.
    
    The message can be triggered when the progress of purge is prevented
    by a long-running transaction (or just an idle transaction whose
    read view was started a long time ago), by running many transactions
    that UPDATE or DELETE some records, then starting another transaction
    with a read view, and finally by executing more than 2,000,000
    transactions that UPDATE or DELETE records in InnoDB tables. Finally,
    when the oldest long-running transaction is completed, purge would
    run up to the next-oldest transaction, and there would still be more
    than 2,000,000 transactions to purge.
    
    Because the message can be triggered when the database is obviously
    not corrupted, it should be removed. Heavy users of InnoDB should be
    monitoring the "History list length" in SHOW ENGINE INNODB STATUS;
    there is no need to spam the error log.
    bdcd7f79
trx0purge.c 30.3 KB