城市直播房产教育博客汽车
投稿投诉
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

对MySQL报警的一次分析处理小结

12月4日 生死族投稿
  这是学习笔记的第2334篇文章
  最近有一个服务出现了报警,已经让我到了忍无可忍的地步,报警信息如下:
  Metric:mysql。innodbrowlockwaitsTags:port4306,servicexxxxdiff(1):996900
  大概的意思是有一个数据库监控指标innodbrowlockwaits目前超出了阈值900
  但是尴尬的是,每次报警后去环境中查看,得到的信息都很有限,慢日志,错误日志里面都没有充分的信息可以分析,一来二去之后,我开始静下心来分析这个问题的原因。
  首先这个报警信息的时间点貌似是有些规律的,我拿着最近几天的报警时间做了比对,发现还是比较有规律的,那么在系统层面有哪些任务可能会触发呢,我查找比对了相关的任务配置,发现有一个定时任务每1分钟会执行一次,但是到了这里疑问就来了,如果每1分钟执行1次,为什么在特定的时间会产生差异较大的处理结果?当然这个现象的解释是个起始。
  其实要证明这一点还是蛮容易的,今天我就采取了守株待兔的模式,我在临近报警的时间前后打开了通用日志,从日志输出来看,操作的频率还是相对有限的。
  很快得到了规律性的报警,于是我开始抓取相关的通用日志记录,比如11:18分,我们可以采用如下的模式得到相关的日志,首先得到一个临时的通用日志文件,把各种DML和执行操作都网罗进来。
  catgeneral。loggrepEinsertdeleteupdateselectexecgeneraltmp。log
  我们以11:18分为例,可以在前后1两分钟做比对,结果如下:
  lessgeneraltmp。loggrep11:18wcl
  400hrlessgeneraltmp。loggrep11:17wcl
  666hrlessgeneraltmp。loggrep11:16wcl
  15hr发现在报警的那1分钟前后,数量是能够对得上的。
  这个表的数据量有200多万,表结构如下:CREATETABLEtaskqueue(AccIDbigint(20)NOTAUTOINCREMENTCOMMENT自增ID,TaskStepIDbigint(20)DEFAULTCOMMENT任务步骤IDtaskstepconf,QOrderint(11)DEFAULTCOMMENT队列排序taskstepconfi。StepID,QStatetinyintDEFAULT1COMMENT队列状态1:待执行2:执行中3:执行成功4:执行失败,QExcCountint(11)DEFAULT1COMMENT执行次数,CrtTimedatetimeDEFAULTCOMMENT创建时间,ModTimedatetimeDEFAULTCOMMENT修改时间,PRIMARYKEY(AccID),KEYidxtaskstepid(TaskStepID),KEYidxqstate(QState))ENGINEInnoDBAUTOINCREMENT3398341DEFAULTCHARSETutf8
  在日志中根据分析和比对,基本能够锁定SQL是在一类Update操作上面,SQL的执行计划如下:explainupdatetaskqueuesetQState1,QExcCountQExcCount1,modtimenowwhereQState0andtaskstepid411G1。rowid:selecttype:UPDATEtable:taskqueuepartitions:type:indexmergepossiblekeys:idxtaskstepid,idxqstatekey:idxqstate,idxtaskstepidkeylen:2,9ref:rows:11filtered:100。00Extra:Usingintersect(idxqstate,idxtaskstepid);UUsingtemporary
  这个执行结果中keylen是2,9,是和以往的kenlen计算法则不一样的。其中Extra列已经给出了明确的提示,这是一个intersect处理,特别的是它是基于二级索引级别的处理,在优化器层面是有一个相关的参数indexmergeintersection。
  我们知道在MySQL中主键是一等公民,而二级索引最后都会映射到主键层面处理,而索引级别的intersect其实有点我们的左右手,左手对应一些数据结果映射到一批主键id,右手对应一些数据结果映射到另外一批主键id,把两者的主键id值进行intersect交集计算,所以在当前的场景中,索引级别的intersect到底好不好呢?
  在此我设想了3个对比场景进行分析,首先这是一个update语句,我们为了保证后续测试的可重复性,可以转换为一个select语句。
  selectfromtaskqueuewhereQState0andtaskstepid411;
  所以我们的对比测试基于查询语句进行比对分析。
  场景1:优化器保持默认indexmergeintersection开启,基于profile提取执行明细信息explainselectfromtaskqueuewhereQState0andtaskstepid411G1。rowid:selecttype:SIMPLEtable:taskqueuepartitions:type:indexmergepossiblekeys:idxqstate,idxtaskstepidkey:idxqstate,idxtaskstepidkeylen:2,9ref:rows:11filtered:100。00Extra:Usingintersect(idxqstate,idxtaskstepid);Usingwhererowinset,1warning(0。00sec)
  profile信息为:
  场景2:优化器关闭indexmergeintersection,基于profile进行对比
  explainselectfromtaskqueuewhereQState0andtaskstepid411G1。rowid:selecttype:SIMPLEtable:taskqueuepartitions:type:refpossiblekeys:idxqstate,idxtaskstepidkey:idxqstatekeylen:ref:constrows:1451filtered:0。82Extra:Usingwhererowinset,1warning(0。00sec)
  profile信息为:
  场景3:重构索引,进行比对分析
  根据业务逻辑,如果创建一个复合索引,是能够大大减少结果集的量级的,同时依然保留idxqstate索引,使得一些业务依然能够正常使用。altertabletaskqueueaddkeyidxtaskstepid(TaskStepID,QState);explainselectfromtaskqueuewhereQState0andtaskstepid411G1。rowid:selecttype:SIMPLEtable:taskqueuepartitions:type:refpossiblekeys:idxqstate,idxtaskstepidkey:idxtaskstepidkeylen:11ref:const,constrows:filtered:100。00Extra:rowinset,1warning(0。00sec)
  profile信息为:
  可以明显看到通过索引重构,Sendingdata的部分少了两个数量级
  所以接下里的事情就是进一步进行分析和验证,有理有据,等待的过程也不再彷徨,一天过去了,再没有收到1条报警,再次说明在工作中不要小看这些报警。
  各大平台都可以找到我
  微信公众号:杨建荣的学习笔记
  Github:jeanron100
  CSDN:jeanron100
  知乎:jeanron100
  头条号:杨建荣的学习笔记
  网易号:杨建荣的数据库笔记
  大鱼号:杨建荣的数据库笔记
  腾讯云社区:杨建荣的学习笔记
