Mysql-事务与Redo Log、Undo Log

一 Undo Log

Undo Log是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版本并发控制(简称:MVCC)。数据库

1   事务的原子性(Atomicity)

事务中的全部操做,要么所有完成,要么不作任何操做,不能只作部分操做。若是在执行的过程当中发生了错误,要回滚(Rollback)到事务开始前的状态,就像这个事务历来没有执行过。并发

2   原理

Undo Log的原理很简单,为了知足事务的原子性,在操做任何数据以前,首先将数据备份到一个地方(这个存储数据备份的地方称为Undo Log)。而后进行数据的修改。若是出现了错误或者用户执行了ROLLBACK语句,系统能够利用Undo Log中的备份将数据恢复到事务开始以前的状态。spa

除了能够保证事务的原子性,Undo Log也能够用来辅助完成事务的持久化。事务

3   事务的持久性(Durability)

事务一旦完成,该事务对数据库所作的全部修改都会持久的保存到数据库中。为了保证持久性,数据库系统会将修改后的数据彻底的记录到持久的存储上。ci

1)    用Undo Log实现原子性和持久化的事务的简化过程

假设有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.事务提交

相关文章
相关标签/搜索