事务日志分类
undo log 主要用于记录数据完成增删改操作之前的事务
redo log 主要用于记录数据完成增删改操作之后的事务
Undo+Redo事务的简化过程
假设有A、B两个数据,值分别为1,2,开始一个事务,事务的操作内容为:把1修改为3,2修改为4,那么实际的记录如下(简化):
1.事务开始
2.记录A=1到undo log
3.修改A=3
4.记录A3到redo log
5.记录B=2到undo log
6.修改B=4
7.记录B=4到redo log
8.将redo log写入磁盘
9.事务提交
10.判断事务是否引用undo log,有等待,没有则回收undo log
一个事务提交后,update undo链表中的undo日志不能立即删除掉,这些日志用于mvcc。
redo log会被存储到磁盘中
数据库崩溃重启后的操作
一般情况下,mysql在崩溃之后,重启服务,innodb通过回滚日志undo将所有已完成并写入磁盘的未完成事务进行rollback,然后redo中的事务全部重新执行一遍即可恢复数据,但是随着redo的量增加,每次从redo的第一条开始恢复就会浪费长的时间,所以引入了checkpoint机制,这点以后在讲
参考文章
innodb事务日志详解_weixin_34233421的博客-CSDN博客