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个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
内容推荐
本人40出头,有加拿大海外工作经历,曾任职谷歌、IBM、甲骨文,雅思8.5,英语流利。早期做前端React、Angular,php,遭遇裁员后转型Java,至今2年,现于大连大型外企远程居家办公,年薪21‑22w,对于项目的话,是本人签了三年合同,已经在这工作了一年多了,然后公司的项目是一年一签,如果项目没有,就容易被裁员;过往月薪可达4.5w,多次裁员后薪资持续下滑,不考虑去南方发展。当前工作主
3
大佬们有人懂php吗?我部署了一个discuz5.0,用的php8.1,但是用着用着出现这个,这个要怎么解决有大佬知道吗?
1
大佬们,想知道webstorm怎么配置eslint和prettier,网上试了两三种都没有成功[流泪]
0
Day 1✅ 今天做了:⏰ 明天计划:📚 今日感悟:
1
我是项目小白,第一次做项目。因为之前赶进度,有些基础课程跟着敲了代码有些没有,但感觉很多也遗忘了,基础比较弱。总感觉自己有点浮躁。做项目的时候,会感觉没有思路,然后就问ai,问ai这个功能要怎么实现,我该怎么思考,但是ai给了我思路,我拿到手还是不会做。因为我不知道调哪个类,用什么方法合适,然后就依赖ai给的代码,然后就一直问ai为啥为啥这么做,让ai总结笔记。还好ai不嫌我烦,只图我的钱🤣。我
3
