专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

一条update语句引发的现场事故!

  昨晚在群划水的时候,看到有位读者说了这么一件事。
  大概就是,在线上执行一条update语句修改数据库数据的时候,where条件没有带上索引,导致业务直接崩了,被老板教训了一波
  这次我们就来看看:为什么会发生这种的事故?又该如何避免这种事故的发生?
  说个前提,接下来说的案例都是基于InnoDB存储引擎,且事务的隔离级别是可重复读。为什么会发生这种的事故?
  InnoDB存储引擎的默认事务隔离级别是可重复读,但是在这个隔离级别下,在多个事务并发的时候,会出现幻读的问题,所谓的幻读是指在同一事务下,连续执行两次同样的查询语句,第二次的查询语句可能会返回之前不存在的行。
  因此InnoDB存储引擎自己实现了行锁,通过nextkey锁(记录锁和间隙锁的组合)来锁住记录本身和记录之间的间隙,防止其他事务在这个记录之间插入新的记录,从而避免了幻读现象。
  当我们执行update语句时,实际上是会对记录加独占锁(X锁)的,如果其他事务对持有独占锁的记录进行修改时是会被阻塞的。另外,这个锁并不是执行完update语句就会释放的,而是会等事务结束时才会释放。
  在InnoDB实务中,对记录加锁带基本单位是nextkey锁,但是会因为一些条件会退化成间隙锁,或者记录锁。加锁的位置准确的说,锁是加在索引上的而非行上。
  比如,在update语句的where条件使用了唯一索引,那么nextkey锁会退化成记录锁,也就是只会给一行记录加锁。
  这里举个例子,这里有一张数据库表,其中id为主键索引。
  假设有两个事务的执行顺序如下:
  可以看到,事务A的update语句中where是等值查询,并且id是唯一索引,所以只会对id1这条记录加锁,因此,事务B的更新操作并不会阻塞。
  但是,在update语句的where条件没有使用索引,就会全表扫描,于是就会对所有记录加上nextkey锁(记录锁间隙锁),相当于把整个表锁住了。
  假设有两个事务的执行顺序如下:
  可以看到,这次事务B的update语句被阻塞了。
  这是因为事务A的update语句中where条件没有索引列,所有记录都会被加锁,也就是这条update语句产生了4个记录锁和5个间隙锁,相当于锁住了全表。
  因此,当在数据量非常大的数据库表执行update语句时,如果没有使用索引,就会给全表的加上nextkey锁,那么锁就会持续很长一段时间,直到事务结束,而这期间除了select。。。from语句,其他语句都会被锁住不能执行,业务会因此停滞,接下来等着你的,就是老板的挨骂。
  那update语句的where带上索引就能避免全表记录加锁了吗?
  并不是。
  关键还得看这条语句在执行过程种,优化器最终选择的是索引扫描,还是全表扫描,如果走了全表扫描,就会对全表的记录加锁了。又该如何避免这种事故的发生?
  我们可以将MySQL里的sqlsafeupdates参数设置为1,开启安全更新模式。
  官方的解释:Ifsetto1,MySQLabortsUPDATEorDELETEstatementsthatdonotuseakeyintheWHEREclauseoraLIMITclause。(Specifically,UPDATEstatementsmusthaveaWHEREclausethatusesakeyoraLIMITclause,orboth。DELETEstatementsmusthaveboth。)ThismakesitpossibletocatchUPDATEorDELETEstatementswherekeysarenotusedproperlyandthatwouldprobablychangeordeletealargenumberofrows。Thedefaultvalueis0。
  大致的意思是,当sqlsafeupdates设置为1时。
  update语句必须满足如下条件之一才能执行成功:使用where,并且where条件中必须有索引列;使用limit;同时使用where和limit,此时where条件中可以没有索引列;
  delete语句必须满足如下条件之一才能执行成功:使用where,并且where条件中必须有索引列;同时使用where和limit,此时where条件中可以没有索引列;
  如果where条件带上了索引列,但是优化器最终扫描选择的是全表,而不是索引的话,我们可以使用forceindex(〔indexname〕)可以告诉优化器使用哪个索引,以此避免有几率锁全表带来的隐患。总结
  不要小看一条update语句,在生产机上使用不当可能会导致业务停滞,甚至崩溃。
  当我们要执行update语句的时候,确保where条件中带上了索引列,并且在测试机确认该语句是否走的是索引扫描,防止因为扫描全表,而对表中的所有记录加上锁。
  我们可以打开MySQLsqlsafeupdates参数,这样可以预防update操作时where条件没有带上索引列。
  如果发现即使在where条件中带上了列索引列,优化器走的还是全标扫描,这时我们就要使用forceindex(〔indexname〕)可以告诉优化器使用哪个索引。
  这次就说到这啦,下次要小心点,别再被老板挨骂啦。

