面试二十五、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来回滚那些未提交的事务

posted on 2021-09-02 14:55  Iversonstear  阅读(275)  评论(0编辑  收藏  举报

导航