zuizui
zuizui
 这里容易误导新手,写清楚了
我觉得 RR级别下,没有严格的做到解决幻读问题!
RR级别下 幻读例子 Mysql官方给出的幻读解释是:只要在一个事务中,第二次select多出了row就算幻读。 1.a事务先select,b事务insert确实会加一个gap锁,但是如果b事务commit,这个gap锁就会释放(释放后a事务可以随意dml操作), 2.a事务再select出来的结果在MVCC下还和第一次select一样, 3.接着a事务不加条件地update,这个update会作用在所有行上(包括b事务新加的), 4.a事务再次select就会出现b事务中的新行,并且这个新行已经被update修改了 其实这和事务中,先查,再修改记录,然后再查,结果出现不一致,是差不多的场景,但是在RR级别下,同一个事务内,应该不能叫脏读! #为啥只要 进行了update 等加X锁操作,就会使得MVCC版本失效,或者变化呢 ,求大神解答? 猜想:只要获取了记录的行锁,mysql innodb 自动会将当前操作完的版本,和对应的变更刷新到最新的版本上。再次查询 会获取最新的行记录