青岛SEO外包公司_网络推广_网站建设_百度排名优化【青岛SEO-墨羽网络】

SEO优化网站制作5年,客户1000+

华为云MySQL新增MDL锁视图特性快速定位元数据锁问

2020-08-31 20:36


  MDL锁(MetadataLock),即元数据锁。元数据指的是描述数据的数据,对数据及信息资源的描述性信息,在数据库中元数据即数据字典信息,包括db,table, function,procedure,trigger,event等。

  MySQL从5.5版本开始引入MDL锁,MDL锁主要为了保证元数据的一致性(主要是保证DDL操作与DML操作之间的一致性),用于处理不同线程操作同一元数据对象的同步与互斥问题,在各个业务场景中会十分频繁地使用到。

  具体而言,MySQL引入MDL锁可以解决如下问题:一是事务隔离问题,比如在可重复读隔离级别下,会线次查询期间,会线次查询结果就会不一致,无法满足可重复读的要求。二是数据复制问题,比如会话A执行了多条更新语句期间,另外一个会话B做了表结构变更并且先提交,就会导致slave在重做时,先重做alter,再重做update时就会出现复制错误的现象。

  社区版MySQL无法获取表MDL锁的详细信息,当客户遇到类似“Waitingformetadatalock”的问题而阻塞DML或DDL后,由于无法确定各session之间的关联,往往无从下手,复杂情况下,只能重启实例,从而增加解决问题的成本,对业务产生较大影响。而且在业务场景较复杂的情况下,一旦涉及对数据库元数据的互斥操作(如DDL、LOCKTable等),此类问题便会频繁发生,给一线运维和客户带来很大的困扰。

  针对以上痛点,华为云数据库MySQL在充分调研内核的基础上,推出了MDL锁视图特性,可以清晰查看数据库各session持有和等待的元数据锁信息,方便现网运维进行问题定位,有效进行系统诊断,帮助客户更好地优化自身业务。

  客户发现表t2的truncate一直被阻塞后,业务流程中对表t2的select操作也全部被阻塞。DDL被阻塞后,客户立刻执行showprocesslist:

  客户实例最近几次全备均失败,但是业务表现似乎正常,而且最近系统业务量不高,未出现明显问题。运维团队发现全备被阻塞后,立刻showprocesslist,发现有多个活跃的用户session:

  发现有个表t1始终处于inuse状态,所以猜测是用户某个session持有了该表t1的MDL锁未释放,导致locktablesforbackup等待超时。但是结合showprocesslist仍然无法确定是哪个session持有表t1的MDL锁,想让全备执行成功,只能通知客户逐一断连session或者重启实例。

  通过以上两个案例,MDL锁视图的重要性不言而喻,它可以让客户和一线运维人员清晰地查看数据库各session持有和等待的元数据锁信息,从而找出数据库MDL锁等待的根因,准确地进行下一步决策,有效降低对业务的影响。

  华为云针对企业上云与治理提出了一套适用于互联网、金融、游戏、产业云等行业的解决方案,由数据采集到数据处理与汇聚,再到数据计算与分析,最后到应用与消费层,通过对数据的一系列采集、处理、分析和应用,构建全场景数据服务助力企业数字化转型,最终实现从数据到价值的闭环。企业数据上云和治理专场云数据库MySQL5折起,不但有亿元上云补贴,还有新购满额送华为手机P40Pro5G,更多豪礼等你来拿~莱西信息港_莱西新闻_莱西信息网_莱西论坛青岛SEO

原创文章标题:华为云MySQL新增MDL锁视图特性快速定位元数据锁问,转载请注明:http://www.myuseo.com

服务支持

我们珍惜您每一次在线询盘,有问必答,用专业的态度,贴心的服务。

让您真正感受到我们的与众不同!