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, rollback segments can reside in separate undo tablespaces. For more information, see Section 15.7.7, “Storing InnoDB Undo Logs in Separate Tablespaces”. For information about multi-versioning, see Section 15.3, “InnoDB Multi-Versioning”.
InnoDB supports 128 rollback segments, 32 of
which are reserved as non-redo rollback segments for temporary
table transactions. Each transaction that updates a temporary
table (excluding read-only transactions) is assigned two rollback
segments, one redo-enabled rollback segment and one non-redo
rollback segment. Read-only transactions are only assigned
non-redo rollback segments, as read-only transactions are only
permitted to modify temporary tables.
This leaves 96 available rollback segments, each of which supports up to 1023 concurrent data-modifying transactions, for a total limit of approximately 96K concurrent data-modifying transactions. The 96K limit assumes that transactions do not modify temporary tables. If all data-modifying transactions also modify temporary tables, the total limit is approximately 32K concurrent data modifying transactions. For more information about rollback segments that are reserved for temporary table transactions, see Section 18.104.22.168, “InnoDB Temporary Table Undo Logs”.
defines the number of rollback segments used by