MySQL 可重复读隔离级别(RR级别)是否可以避免幻读

在MySQL的A客户端中查看事务隔离级别(默认是RR级别)
在这里插入图片描述
在客户端A开启事务,并查看trax_learn表。
在这里插入图片描述
新开一个客户端B,在trax_learn表中添加一条新数据
在这里插入图片描述
再次在客户端A中查看trax_learn表,发现,仍然是只有两条记录的。
在这里插入图片描述
在客户端A提交事务。commit,并再次查看。
在这里插入图片描述
发现在客户端B中插入的数据显示出来了,说明客户端A在事务执行期间,客户端B对该表的操作并不会对客户端A有影响,避免了幻读。
出现这种情况的主要原因是因为普通的select语句是快照读,而事务A启动时,它的快照数据就已经被版本锁定了。 如果将事务A调整为当前读,就会产生幻读。

所以说InnoDB的RR隔离级别解决了幻读问题或没解决都不太准确。应该说它并没有完全解决幻读的问题。

猜你喜欢

转载自blog.csdn.net/weixin_45930241/article/details/123533556