An undo log is a collection of undo log records associated with a single transaction. An undo log record contains information about how to undo the latest change by a transaction to a clustered index record. If another transaction needs to see the original data (as part of a consistent read operation), the unmodified data is retrieved from the undo log records. Undo logs exist within undo log segments, which are contained within rollback segments. By default, rollback segments are physically part of the system tablespace. However, as of MySQL 5.6.3, rollback segments can reside in separate undo tablespaces. For more information, see Section 14.7.7, “Storing InnoDB Undo Logs in Separate Tablespaces”. For information about multi-versioning, see Section 14.3, “InnoDB Multi-Versioning”.
InnoDB supports 128 rollback segments, each
supporting up to 1023 concurrent data-modifying transactions, for
a total limit of approximately 128K concurrent data-modifying
transactions (read-only transactions do not count against the
maximum limit). Each transaction is assigned to one of the
rollback segments, and remains tied to that rollback segment for
the duration. The
innodb_undo_logs option defines
how many rollback segments are used by InnoDB.