所有的select查询操作都是属于快照读,快照读通过mvcc+undolog(乐观锁)实现,
在innodb的可重复读隔离级别下一个事务中只有第一次快照读会生成readview,之后的快照读都是使用第一次生成的readview,所以不会发生幻读。
所有的select … for update加锁读以及所有的update,insert,delete写操作都是属于当前读,当前读通过mvcc+悲观锁(行锁,间隙锁都是属于悲观锁)实现。间隙锁会阻塞其他事务对范围内的插入操作,所以不会发生幻读。
所有的select查询操作都是属于快照读,快照读通过mvcc+undolog(乐观锁)实现,
在innodb的可重复读隔离级别下一个事务中只有第一次快照读会生成readview,之后的快照读都是使用第一次生成的readview,所以不会发生幻读。
所有的select … for update加锁读以及所有的update,insert,delete写操作都是属于当前读,当前读通过mvcc+悲观锁(行锁,间隙锁都是属于悲观锁)实现。间隙锁会阻塞其他事务对范围内的插入操作,所以不会发生幻读。