标签:
Mysql 的InnoDB存储引擎实现的不是简单的行级锁,实现的是MVCC,多版本并发控制,可以理解成行级锁的一个变种。
InnoDB的MVCC是通过在每行纪录后面保存两个隐藏的列来实现的。
这两个列,一个是保存了行的创建时间,一个是保存了行的过期时间(删除时间),时间是用的系统的版本号来存储的。
在select时,InnoDB会根据两个条件组合检查每行纪录:
a、InnoDB只查找版本号小于等于当前事务版本号的数据行,这样可以确保这些读取的行,
要么是在这个事务开始前已经存在的,要么是在这个事务中插入或者修改过的。
b、行的删除行要么没定义,要么大于这个事务的版本号,这样可以确保事务读到的行,在事务开始之前未被删除。
只有同时满足这两个条件的数据行,才能作为返回的查询结果。
在Insert时,InnoDB为新插入的数据保存当前的版本号作为创建时间。
在Update时,InnoDB为更新这行数据的创建时间为当前版本号,同时保存当前版本号到
标签:
原文地址:http://www.cnblogs.com/huanjueshacha/p/5655922.html