Undo log
Le journal des valeurs précédentes de MySQL/InnoDB, qui sert à deux choses : annuler une transaction (rollback) et reconstruire d'anciennes versions de lignes pour le MVCC, afin que les lectures voient un instantané cohérent.
Le mécanisme : avant qu'une ligne soit modifiée, son ancienne valeur est sauvegardée dans l'undo log. Deux usages : (1) le rollback — si la transaction est abandonnée, les lignes sont restaurées depuis les données d'annulation ; (2) le MVCC — une transaction en lecture qui a besoin de voir un état plus ancien « remonte » la chaîne d'annulation pour construire son instantané, sans bloquer les écrivains. Les anciennes données d'annulation sont nettoyées par une « purge » en arrière-plan quand plus aucune transaction n'en a besoin. Piège : une transaction de longue durée retient les anciennes versions → l'undo log gonfle (la « history list length » grandit), à l'image du problème de bloat de Postgres. À ne pas confondre avec le redo log (récupération vers l'avant) ; l'undo va vers l'arrière (anciennes valeurs). Voisin du redo log et du MVCC.