Redo log 重做日志
-
redo log 是为了确保事务的持久性。防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redo log 进行重做,进而达到事务的持久性这一特性
-
redo log 物理格式的日志,记录的是物理数据页面的修改信息,其redo log 是顺序写入redo log file 的物理文件中去。
-
redo log 流转过程
-
先将原始数据从磁盘中进行读取,修改数据的内存拷贝。
-
生成一条日志信息写入到 redo log buffer(
大小固定,通过循环写的方式进行写入
),记录物理数据被修改的值. -
当事务提交的时候,将redo log buffer 的数据通过
fsync
操作持久化刷新到redo log file 中, 并且对 redo log file 采用追加写的方式 -
定期将内存中修改的数据刷新进入磁盘之中
-
当 redo log 写满文件的时候,回到开头重新循环写。如下图所示, write pos 是当前记录的位置,一边写一边后移,写到第3号文件末尾就要回到第0号文件开头。checkpoint 是当前要擦除的位置,也是