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个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
Nafiyil
内容推荐
物流智能体工程师-基于浏览器操作的多平台箱号查询与表单提交方案
3
突然有点迷茫了,本科毕业4年,专业是计算机类,干过客服、干过技术支持,现在在干巡查性质的工作,下完班回来能抽个两三小时学习,目前学完了Java基础、面向对象、集合、异常、IO流、线程等内容,也完成了Mysql的语法学习、知道了索引、事务相关的内容。现在正在攻略学习路线里的SQL之母的自定义关卡(实战进阶),进度完成了2/3,到明天就能结束SQL部分的学习。我三年前找过王道培训班学的Java后端,但
5
问题描述我们评测一个功能是否正确,应该怎么写测试呢?特别是在AI时代,不人工review代码的情况 如何更好的使用测试来验收代码呢具体疑问平时都用AI写代码,随着需求增加,每次生成的代码都看不过来,只能借助AI生成测试来验收一下。但是测试也是AI生成的,我并不知道AI生成的测试是否符合我的需求,我也不太清楚,应该生成哪几种类型的测试才能更好的评估我们开发的功能。已有理解目前让AI写的有单元测试,集
4
想问一下大家,之前是在星球上充值了,然后俩年前没续费了,最近想学习所以在原来星球上续费了,发现没有人和项目提问和更新,才发现编程导航现在单独有一个网站,续费的会员不会同步吗
0
我想问一下大家简历的字体是多少号的呢,是2页还是3页
2
下载 APP