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为起点开始恢复。