Innodb 之 Undo log 作用

Undo log 是 MySQL Innodb 引擎中最重要的一个组成部分,它的作用贯穿于 Innodb 两个最主要的部分:并发控制(Concurrency Control)和故障恢复(Crash Recovery)。

undo log 的作用:

  1. 事务回滚
    undo log 记录了数据修改之前的历史值。故障发生时,为了保证原子性,恢复线程执行 undo log,将数据还原到之前的状态。
  2. MVCC 多版本并发控制(Multi-Versioin Concurrency Control)
    通常知道,并发环境下,修改数据需要加写锁,写锁和任何锁都冲突,即写锁和读锁。提高并发访问能力的手段之一,就是避免只读事务和写事务之间的冲突。新的写入,新增一个版本号。为每条记录保存多份历史数据,供读事务访问。而只读事务,通过 undo log 回溯到可见的历史版本。Innodb 复用了 undo log 已经记录的历史版本,来满足 MVCC 的需求

MySQL · 引擎特性 · 庖丁解InnoDB之UNDO LOG

上一篇:使用egg-mysql操作MySQL数据库


下一篇:undo 日志