投诉 评论 转载

丧父丧妻丧子孔子是圣人,却也是可怜人孔子,被尊为千古一圣,在1956年被列为世界十大文化名人之一。几千年来,无数人把孔子的主张奉为圭臬,其思想也在中国乃至世界范围内产生了极大的影响。但我们今天要说的,却是孔……萱恩妈咪课堂孕早期要注意的3个重要问题!收好宝宝健康成长需要父母了解科学的育儿知识,萱恩妈咪课堂专为备孕、孕期及产后妈妈开设本专题,祛纹专家萱恩妊娠纹生长纹肥胖纹修复霜将为您呈现专业丰富的孕婴知识!如果您觉得本文不错,记……每一个念头声音想法会分散你的能量思绪的每一次跳动都是能量在活跃当你静下来专注做喜欢的事情不评判自己轻松愉悦去生活每一天都是重生很多人都有体会,一坐下、躺下来,头脑里面……天一热,我就喜欢用它做晚餐,外面卖十几元一杯,自己做超实惠天一热,我就喜欢用它做晚餐,外面卖十几元一杯,自己做超实惠这杯饮料夏天我常喝,清热解暑,不用点外卖,自己在家就能轻松做这天热得让人没胃口,就想捧着冷饮喝。喝冷饮,这……郭庆祥陈逸飞太落后,毫无收藏价值,买家无知(导读:郭庆祥:陈逸飞还在运用已被西方主流淘汰的古典写实技术,艺术观点相当落后,作品就没有大的收藏价值,买了他这些拾人牙慧的仿西方古典照片画,这是无知的收藏。)什么是传统……不放弃每一个孩子变成口号,那些被老师放弃的学生,最后怎么样了文暖妈在学生们的学习生涯之中,不管是老师还是父母,对孩子们的学习都起着至关重要的作用。在家庭之中,父母就是孩子们的第一任老师,作为父母不仅仅是家长,也是老师。家长会……相约绿荫逐梦启航惠济区绿荫路小学二至六年级复学纪实(杨传旨史敬国)2021年9月22日,郑州市惠济区绿荫路小学迎来了复学季。迎着晨光,学生们迈着轻快的步伐,带着久违的笑容走进绿荫路小学崭新的校区,他们将在这里翻开新的篇章,续写……对MySQL报警的一次分析处理小结这是学习笔记的第2334篇文章最近有一个服务出现了报警,已经让我到了忍无可忍的地步,报警信息如下:Metric:mysql。innodbrowlockwaitsTa……银山路小学党支部庆国庆活动(杨传旨马玥)金秋送爽,万里河山披锦绣;丹桂飘香,各族人民庆辉煌。为庆祝新中国成立72周年,培养学生的爱国意识和民族责任感,继承优良传统,银山路小学党支部组织学生开展了一系列爱……儿童不自信,无力感从哪里来?书接上回,在孩子努力获得自信心和自我接受的过程中,他们也会经历一些挫折,这个时候,无力感会悄悄的潜入。如果不能像哥哥或者伙伴没那样把事情做的很好,他们也会有挫折感。被批评,被处……防范支付风险,远离电信诈骗随着技术进步,支付结算工具创新,结算渠道日益扩展,支付结算操作向自动化、信息化、电子化方向发展。与此同时,支付结算风险也随之增加,并出现新的形势、新的特点,直接威胁着人民群众的……北京沙尘暴VS喀土穆沙尘暴为什么沙尘天气频繁出现到处出差救火灭火,自然见识了不同地方的文化和气候。北京的办公室在西单图书大厦对面,周围是国家电力大厦和中组部,就是路过都会敬畏那种地方,08年……
亲情账户开通第一百零七天事业成功孩子却没有出息,事业平平子女却出类拔萃,哪种更好?仙婆装神弄鬼老人迷信失财近万余元道德经第六章从众妙之门到玄牝之门,还没听懂?前浪的教养就是后浪的起跑线学无止境光明园迪第四期内训会圆满结束孩子要上幼儿园啦!听幼儿园园长们聊聊开学那点事儿最高级的家庭教育,是父母做到这7点月子篇(哺乳妈妈第13天食谱)幼儿动手能力培养意义有哪些?了解这些好处,父母再也不会帮孩子宝宝剃光好过夏?枕秃是缺钙?多剃头会让发质变好?新学期想要开始努力的同学,把握这9个逆袭必杀技老人踢毽子可以预防老年痴呆吗远大电梯排名(远大电梯排名第几)害怕结肠癌?教你在日常生活中预防的小妙招银行贷款20万10年每月还多少(怎么可以贷款20万分期还)笔记本在任务栏上找不到电源图标怎么办游园记2022皮卡品牌记忆郑州日产稳中取进平北欧风格单身公寓独特设计打造花丛中的美家新娘彩虹美甲教程让风景走进心灵胸无点墨的造句游阅江楼

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