UndoLog
基本
Undo:意为撤销或取消,以撤销操作为目的,返回某个状态的操作。
Undo Log: 数据库事务开始之前,会将要修改的记录放到Undo日志里,当事务回滚时或者数据库崩溃时,可以利用UndoLog撤销未提交事务对数据库产生的影响。
Undo Log的产生和销毁: Undo Log在事务开始前产生; 事务在提交时,并不会立刻删除undo log,innodb会将该事务对应的undo log放到删除列表中,后面会通过一个后台线程purge thread进行回收处理。 Undo Log属于逻辑日志,记录一个变化过程。 例如执行一个delete,undo log会记录一个insert; 执行一个update, undolog会记录一个相反的update
Undo log的作用
-
实现了事务的原子性
Undo log 是为了实现事务的原子性的产物。 事务处理过程中, 如果出现了错误或用户执行了RoLLBack 语句,mysql可以利用undolog中的备份将数据恢复到事务开始之前的状态。
-
实现多版本并发控制(MVCC)
Undolog 在mysql innodb存储引擎中用来实现多版本并发控制。 事务未提交之前,undolog保存了未提交之前的版本数据,undolog中的数据可作为数据旧版本快照供其他并发事务进行快照度。