MVCC:
是行级锁的一个变种;是innodb存储引擎实现事务隔离级别的一种方式;是对事务隔离级别的read-commit和repeatable-read的一种实现方式;是乐观锁的一种实现;
MVCC的实现:
通过保存数据在某个时间点的快照来实现的。这意味着一个事务无论运行多长时间,在同一个事务里能够看到数据一致的视图。根据事务开始的时间不同,同时也意味着在同一个时刻不同事务看到的相同表里的数据可能是不同的。
MVCC在innodb中的实现实现策略:
在每一行数据中额外保存两个隐藏的列:当前行创建时的版本号和删除时的版本号(可能为空,其实还有一列称为回滚指针,用于事务回滚,不在本文范畴)。这里的版本号并不是实际的时间值,而是系统版本号。每开始新的事务,系统版本号都会自动递增。事务开始时刻的系统版本号会作为事务的版本号,用来和查询每行记录的版本号进行比较。
每个事务又有自己的版本号,这样事务内执行CRUD操MVCC作时,就通过版本号的比较来达到数据版本控制的目的。MVCC