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. Rollback segments are physically part of the system tablespace. For related information, see Section 14.6, “InnoDB Multi-Versioning”.
Prior to MySQL 5.5.4, InnoDB supported a single
rollback segment which supported a maximum of 1023 concurrent
data-modifying transactions (read-only transactions do not count
against the maximum limit). In MySQL 5.5.4, the single rollback
segment was divided into 128 rollback segments, each supporting up
to 1023 concurrent data-modifying transactions, creating a new
limit of approximately 128K concurrent data-modifying
transactions. The
innodb_rollback_segments option
defines how many of the rollback segments in the system tablespace
are used for InnoDB transactions.
Each transaction is assigned to one of the rollback segments, and remains tied to that rollback segment for the duration. The increased limit for concurrent data-modifying transactions improves both scalability (higher number of concurrent transactions) and performance (less contention when different transactions access the rollback segments).