天天看点

Mysql InnoDB 事务简单理解

1. 事务基本特性: ACID

A 由undo 来实现的

I 由锁实现

D 由redo实现

C 由AID共同保证

2. undo 实现了 事务的回滚 以及 MVCC

事务的回滚: 记录下事务期间的所有Update/Delete/Insert操作的前后value,当需要rollback时会做一个相反的操作。

MVCC:undo恰好记录下了事务期间的快照信息,当Update/Delete/Insert占用某行记录需要被读取时,可以根据事务级别读取undo中的快照信息( read_committed模式下读取的是最新快照;Repeatable Read模式下读取的是事务开始点的快照)。

3. 锁 实现了 事务操作的隔离

Update/Insert/Delete/Select ...for Upadate 操作的同一行Record,会通过锁排序处理

Select与 Update/Delete 操作的同一行Record,会通过MVCC来实现互相不冲突。简单来说就是Select的时候发现某行处于加锁状态,会读取该行的undo信息读取当前事物级别匹配的快照。

4. redo 实现了事务的持久性

简单来说就是redo日志文件会保存下当前的所有操作,当出现系统崩溃,系统重启时会以当前redo日志文件中checkpoint为起点开始恢复。

继续阅读