幻读理解不是很透彻

来源:5-26 【扩展与练习】关于 MySQL 事务隔离级别的介绍及作业

徐憨憨

2020-06-11

mysql版本是5.5
隔离级别设置 Repeatable Read
1.事物A 查询表user 2. 事物B 在user表中新增或者删除几条数据 提交事物(commit)
3.事物A再次查询user表 不会查找到新增或者删除的数据,与两次查询中数据不一致感觉有点矛盾 ,( 实际上事物B已经新增或者删除了数据 ) 结果事物A查到的结果中 没有新增或者删除的数据。
幻读可不可理解为 一个事物新增或者删除数据并提交,另一个事物看不见新增的数据或者删除的数据
希望老师帮忙解答下

写回答

2回答

张勤一

2020-06-11

同学你好:

    首先来说,你的 MySQL 版本有点低(不过不影响使用),建议升级到 5.7 版本;另外,隔离级别的话,企业级开发都是使用“提交读”,而不会使用“可重复读”。

    “可重复读”不能解决幻读的问题,幻读的定义是:如果另一个事务同时提交了新数据,本事务再更新时,就会“惊奇的”发现了这些新数据,貌似之前读到的数据是“鬼影”一样的幻觉。

    所以,也就是你问题里描述的情况。你可以简单的认为:“可重复读”就是在一个事务里面读取的数据都是一样的。


    欢迎来 QQ 群随时交流、讨论,也非常感谢同学的支持!

2
2
徐憨憨
非常感谢!
2020-06-11
共2条回复

兔头咖啡

2020-06-11

你的理解反了
同一事务中,两次查询中数据不一致  才是幻读
一致,就是解决了幻读

2
0

Spring Cloud微服务架构 设计实现广告系统

广告营销系统,未来大中型企业的标配

2136 学习 · 927 问题

查看课程