按照高性能Mysql中的说法,mysql中每行记录会保存一个创建时的事务版本号,和一个删除时候的事务版本号,并且查找的时候查找创建版本号早于当前事务版本号的记录,并且删除版本号为空,或者删除版本号大于当前事务版本号的记录。
那么,这种情况下是如何显示的?
事务A 事务版本号1
begin
select 事务B 事务版本号2
begin
insert
select
是否事务B可以获取到事务A的insert呢?按照高性能mysql中的说法,insert的时候,新插入的行保存的是当前事务版本号,那么insert就是的版本号就是1,select查询小于2的事务版本号,应该是能够查询出来的。但是这样的话,多版本控制的获取的不照样存在幻读么?如何隔离幻读?是否是MVCC控制不了的呢?还是说有其它的机制在控制,保证RR模式下innodb保证幻读的不发生?
RR隔离级别也不能完全保证避免幻读