不可重复读一般在读未提交,读已提交这两种隔离级别出现,第一次读和第二次读的数据不一致。
幻读一般在读未提交,读已提交,可重复读出现,原因是第一个事务执行时,第二个事务完成了提交,在第一个事务读取的数据中间插入或删除了一些数据,进而造成的第一个事务第二次读取时数据中间多了或者少了一部分数据。
两者比较易混淆:
不可重复读的重点是修改,幻读的重点在于新增或者删除。
而脏读只能在读未提交的隔离级别下发生,事务1修改了一些数据,但是在他提交之前,另外一个事务读取了事务1修改的数据,但是事务1产生了回滚,那么就发生了脏读。
续集:
mysql的四种隔离级别