范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

面试库MySQL精准打击之间隙锁

  时隔很久,又开始码字了,在最近这段时间将会给大家带来MySQL相关的面试知识点分享,从原理及面试考察点全面剖析、浓缩、提炼面试表达点。
  前言
  本次分享MySQL间隙锁及RR隔离级别情况下常见的加锁分析,那么废话不多讲直接撸起袖子干。什么是间隙锁
  间隙锁
  OK如上图所示,MySQL中的间隙锁(next-key lock)由间隙锁(gap lock)和行锁(row lock)组成。在使用过程中,会把查询范围的整个区间进行锁定,咱们可以先这样理解,后面慢慢剖析。为什么有间隙锁
  在RR隔离级别下,则有可能出现幻读(强调新增,前后两次查询结果不一致)的情况。所以在MySQL中,加入了间隙锁对当前读下的幻读进行解决。为什么会出现幻读
  我们来分析一下此时RC隔离级别+b普通索引的加锁情况:
  RC隔离级别下的幻读
  可以看到RC隔离级别下,b=5的记录加上了X锁,但是(0,5)还有(5,10)的间隙没有锁的情况,所以在这个间隙中可以插入新的数据。
  现在我就可以回答出为什么会产生幻读了。产生幻读的原因是,行锁只能锁住行,但是新插入记录的这个动作,要更新的是记录之间的"间隙"。因此,为了解决幻读的问题,InnoDB在RR隔离级别引入了新的锁,它就是间隙锁(Gap Lock)。RC隔离级别下的加锁情况
  下面进行测试表结构创建:create table `test`(   `id` int(11) NOT NULL,   `a` int(11) NOT NULL,   `b` int(11) NOT NULL,   `c` int(11) NOT NULL,   PRIMARY KEY(`id`),   UNIQUE KEY unix_key("a"),   KEY ix_key(`b`) )ENGINE=InnoDB;  insert into test values(0,0,0,0),(5,5,5,5),(10,10,10,10),(20,20,20,20);
  创建一张test表,id是主键,a是唯一索引,b是普通索引,c是没有索引。
  现在假设是在RC隔离级别下,我们来做一个实验看看:
  事务A
  事务B
  set session transaction_isolation="READ-COMMITTED";
  set session transation_isolation="READ-COMMITTED";
  begin;
  select * from test where b=5 for update;
  返回:(5,5,5,5)
  begin;
  insert into test values(6,6,5,5);
  commit; select * from test where b=5 for update;
  返回:(5,5,5,5), (6,6,5,5)
  commit;
  由上面实验得出,在RC隔离级别下,事务A对b=5这一行记录加了X锁,但是事务B插入一条新的记录的b字段也是为5,然后在事务A中可以查出b=5有两条记录,这个就产生了"幻读"。
  也就是说,幻读是指一个事务前后两次查询同一范围的时候,后一次查询看到了前一次查询没有看到的行记录。RR隔离级别下的加锁情况
  加锁分析(以下默认都是RR隔离级别并且都是当前读)
  这里我挑选出RR隔离级别下三种常见的情况进行SQL加锁分析:RR隔离级别,where字段没有索引 RR隔离级别,where字段有普通索引 RR隔离级别,where字段有唯一索引
  (1)RR隔离级别+无索引
  RR隔离级别+无索引
  上图所示,GAP锁加在c字段的(负无穷,0),(0,5),(5,10),(10,20),(20,正无穷)。但是在RR隔离级别下,我们都是默认是用next-key Lock(行锁+间隙锁),所以我们都是默认是左开右闭,同时也得知了所有的记录都加上了X锁及GAP锁(可以理解成表锁)。因此这张表在执行该SQL期间并未commit的话,除了不加锁的快照读事务,其他任何加锁的操作都将堵塞,如果是线上环境,将会是件非常有意思的事。
  总结一下:RR隔离级别下,无索引的条件字段的当前读不仅会把每条记录都加上X锁,还会加上GAP锁。
  (2)RR隔离级别+唯一索引
  唯一索引的情况是最简单的,因为不管是RC隔离级别或者是RR隔离级别,唯一索引都只能查出一条记录,只会在对应的行记录加上X锁就没了。
  为什么会这样?
  因为GAP锁的目的是为了防止同一事务被连续两次当前读,然后两次读的情况不一致。如果能够保证字段是唯一的(唯一索引),其实就是最多只有一条记录满足条件,所以查询唯一索引的时候绝对不会出现GAP锁。
  可以理解为RR+唯一索引和RC+唯一索引的加锁情况是一样的就好了。
  (3)RR隔离级别+普通索引
  RR隔离级别+普通索引
  如上图所示,普通索引字段b=10给两条记录加了X锁,并且把聚集索引树的两条记录也加了X锁。GAP锁的是b的范围(5,10),(10,正无穷)。所以next-key Lock锁的是(5,10],(10,10],(10,正无穷]。期间只要是b在next-key Lock的范围内就更新全部阻塞。
  举例:insert into test values(6,6,6,6)就会被阻塞,原因就是RR隔离级别的间隙锁锁住了记录之间的"间隙",所以会阻塞总结这次分享了RC隔离级别下出现幻读的情况,然后分析了为什么会出现幻读。 InnoDB为了解决幻读,在RR下引入了GAP锁,和行锁组成next-key Lock 分析了三种常见情况的加锁情况 操作。

