生活工程体验信仰哲学精神
投稿投诉
精神世界
探索历史
哲学文学
艺术价值
信仰创造
境界审美
体验技术
技能工具
工程信息
医学生产
生活运用
操作能力

关于MVCC,我之前写错了,这次我改好了

8月24日 海岸线投稿
  关于MVCC的原理,在《我想进大厂》之mysql夺命连环13问写过一次,但是当时写的其实并不准确,这个理解可以应付面试,帮助快速理解,但是他的真正实现原理我想再次拿出来说一说。简单理解版
  以下先引用我之前写过的那篇中的内容,可以快速理解,建议先简单看看。
  要说幻读,首先要了解MVCC,MVCC叫做多版本并发控制,实际上就是保存了数据在某个时间节点的快照。
  我们每行数据实际上隐藏了两列,创建时间版本号,过期(删除)时间版本号,每开始一个新的事务,版本号都会自动递增。
  还是拿上面的user表举例子,假设我们插入两条数据,他们实际上应该长这样。
  这时候假设小明去执行查询,此时currentversion3selectfromuserwhereid3;
  同时,小红在这时候开启事务去修改id1的记录,currentversion4updateusersetname张三三whereid1;
  执行成功后的结果是这样的
  如果这时候还有小黑在删除id2的数据,currentversion5,执行后结果是这样的。
  由于MVCC的原理是查找创建版本小于或等于当前事务版本,删除版本为空或者大于当前事务版本,小明的真实的查询应该是这样selectfromuserwhereid3andcreateversion3and(deleteversion3ordeleteversionisnull);
  所以小明最后查询到的id1的名字还是张三,并且id2的记录也能查询到。这样做是为了保证事务读取的数据是在事务开始前就已经存在的,要么是事务自己插入或者修改的。真正原理
  事实上,上述的说法只是简化版的理解,真正的MVCC用于读已提交和可重复读级别的控制,主要通过undolog日志版本链和readview来实现。
  每条数据隐藏的两个字段也并不是创建时间版本号和过期(删除)时间版本号,而是rollpointer和trxid。
  rollpointer指向更新事务之前生成的undolog,undolog用于事务的回滚,保证事务的原子性。
  trxid就是最近一次更新数据的事务ID。
  以上述例子来举例,最初插入两条数据,真实的情况是这样,因为第一次插入数据没有undolog,所以rollpointer指向一个空的undolog。
  这时候假设小明去执行查询,就会开启一个readview,readview包含几个重要的东西。mids,就是还未提交的事务id集合lowlimitid,mids里最小的值uplimitid,下一次生成事务ID最大值creatortrxid,创建readview的事务ID,也就是自己的事务ID
  小明来执行查询了,当前事务ID3selectfromuserwhereid3;
  小红在这时候开启事务去修改id1的记录,事务ID4updateusersetname张三三whereid1;
  这时候小明的readview是这样。mids〔3,4〕
  lowlimitid3
  uplimitid5
  creatortrxid3
  所以,小明在执行查询的时候,会去判断当前这条数据的trxid
  这时候,小红的修改也完成了,小红数据于是就变成了这样。
  如果小明再次去查询的话,就会发现现在的trxidreadview的lowlimitid,也就是43,不符合条件,同时发现现在的trxid4在lowlimitid和uplimitid〔3,5〕之间,并且trxid4在mids〔3,4〕之中,所以就会根据rollpointer指向的undolog去查找,trxid1小于现在的lowlimitid3,符合条件,就找到了上一个版本name张三的记录。
  如果这时候小明自己去修改这条记录的值,把名字改成张五,结果就是这样。
  然后小明去查询的话,就会发现当前的trxid3就是自己的creatortrxid,就是自己,那么就直接返回这条数据。
  所以,我们可以先总结下几种情况:如果trxidlowlimitid,那么说明就是之前事务的数据,直接返回,也就对应了小明第一次开启事务查询的场景如果trxidlowlimit,trxid还在〔lowlimitid,uplimitid〕范围之内,并且trxid在mids中,就会根据rollpointer去查找undolog日志链,找到之前版本的数据,对应的就是小红修改后小明再次查询的场景如果trxidcreatortrxid,那么说明就是自己修改的,直接返回就好了,对应的就是小明自己去修改数据的场景不同隔离级别的实现
  根据上面阐述的原理,你可能发现了,这是可重复读下的实现啊,保证每次读取到的数据都是一致的。
  那么,如果是读已提交级别下,这个是怎么实现的?
  其实很简单,在上面的原理解释中,我都是假设每次查询的时候生成了readview,后续并没有重新生成。
  而读已提交级别下,则是每次查询都会生成一次readview。
  以上述小红修改过张三后的场景来举例。
  在可重复度级别下,由于trxidlowlimit,trxid还在〔lowlimitid,uplimitid〕范围之内,并且trxid在mids中,满足我们上述的条件2,所以就会根据rollpointer找到之前的版本记录,保证可重复读。
  而在读已提交的级别下,重新生成了readview,这时候trxid不在mids之中,说明事务已经提交,所以可以直接返回这条数据,所以查到的数据就是小红修改后的name张三三的数据了。总结
  我是艾小仙,我承认我浪了,我之前居然还想浪,我以为年没过几天,结果发现最近一次技术文更新是在2月2号。
  我哭,所以,我肝了3个小时,痛定思痛,结束了我的短暂的王者生涯。
  大家觉得还行的话,点个在看,设个星标可好?
  我要回到正常更新的频率中来。
  END
投诉 评论

