14.6.6 Redo Log
The redo log is a disk-based data structure used during crash recovery to correct data written by incomplete transactions. During normal operations, the redo log encodes requests to change table data that result from SQL statements or low-level API calls. Modifications that did not finish updating the data files before an unexpected shutdown are replayed automatically during initialization, and before the connections are accepted. For information about the role of the redo log in crash recovery, see Section 14.19.2, “InnoDB Recovery”.
By default, the redo log is physically represented on disk by two files named
ib_logfile1. MySQL writes to the redo log files in a circular fashion. Data in the redo log is encoded in terms of records affected; this data is collectively referred to as redo. The passage of data through the redo log is represented by an ever-increasing LSN value.
To change the number or the size of your
InnoDB redo log files, perform the following steps:
InnoDB detects that the
innodb_log_file_size differs from the redo log file size, it writes a log checkpoint, closes and removes the old log files, creates new log files at the requested size, and opens the new log files.
InnoDB, like any other ACID-compliant database engine, flushes the redo log of a transaction before it is committed.
InnoDB uses group commit functionality to group multiple such flush requests together to avoid one flush for each commit. With group commit,
InnoDB issues a single write to the log file to perform the commit action for multiple user transactions that commit at about the same time, significantly improving throughput.
For more information about performance of
COMMIT and other transactional operations, see Section 8.5.2, “Optimizing InnoDB Transaction Management”.