想必玩过mysql的人对Waiting for table metadata lock肯定不会陌生,一般都是进行alter操作时被堵住了,导致了我们在show processlist 时,看到线程的状态是在等metadata lock。本文会对mysql 的metadata lock做一个小小的总结,希望对大家有所帮助。

MDL是在5.5才引入到mysql,之前也有类似保护元数据的机制,只是没有明确提出MDL概念而已。但是5.5之前版本(比如5.1)与5.5之后版本在保护元数据这块有一个显著的不同点是,5.1对于元数据的保护是语句级别的,5.5对于metadata的保护是事务级别的。所谓语句级别,即语句执行完成后,无论事务是否提交或回滚,其表结构可以被其他会话更新;而事务级别则是在事务结束后才释放MDL。

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

5.5以后,什么情况下会碰到MDL锁,我结合实际情况举3个会出现MDL的场景,来分析MDL加锁时机。下文的.测试都是以mysql 5.5这个版本为基准,没有考虑到online ddl,下一篇博文会详细介绍5.6的online ddl。

详细内容请查看:http://www.mysqlperformanceblog.com/2013/02/01/implications-of-metadata-locking-changes-in-mysql-5-5/

最新文章

  1. jackson简单使用,对象转json,json转对象,json转list
  2. Linux服务器配置多台虚拟主机
  3. tomcat:域名指向项目名
  4. MVVM架构~knockoutjs系列之扩展ajax验证~验证数据是否存在
  5. webpack.optimize.CommonsChunkPlugin插件的使用
  6. Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, preempting StackOverflowError
  7. HDELETE
  8. SQLSERVER 脚本转MYSQL 脚本的方法总结
  9. 第一课 opengl简介
  10. c# 自己制作一个简单的项目倒计时器
  11. MySQL中,修改表的某一字段的部分值
  12. WPF GroupBox 样式分享
  13. Zabbix 2.2.x, 3.0.x SQL注射漏洞修复方法
  14. eclipse ctrl shift t 失效的恢复方法
  15. 【转载】Spark学习——spark中的几个概念的理解及参数配置
  16. Nodejs.Electron(Nodejs的图形界面开发)安装和试用
  17. 树莓派3B+(二)
  18. js获取response头信息
  19. (二叉树 BFS DFS) leetcode 104. Maximum Depth of Binary Tree
  20. CodeForces 516C Drazil and Park 线段树

热门文章

  1. Openfire4源码部署到eclipse中并编译
  2. H3CNE实验:通过Console端口本地访问H3C设备
  3. (转载)oracle的v$sqlarea表
  4. 部署服务能在Dynamics CRM Online上使用吗?
  5. CSS3-loading动画(四)
  6. java面向对象浅析
  7. Python-WXPY实现微信监控报警
  8. Java版 QQ空间自动登录无需拷贝cookie一天抓取30WQQ说说数据&流程分析
  9. redhat6.4配置yum
  10. Infer - 文件说明