原神那些冷门却强势的组合,你用过几个?随着原神的角色越来越多,可供玩家的选择也增加了,各种组合也是被玩家们玩出了新花样。大家常用的组合都是比较热门的强势组合,尤其是万能的辅助如钟离万叶等可以随意的搭配阵容。有的组合是为热血传奇新手经常犯的错误,看看大家都是否有过一样的经历传奇这款经典的RPG类游戏,可以说算得上是我人生路上第一款玩的网络游戏了,虽然已经过去了整整十多年的时间,但是提到那些年里在游戏中发生的有趣故事,依旧是历历在目。特别是在刚刚进入到勇士险胜绿军!库里3054,六犯离场,一哥关键切球,李一锤定音北京时间12月18日,NBA常规赛勇士客场挑战凯尔特人,以两队实力和战绩来看,毫无疑问勇士更强,绿军本赛季战绩糟糕,但也绝对不容小觑,双探花的实力还是非常强的,这次坐镇主场,绿军当水均益的女儿水亦诗为父母离异落泪,将小继母当闺蜜点击关注,每天都有名人故事感动您!水亦诗水亦诗是水均益与前妻王君的女儿,1993年10月出生于北京。2007年父母离异,水亦诗成了一名单亲孩子,她有过泪水与叛逆。在水均益父爱的滋润张国荣13次提名影帝,只拿了1次影帝,他都败给谁了?从1978年的红楼春上春到2002年的异度空间,张国荣在24年的电影生涯中出演了50多部电影,获得8次金像奖影帝提名5次金马奖影帝提名,共计13次提名,但只凭阿飞正传获得1次金像奖谭咏麟,婚内出轨小他20岁歌迷,诞下私生子,就此改变三人的命运01传奇巨星今年,谭咏麟71岁了,生命的蜡烛似乎也走到了最后的一段燃烧岁月。年少,谁又不知谭咏麟,他是传奇巨星。音乐事业上,香港电台的中文歌曲龙虎榜冠军歌,每周一首,谭咏麟在80年为什么大多数人宁愿买512GB的iPhone,也不舍得开2TBiCloud?升级512GB,等于开通3年的2TB云空间看到了一个很有趣的问题,一位果粉在开了2TBiCloud云空间后,发现自己256GB内存的iPhone,不管怎么用,内存占用都不会超过12Java并发编程核心理论并发编程是Java程序员最重要的技能之一,也是最难掌握的一种技能。它要求编程者对计算机最底层的运作原理有深刻的理解,同时要求编程者逻辑清晰思维缜密,这样才能写出高效安全可靠的多线程换手机的再等等,即将发布4款旗舰手机,配置能用恐怖来形容点击关注,每天精彩不断!导读换手机的再等等,即将发布4款旗舰手机,配置能用恐怖来形容!熟悉智能手机发展的人都知道,智能手机的更新换代速度一直都是比较快的,几乎每隔一个月都会有新款的花呗账号封停规则来了,这四条红线不要碰智能手机还未普及之前,人们出门时,身上总会携带着现金,有时这会给小偷可乘之机。智能手机普及之后,我国出现了两款常用的支付软件。一是支付宝,它已经获得了用户的认可,安全性能得到了大幅中方要求德企与立陶宛切割?路透社大肆炒作后,在华德企拒绝置评波罗的海小国立陶宛在台湾问题涉冬奥问题上,接连对中国发出恶意挑衅后,中方不但将两国关系降为了代办级,而且在双方贸易上也降低了优先次序,这也让不少立陶宛企业大声叫苦,因为大量出口中国
骁龙870手机大放送!从2699元跌至1599元,50倍潜望变焦144Hz屏很多人买手机会优先考虑大众品牌,像小米华为苹果等等,这些手机的产品不会有太大问题,售后服务也很到位,但是如果你愿意接受小众品牌,其实可以发现很多性价比较高的手机,比如摩托罗拉这款手红米Note11全方位体验,值不值得购买?安卓11之上的MIUI13小米红米Note11Pro5G与红米Note11四重奏的其他产品一样,使用最新的MIUI13版本启动Android11。大多数新的MIUI功能都在后台,尽还在为续航焦虑?这5款手机续航极佳,没有充电宝也能使用一整天自从进入智能手机时代以来,手机续航就一直是大家所诟病的问题,各家手机厂商经过这么多年的努力,也依然无法摆脱一天一充命运,如果是重度使用,很多智能手机甚至需要一天两充一天三充。即使这小米12pro和OPPOFindX5Pro,哪个更值得买?用了好几年的iPhone变得卡的很,于是就想尝试一下安卓手机,在小米12pro和OPPOFindX5Pro之间犹豫了很久,最终选择了OPPOFindX5Pro。两款手机配置上都差不黑洞和暗物质可能有着共同的起源太空是神秘巨物的家园黑洞的增长速度超过了科学家的预期。根据最近的一项研究,这些庞然大物的形成可能与另一个宇宙之谜暗物质有着共同的根源。天体物理学家知道,恒星的剧烈死亡可以形成黑洞,物质为什么不能超光速这个问题时间旅行者更感兴趣,不过时空在哲学上的一致性可能会让他们失望,这种一致性决定了时间的单向性。所谓的时间旅行,究竟人类未来百年可能收集的能量,看到的也许只是与现实世界并行的镜比钢硬100亿倍,宇宙中的最硬物质!此硬菜来自中子星综述世界上最坚硬的物质是什么呢?是石墨烯?金刚石?还是鲁伯特之泪?科学家告诉你,地球上发现最硬的物质名叫碳炔,它是利用双键或者交替存在的单键和三键链接的碳原子构成的,这种材料比金刚金星距离地球更近,为啥科学家不去金星,只偏爱火星呢?把太阳系八大行星由内到外排列后会发现,我们的地球排行老三,距离太阳1。5亿公里的它刚好位于太阳系宜居带内。然而在天文学上,恒星宜居带绝非是窄窄的一条固定环带,它的范围是会随着恒星的一文讲清楚黑洞黑洞是通向另一个维度的入口吗?你能利用黑洞穿越空间和或时间吗?我们生活在黑洞里吗?今天,我们将探索那些被称为黑洞的看不见的天体,并试图澄清一些非常普遍和流行的误解。什么是黑洞?很简春季,早餐这样给孩子做,钙是牛奶的10倍,简单营养又好吃春天孩子长身体快,父母都希望孩子抓住春天长个子的黄金期,那就更需要在饮食上多花心思,而早餐作为一天的开始,是一日三餐中最重要的一顿。每个父母都想给孩子做一份丰盛有营养的早餐,但是大爸爸带宝宝生完孩子,坐月子是我妈在这边照顾,我婆婆在国外一直没回来,后面出了月子也快过年,我老妈要回老家过,所以后面就是我一个人看宝宝,说实话刚开始我挺慌的,不知道一个人能不能照顾,怕他生病