MySQL解决幻读问题
今天复习到了MySQL章节的事务这里的时候,看到了一篇文章《MySQL 默认隔离级别是RR,为什么阿里等大厂会改成RC?》MySQL 默认隔离级别是RR,为什么阿里等大厂会改成RC? - 知乎 (zhihu.com)然后点进去一看,发现上面写了RR是可以解决幻读问题的,突然就发现和我刚刚看到的黑马的MySQL只有串行化才能解决幻读问题有了冲突,然后就激发起了我的兴趣,就开始疯狂的找相关的文章。看了大概七八份博客和文章之后我来总结一下。大概就是说RR可以解决幻读的问题。我个人理解大多数的说法是:因为在RR隔离级别下,正常的RR是无法解决幻读的,但是innoDB还用了间隙锁的机制,使用间隙锁就可以锁住数据之间的间隙,数据库也就无法进行insert和delete的操作,从而解决了幻读的问题。参考文章:10个人有9个答错,另外1个只对一半:数据库的锁,到底锁的是什么? (qq.com)。但是也同时存着一种说法即:MySQL使用innoDB独有的MVCC版本控制的机制来解决幻读问题的,因为RR模式下,每当开启事务的时候会生成一个readview(快照),,每次读取readview来保证数据的可见性即可,不需要依赖锁机制来保证。参考文章:从一个问题出发,搞懂MySQL MVCC、readview、快照读和undo log是什么鬼-阿里云开发者社区 (aliyun.com)
我更加偏信第一个使用间隙锁来解决幻读,因为不仅是因为说的人更多,更可能是因为我更好理解吧。。。
不知道有没有大佬可以指点一下RR是怎么解决幻读问题的。
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
内容推荐
我想问一下大家简历的字体是多少号的呢,是2页还是3页
2
入职有两三周了,现在在做项目的一些比较杂的需求,前后端都有。但是技术栈我完全不熟,以前用的是Java相关的,现在这个项目用的是python开发。现在我基本只会用Claude code完成这些需求,感觉目前只会使用AI,对它产出的东西我做不了任何的判断,而且自己摸索着做效率也不高,感觉以前学的东西没法运用起来。感觉自己没学到什么,也不知道自己下一步应该怎么去继续提升?大家有什么好办法吗,我之前也没有
3
xdm黑马点评的访问路径中的/api/从哪里来的?
1
使用 claude code 遇到的问题
3
请问对于这里的项目有什么好的学习方方法吗?我有编程基础,但项目经验几乎没有,想业余时间做项目。
1
