不可重复读和幻读不是一个东西,楼上WMG-Eight已经解释了,我再详细解释一下:
不可重复读问题:这是由于查询时系统中其他事务修改的提交而引起的。比如事务T1开启,查询表字段a=1,此时事务T2开启修改字段a=2并提交,事务T1再次查询得到结果a=2,在同一个事务中查询两次结果不同,无法重复,所以叫不可重复读。
幻读:事务T1开启查询某个表A的count=2,此时事务T2开启向A表中插入一条数据并提交,事务T1再次查询A表count=3,第二次多读出一条记录。
next-key locking:简单来说就是将自己查询过程中所见到的那些行,全部都锁住,所以以上两个问题都没了。
不可重复读 是对同一条数据来说的,主要是修改,比如修改了某些字段值,导致多次读同一条数据不一样。
幻读 是对一个范围内的数据,主要是新增或删除,导致查询出来的数据数量不一致。
你可以搜下,有很多详细的解释的文章。。。。
后面再细看吧,应该是底层实现锁的机制不同
你可以查阅一些MySQL的隔离级别(读已提交、读未提交、可重复读、串行读)资料;
你上面说的不可重复读和幻读,是不同隔离级别下的现象,除此之外,还有脏读、可重复读