天凉了,建议中老年人少吃韭菜生姜,多食4鲜,秋冬安康随着户外的温度越来越低,如今我们已经迎来了末秋阶段。此时风大天寒的气候特点,让人很容易出现不适应的情况。就连青壮年不注意都会抵抗不住,更别说相对脆弱的中老年人,更应该重视身体状态,女人过了30岁皮肤黄,建议涂涂这2款国货面霜,一个丰盈一个提亮女人过了30岁之后,皮肤容易出现两个问题,一个是衰老,一个是变黄。皮肤衰老也就是皮肤上的纹路变多,肤质干燥,皮肤发黄更会让人显得没精神,好似黄脸婆。这就需要我们在挑选护肤品的时候选为什么说智能手表是给老年人准备的,看完就懂了连续给父母打了10个电话都没人接,该怎么办?百善孝为先,随着年龄的增长,开始担心父母的身体健康,在老人身上尤为显著。起初也没想过给老人买智能手表,想着有电话能联系到就可以了,但是后液晶电视主板工作原理液晶电视的主板是液晶电视中重要的板块,也是科技含量较高原理较为复杂的板块之一。我们搞维修的没有必要把它的设计全部弄懂,因为其中CPU的制程也不是你该关心,但我们要把它的工作过程及关过量食水果会加速衰老虽然人体衰老的过程是不可避免的,不过,我们还是可以通过一些方式来对抗衰老,比如科学饮食。用吃进去的食物来改变体内的营养状况,然后通过外在表现出来,才是最好的。所以,想要延缓衰老,希大道至美学会用被爱来美容,别让肌肤太饥渴昨天我们分享了美容的几种方法,学习了瑜伽式伸展的按摩方法。今天与朋友们分享,学会用被爱来美容,别让肌肤太饥渴!皮肤饥饿后患无穷。皮肤饥渴症学说的创立者,美国迈阿密接触研究机构负责人大道至美天天美容院,轻松拥有好肌肤大道至简。第一天我们分享了用智慧去选择简单的方法。选择适合自己的美容方法分为三个层次脸是判断一个人的第一情报站。所以,美容先从脸开始。下面开始第二天的分享。01四两拨千斤,选对方法王者荣耀雷霆杯正式开赛,职业选手的风头,要被雷霆宝贝抢走了对于所有的王者荣耀赛事爱好者来说,在世界赛尚未正式展开,挑战者杯的比赛又刚刚结束的情况下,大家正处于比赛荒的情况下,由某牙举办的王者荣耀雷霆杯的比赛,则刚好填补了大家的空白。相信所南创科技样普平台下月上线皖企以科技之力守护生物多样性生物多样性是人类赖以生存和发展的基础。从云南野象北上巡游又快乐归来,到大熊猫受威胁程度从濒危降为易危,从消失百年的极危物种重现到第一批国家公园的成立从坚持绿水青山就是金山银山的发展荣耀畅玩40Plus曝光,双环设计玩出花样,天玑720加持?荣耀X40GT才刚刚发布,现在马不停蹄的为下一场新品发布会做准备,即将推出畅玩40Plus新机,再一次将双环影像模组玩出了花样。根据网上曝光信息显示,荣耀畅玩40Plus背部采用双荣耀畅玩40Plus真机曝光双环后摄,内置6000mAh电池IT之家10月17日消息,刚发布荣耀X40GT不久,荣耀即将推出另一款新机荣耀畅玩40Plus新机,目前该机的真机图已经在网上曝光。从多位博主曝光的图片来看,该机后摄采用了家族式的
今年短毛呢外套火了!配裙子洋气配裤子显高,超适合小个子大家印象中是不是毛呢面料大部分时候都跟大衣单品成双成对的出现呢?但是毕竟不是人人都有超模的气质和身高,能把厚重的毛呢大衣穿出质感,穿出风格的。针对撑不起来这个穿搭问题,我们可以选择儿童电动牙刷好吗?家长要警惕六大骗局误区很多家长想给宝宝们以及45岁以上的孩子小朋友选择一款合适的儿童电动牙刷,然而市场上儿童电动牙刷产品鱼龙混杂,家长们很容易掉入不良商家的宣传圈套中,购入不专业的产品,孩子一旦使用非常世界杯脱发后遗症,卡澜养发师给出护发建议世界杯来临,很多男士与女士都在家里熬夜看比赛,连续熬夜几天,不止人的精神越变越差,头发也逐渐离你越来越远,对于本就有脱发现象的人,熬夜看比赛毫无疑问会加剧这一种现象,让本已稀少的头谈,为何电商商品退货多?社会主义市场经济,本着平等公正交易的基本原则,激活开展商品交易的市场,全面促进我国经济的飞速发展,这是时代的东风,时代的脚步,时代的激流!更加促进我国現代工农商科技国防民生事业的飞微信真能查到别人的聊天记录?坐拥十多亿用户的微信仍不乏诸多槽点,其中一个就是聊天记录同步,每次换手机最麻烦的可能就是动辄十几GB甚至上百GB的聊天记录迁移了。同时不少人对于微信聊天数据的存储有所担忧,会不会某对标苹果!小米13即将发布,极窄四等边设计,颜值惊艳今天,小米13系列正式官宣!每一次小米的新旗舰,不论是外观的变化,还是硬件配置的体验,都会让我无比充满期待!今天官方已经确认,小米13系列以及MIUI新品发布会将于12月1日(周四商家溜之大吉,美团措手不及?不知大家发现没有,越来越多的门店,一模一样的套餐,抖音的团购价比美团便宜很多。堂堂美团,惨遭商家背刺,究竟发生了什么?美团遭背叛以前约三五好友到店聚餐,很多人第一反应是看看美团有没扩张元宇宙地图,扎克伯格的野心到底有多大?科幻小说雪崩描绘了一个全新的世界元宇宙。在这个运用数字技术构建的世界里,人有自己的数字化身,并相互竞争以提高自己的地位。随着5G技术的成熟和数字时代的到来,构建元宇宙的愿望和呼声越这段话写出了多少女人的心声你们知道什么叫侧切吗?就是孩子在不太好出生的时候,用一把大剪子咔嚓咔嚓一刀剪出一条大口子。都说女人是弱的男人是强的,无论是身体还是心理上,一个爱美又怕疼的女孩子,身体上被剪了一个大生二胎和不生二胎的家庭的差别,现已经开始显露现在这个社会,养娃成本是非常高的,即使国家放开了二胎三胎政策,可还是没有达到,咱们奶奶辈,那时候的生孩子的欲望,那时候一家三个孩子算少的。但是,自从放开二胎以来,也有不少的家庭动心每天一口五味子,既能强阴补精,又可消肝炎解肝毒一说到消炎养肝,大家就会想到保温杯里泡枸杞,但其实有一味药五味子,它的效果比枸杞好得多,也是治肝炎的良药。(肝炎)五味子始载于东汉神农本草经,主益气,补不足,强阴,益男子精,列为上
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网