原子性实现原理(undo log)
-
Undo Log是为了实现事务的原子性,在MySql数据库InnoDB存储引擎中,还用Undo Log来实现多版本并控制(MVCC)。
-
在操作任何数据之前,首先将数据备份到一个地方(这个存储数据备份的地方称为Undo Log)。然后进行数据的修改。如果出现了错误或者用户执行了ROOLBACK语句,系统可以利用Undo Log中的备份将数据恢复到事务开始之前的状态。
-
注意:undo log是逻辑日志,可以理解为:
- 当delete一条记录时,undo log中会记录一条对应的insert记录
- 当insert一条记录时,undo log中会记录一条对应的delete记录
- 当update一条记录时,他记录一条对应相反的update记录
持久性实现原理(redo log)
- 在事务提交前,只要将Redo log持久化即可,不需要将数据持久化。当系统崩溃时,虽然数据没有持久化,但是redo log已经持久化。系统可以根据redo log的内容,将所有数据恢复到最新状态。