深入理解MDL元数据锁( 二 )

3.如何优化与避免MDL锁
MDL锁一旦发生会对业务造成极大影响,因为后续所有对该表的访问都会被阻塞,造成连接积压 。我们日常要尽量避免MDL锁的发生,下面给出几点优化建议可供参考:

  • 开启metadata_locks表记录MDL锁 。
  • 设置参数lockwaittimeout为较小值,使被阻塞端主动停止 。
  • 规范使用事务,及时提交事务,避免使用大事务 。
  • 增强监控告警,及时发现MDL锁 。
  • DDL操作及备份操作放在业务低峰期执行 。
  • 少用工具开启事务进行查询,图形化工具要及时关闭 。
总结:
本篇文章主要分三方面来详解MDL锁,首先介绍了MDL锁产生的原因及作用,然后我们模拟出MDL锁,并给出查找及解决方法,最后给出几点避免MDL锁的建议 。其实,MDL锁在DB运维过程中经常遇到,它不是洪水猛兽,只是为了保护数据库对象,保证数据一致性 。希望大家看完这篇文章后能对MDL锁有更清晰的认识 。
参考:
  • https://blog.csdn.net/wanbf123/article/details/80697787
  • https://blog.csdn.net/finalkof1983/article/details/88063328
  • https://www.jianshu.com/p/c2efdde99e2f
欢迎关注个人公众号『MySQL技术』




推荐阅读