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个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
内容推荐
我是项目小白,第一次做项目。因为之前赶进度,有些基础课程跟着敲了代码有些没有,但感觉很多也遗忘了,基础比较弱。总感觉自己有点浮躁。做项目的时候,会感觉没有思路,然后就问ai,问ai这个功能要怎么实现,我该怎么思考,但是ai给了我思路,我拿到手还是不会做。因为我不知道调哪个类,用什么方法合适,然后就依赖ai给的代码,然后就一直问ai为啥为啥这么做,让ai总结笔记。还好ai不嫌我烦,只图我的钱🤣。我
3
面试鸭
0
大家在编程导航中是怎么学习项目的呀,我最近在学习 AI 网关项目 python 版本,项目本地可以跑起来,已经按照教程看了一遍了,但还是一头雾水呀,回过头来看感觉还是很生涩,看不明白。首先在学习的过程中我需要定位到源码当中去看,但是教程没法直接逐行复制,导致我必须先粘贴到记事本,然后再复制函数名,在 pycharm 中全局检索才能找到,有时候还找不到...,其次我感觉教程文字太生硬了,有种惜字如金
1
idea2025.3版本创建springboot项目时想使用springboot3的没有怎么办,我在网上查是使用spring boot4的创建后再修改pom.xml文件之后每次都要这样改吗,修改的话不止版本号要修改
2
这些个企业开发中有必要删除吗,我有时候删除了启动类就编程.java 的格式无法运行了
1
