Undo Log是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版本并发控制(简称:MVCC)。数据库
事务中的全部操做,要么所有完成,要么不作任何操做,不能只作部分操做。若是在执行的过程当中发生了错误,要回滚(Rollback)到事务开始前的状态,就像这个事务历来没有执行过。并发
Undo Log的原理很简单,为了知足事务的原子性,在操做任何数据以前,首先将数据备份到一个地方(这个存储数据备份的地方称为Undo Log)。而后进行数据的修改。若是出现了错误或者用户执行了ROLLBACK语句,系统能够利用Undo Log中的备份将数据恢复到事务开始以前的状态。spa
除了能够保证事务的原子性,Undo Log也能够用来辅助完成事务的持久化。事务
事务一旦完成,该事务对数据库所作的全部修改都会持久的保存到数据库中。为了保证持久性,数据库系统会将修改后的数据彻底的记录到持久的存储上。ci
假设有A、B两个数据,值分别为1,2。it
A.事务开始.原理
B.记录A=1到undo log.数据
C.修改A=3.备份
D.记录B=2到undo log.co
E.修改B=4.
F.将undo log写到磁盘。
G.将数据写到磁盘。
H.事务提交