innodb redolog理解

1、在干净关闭mysql时,重做日志应该逻辑上为空。意思是在检查点LSN之后没有要恢复的记录。但是,日志文件仍可能包含一些旧数据(在恢复过程中不使用)。

2、对数据页面内容的每次更改都必须通过mtr完成,该事物由mtr_commit()函数提交完成。

3、在提交mtr前,在mtr的内部缓冲区内收集更改日志。它包含多个日志记录,提交mtr时,所有日志记录都将写入一组日志记录中的日志缓冲区。包括:

  1. 计算日志记录的总数据字节数。
  2. 保留日志记录的空间。为一组日志记录分配lsn值的范围。
  3. 日志记录将写入日志缓冲区中的保留空间。
  4. 已修改的页面标记为脏页并移动到刷新列表。所有脏页都标有相同范围的lsn值。
  5. 保留空间关闭。

后台线程负责将日志缓冲区中的新更改写入日志文件。需要持久记录的用户线程必须等到日志刷新到所需的点。

重做日志刷新图解:

猜你喜欢

转载自blog.csdn.net/baijiu1/article/details/84632990
今日推荐