mysql事务RR隔离级别到底能否解决幻读的问题?
在mysql的innodb引擎 默认RR隔离级别下, 假设表中有5条数据,
1.如果事务A中查询所有数据
2.然后在事务B中向表中插入一条数据并提交
3.回到事务A中查询, 发现数据没有新增
上面三步貌似已经可以证实解决了幻读的问题
但是如果在第三步不是查询, 而是插入, 却会提示你数据已经存在出现主键冲突, 或者你进行update, 也是可以进行更新的(虽然读不到这条数据) 这应该不属于幻读了吧?
那么这到底是什么原因呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这个推荐一篇文章吧,希望能解决你的困惑,写的还是挺详细的:
拨开云雾见天日:数据库单机事务原理全解析
RR在读取数据,事务开启的时候,不允许修改操作。可以解决不可重复读的问题,但是还是不能根本解决幻读问题。幻读对应的应该是insert操作。RR针对的是update操作。