0 概述
mvcc(multiversion concurrency control )多版本并发控制;用于多事务环境下,对数据读写在不加读写锁的情况下实现互不干扰,从而实现数据库的隔离性。
1 事务特性
事务四种特性如下图所示:undo log是回滚日志,提供回滚操作。
2 mvcc 实现原理
mvcc 在mysql Innodb 得到支持,Innodb为每行记录都增加了三个字段。
- DB_TRX_ID,占用6个字节,记录插入或更新该行的最后一个事务的事务 ID
- DB_ROLL_PTR ,占用7个字节,指向改行对应的 undo log 的指针
- DB_ROW_ID ,占用6个字节,AUTO_INCREMENT 的主键 ID。如果InnoDB自动生成聚集索引,则该索引包含行ID值。否则,DB_ROW_ID列不会出现在任何索引中。
当前活跃的事务链表 (执行begin,但是还没有commit的事务)保存到一个叫trx_sys的事务链表中,当事务提交成功后