Undo | Redo

2018-03-23  本文已影响0人  邱杉的博客

undo 记录原始数据、保证原子性(回滚到原始数据)
redo 记录新数据、保证持久性
undo、 redo 都是缓存在内存中,需要落地到硬盘中
undo、 redo 通过缓存,减少事务中的数据 IO。同时引入了 undo、 redo 持久化时的 IO

Undo log

事务中有两种类型的数据

start transaction 时,原始数据记录到 undo log 中
修改数据时,数据状态发生改变
commit 前,undo log 持久化到磁盘、数据修改后的状态持久化到磁盘

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

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

缺陷:每个事务提交前将数据和Undo Log写入磁盘,这样会导致大量的磁盘IO,因此性能很低。

如果能够将数据缓存一段时间,就能减少IO提高性能。但是这样就会丧失事务的持久性。因此引入了另外一
种机制来实现持久化,即Redo Log。

Redo log

恢复(Recovery)

上一篇 下一篇

猜你喜欢

热点阅读