多版本并发控制(MVCC)

MVCC是行级锁的一个变种,在很多情况下避免了加锁操作,开销很低,虽然实现机制不同,大多实现了非阻塞的读操作,写操作也只锁定必要的行
InnoDB的MVCC,是通过在每行记录后面保存两个隐藏的列来实现的。这两个列,一个是行的创建时间,一个是行的过期时间或删除时间。当然存储的并不是实际的时间值,而是系统版本号(system version number)。每开始一个新的事务,系统版本号都会自动递增。事务开始时刻的系统版本号会作为事务的版本号,用来和査询到的每行记录的版本号进行比较
大多数读操作都可以不用加锁
MVCC只在’提交读’和’可重复读’这两个级别下工作

MVCC 维护版本号
insert:InnoDB为这个事务中新插入的行,保存当前事务版本号的行作为行的行创建版本号
delete:InnoDB为每一个删除的行保存当前事务版本号,作为行的删除标记
update:将存在两条数据,保持当前版本号作为更新后的数据的新增版本号,同时保存当前版本号作为老数据行的更新版本号

你可能感兴趣的:(MySQL)