初识MDL

作者: 木子苇苇 | 来源:发表于2020-06-01 18:33 被阅读0次

我们知道mysql的默认隔离级别是RR, 在5.5之前这个隔离级别隔离的数据是有问题的, 存在状态为running的trx时, mysql期间再执行DDL, 就不能保证RR隔离级别的数据准确性

mysql为了解决这一问题, 在5.5之后出现了MDL, 这是一个隐式的锁, 事务执行完后会自动释放该锁, 当有DDL执行时, 该线程将会被阻塞, 直到所有的线程全部被执行完后再执行DDL操作

线上问题

线上的测试服务器启动起来后, 整个服务是假死的状态, 服务完全不能使用, 排查了服务器一切都是正常的, 但是mysql数据库发现很多线程被阻塞等待MDL, 看来是这个服务器启动不起来了又反复启动几次服务

image-20200601143222227.png

发现mysql存在线程正在等待该锁, 由此推断应该存在至少一个正在running的事务, 同时期应该也不会存在死锁或者被锁住的表的情况, 如下图所示

image-20200601142316459.png
解决方案
  1. 设置MDL等待超时时间, set session lock_wait_timeout=60
  2. 查看当前事务, 杀掉事务线程, 如果当前事务比较多业务比较复杂, 不建议该操作, 可能引起系统雪崩或者大范围业务回滚
  3. 选择mysql相对空闲的时间进行DDL操作, 建议DDL操作不能太频繁, 明显不正确的DDL就不要反复执行了

相关文章

  • 初识MDL

    我们知道mysql的默认隔离级别是RR, 在5.5之前这个隔离级别隔离的数据是有问题的, 存在状态为running...

  • MySQL锁<一>

    MDL锁 对表的增删改查,都需要MDL锁,无所不在 MDL读锁之间不互斥,但MDL读写锁互斥 #举个栗子 假设t是...

  • YOYOW主网发布一周年系列采访,跨国伙伴MDL艺人社谈合作

    2018年1月,MDL艺人社(MDL Talent Hub)和YOYOW达成一项战略合作协议,旨在将MDL艺人社平...

  • mdl

    今天很开心,今天有很多事,比如说早上吃mdl,吃的很好 还有蛋炒饭是我炒的,还有作了很多作业比如WT,练习册订正,...

  • 2.元数据锁

    MDL (metaDataLock) 元数据: 表结构在 MySQL 5.5 版本中引入了 MDL, 当对一个表做...

  • 2021-01-30

    Segoe UI SymbolSegoe MDL2

  • MDL调研

    MDL介绍 在移动端应用深度学习技术比较典型的就是 CNN(Convolutional Neural Networ...

  • 2019-07-23工作总结

    疑问1: MDL写锁, MDL读锁, 和S锁, X锁有啥区别? 疑问2: flush文件有啥作用? 答: fl...

  • 泛博电竞:Aster老板Burning专访,Major准备充分,

    Aster在本次MDL成都Major的预选赛上面表现得相当出色,他们也是成功进入了本次MDL成都Major的线下赛...

  • MySQL MDL锁

    MDL全称为metadata lock,即元数据锁。MDL锁主要作用是维护表元数据的数据一致性,在表上有活动事务(...

网友评论

      本文标题:初识MDL

      本文链接:https://www.haomeiwen.com/subject/bswszhtx.html