mysql mvcc 实现原理

0 概述

mvcc(multiversion concurrency control )多版本并发控制;用于多事务环境下,对数据读写在不加读写锁的情况下实现互不干扰,从而实现数据库的隔离性。
在这里插入图片描述

1 事务特性

事务四种特性如下图所示:undo log是回滚日志,提供回滚操作。
mysql mvcc 实现原理_第1张图片

2 mvcc 实现原理

mvcc 在mysql Innodb 得到支持,Innodb为每行记录都增加了三个字段。mysql mvcc 实现原理_第2张图片

  • 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的事务链表中,当事务提交成功后,事务链表就会移除该事务。

你可能感兴趣的:(数据库)