MySQL的Undo-log与Redo-log的实现机制
本文将详细介绍什么是Undo Log
、Redo Log
。
MySQL默认的Innodb在REPEATABLE READ隔离级别下,是如何通过MVCC
+ Undo Log
,解决幻读的。
1. Undo Log是什么
1.1 简介
Undo Log
:
undo
意为取消,以撤销操作为目的,返回指定某个状态的操作
undo log
指事务开始之前,在操作任何数据之前,首先将需操作的数据备份到一个地方 (Undo Log
)
UndoLog是为了实现事务的原子性而出现的产物
Undo Log
实现事务原子性:
事务处理过程中如果出现了错误或者用户执行了 ROLLBACK
语句,MySQL可以利用Undo Log
中的备份将数据恢复到事务开始之前的状态
Undo Log
在MySQL Innodb存储引擎中用来实现多版本并发控制
Undo log
实现多版本并发控制:
事务未提交之前,Undo保存了未提交之前的版本数据,Undo 中的数据可作为数据旧版本快照供其他并发事务进行快照读
1.1 案例
如