可以认为MVCC是行级锁的一种变种,但是他在很多情况下避免了加锁操作,mvcc的实现是通过保存某个时间点的快照来实现的。
innodb的mvcc是通过在每行记录后面保存两个隐藏列来实现的,通过修改标志位来实现版本的控制。
start transaction1
select * from tablea;
select sleep(1000);
select * from tablea;
end transaction1;
第一个事务启动随后启动第二个事务;
start transaction2
delete from tablea where xxxx;
end transaction2
tracsaction1 按照高性能关于mvcc的描述第二次查询已删除行的系统版本号高于当前系统版本号,所以不能被检索出来,这不是违背了可重复读的原则了吗?
阅读(617) | 评论(0) | 转发(0) |