原创散文诗碎碎,是郎心情流出的泪拼成的一朵带毒的奇葩。碎,是郎的初恋殂谢后的灵柩。碎,是一盏离愁,破了郎编织千年的镜花水月。碎梦碎了,郎醒了。于是,记忆深处那落满尘埃的畴……等枫来,没想到我的姐姐上映至第二天票房过亿,知道为什么吗如果问小编2021年初对哪部新上映的影片印象深刻,那应该是《你好,李焕英》,这部影片可谓是赚足了观众的眼泪,现在又有一部影片接过了《你好,李焕英》的催泪接力棒,那就是由张子枫主……朱熹的崩盘告诉我们,道德经中这种办法才是修身的不二法门假如朱熹活在现代社会会怎样?如果不出意外,他一定会焦虑致死,图书市场每天都会生产上百种新书,网络平台上有永远学不完的课程,甚至仅仅朋友圈里的信息,都会让你身心俱疲,难以招架。……关于MVCC,我之前写错了,这次我改好了关于MVCC的原理,在《我想进大厂》之mysql夺命连环13问写过一次,但是当时写的其实并不准确,这个理解可以应付面试,帮助快速理解,但是他的真正实现原理我想再次拿出来说一说。……马伊琍穿衣真任性!穿喇叭裤配双拖鞋走机场,看似随意却很时髦今年复古风刮很大,上世纪七八十年代流行的喇叭裤如今又卷土重来,成为潮人们人手必备的时尚单品,紧贴臀部的设计勾勒优美的臀腿线,下摆大大的裤腿走路时随风摆动,营造潇洒帅气的大气场,……最佳前女友邓丽欣!和王子分手后仍点赞,曾说方力申是最好的男孩前不久,邓丽欣和王子(邱胜翊,组合棒棒堂成员)毫无预警地宣布分手,让人大感错愕。邓丽欣和王子相恋3年,这对相差6岁的姐弟恋在公众面前一直甜甜蜜蜜,却无奈还是分手告终。……不知道从什么时候,衣着暴露成了博眼球的方式,柳岩太敢穿了不知道娱乐圈从什么时候,明星衣着暴露成了博取眼球的一种方式,不管是什么活动都可以看到衣着暴露的明星,深v,透视装层出不穷。例如:霍思燕出席活动深v照片陈乔恩出……比姚明还高的巨人鲍喜顺,不顾阻拦执意生娃,如今孩子怎样了大家都知道篮球是高个运动,在全球关注度最高的美国职业篮球联盟中,2米往上的大高个随处可见,而中国篮坛此前也出了一位极具国际影响力的球员,他就姚明。姚明身高2米26,曾被人……错换事件有人说不要查了,查不出来的,网友相信真相早晚会来有人说有人说错换人生事件,事情圆满了,不要查了,查不出来的,看了一些图片,让人沉默刚刚庭审结束,结果还没有公布,据说有媒体采访杜妈,好像是一些大的媒体,和许妈站在一起的,……饭圈的双向奔赴肖战与小飞侠END饭圈,对于很多喜欢肖战的人来说,是一个陌生的地方,陌生到没有特殊的遭遇就不会知道它的存在。例如两年前的我,财政是职业,文字是爱好,没事的时候喜欢的剧追,喜欢的影看,……安妮海瑟薇的过去和现在好莱坞最甜蜜的公主(第2部分)不仅是公主,安妮海瑟薇还被称为家庭爱情喜剧的女神。LoveOtherDrugs(2010)是安妮展示她的强项和迷人外表的新机会。她和演员杰克吉伦哈尔在整部电影中都有许多可爱的场……你喜欢灵异故事么?短小精悍细思极恐的日本恐怖片《怪谈新耳袋之百物语》是一部日本怪谈传说,它是怪谈新耳袋系列最高分的电影,电影由九个小故事组成,每个小故事的时间只有四五分钟,短小精悍。我挑出来两个代表性的给大家介绍一下。……
精灵旅社天下父亲的女儿心结其实最令我难过的是,你不快乐超准!男生变心前的3种征兆10年后爱上是权衡利弊?迪丽热巴告诉我们实力之上,爱更纯粹新晋小花被爆哭戏全靠眼药水,手法娴熟,网友送她三个字处处滴清华眯眯眼毁三观被骂上热搜,可是这次却再也无人为其发声TVB老艺人口罩短缺?古天乐急觅2万只口罩,助解燃眉之急曾毅录制节目受伤,玲花全程冷漠,凤凰传奇即将决裂?看婆媳关系如何解决,爱我就别想太多中演夏可可的李一桐教你未播先火,胡歌唐嫣12年后再次合作,新剧繁花你期待吗?国漫之光,比起斗罗斗破,这部动漫系列才更堪称国漫巅峰特效烧了好几亿的刺杀小说家,值得看么?我嫁给了一个太监(4)土地使用权来源为转让是什么意思?北伐第一军(黄埔学生军)战斗序列详述将领名单及个人简介水浒传第五十六回读后感分享翟美卿:寻求公益和金融最佳结合点唠叨妈妈的爱作文为什么大连的二手房挂牌量那么多?流通性这么差房主为什么不降价给不了安全感的男人的说说远离护肤误区踢爆个错误去黑头方法C罗可乐梗引球员竞相模仿欧足联急了不能再移走饮料46岁周迅坐地铁被偶遇,被赞肤白貌美状态佳,与同行井柏然阿雅职务犯罪侦查阶段取保候审强制措施规范化研究散文椿芽短椿香长

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找