面试二十五、mysql之undo log和redo log

1、undo log

  1)实现了事务的原子性

  2)保存了事务前一个版本的数据

  3)可用于回滚

  4)可以恢复到对应版本的数据

  5)mvcc用它实现

2、redo log

  1)实现了事务的持久性

  2)保存了事务的行为(记录事务对数据页做了哪些修改)

  3)可以恢复的最新版本的数据

3、mysql创建log流程:

  2-5是在内存中进行

  1)表中原先a的值为1

  2)事务要将a修改为2

  3)undo log记录a=1的旧记录

  4)事务将a修改为2

  5)redo log记录“事务将a修改为2”

  6)将redo log写入磁盘

  7)将undo log写入磁盘

  8)将数据写入磁盘

  9)事务提交

4、数据恢复

  redo log会记录已提交的事务和未提交的事务

  1)只根据已提交的事务来恢复数据

  2)根据所有事务来恢复数据,然后通过undo log来回滚那些未提交的事务

上一篇:MySQL中都有哪些日志文件?


下一篇:Windows IIS日志文件分析神器——Log Parser Studio使用方法