博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql metadata lock
阅读量:5136 次
发布时间:2019-06-13

本文共 717 字,大约阅读时间需要 2 分钟。

 想必玩过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。

 

详细内容请查看:

转载于:https://www.cnblogs.com/jackhub/p/3862695.html

你可能感兴趣的文章
docker学习
查看>>
ZOJ 2750 Idiomatic Phrases Game(Dijkstra)
查看>>
shell 逐行比较两个文件的内容是否一样(行数相同)
查看>>
Notepad++运行快捷键的设置
查看>>
11.12
查看>>
cd 你的web根目录 删除所有的PHP文件
查看>>
androidimplementationxorg-server-1.12.1 for android done--xorg-server-1.12.1-issue.txt
查看>>
程序员去人才网待遇是最低??
查看>>
Java乔晓松-oracle的单行函数(日期函数和数字函数)
查看>>
Concurrency(Locking, Blocking and Row Versioning)
查看>>
the Linux Kernel: Traffic Control, Shaping and QoS
查看>>
RHCA学习笔记:RH442-Unit6 磁盘性能调整
查看>>
innodB的隐式锁
查看>>
php 即使客户端或者服务器断开(如关掉浏览器)脚本也可以继续执行
查看>>
由“大数据量Excel入库高效方式”瞥见“并联系统”之优势
查看>>
委托的N种写法,你喜欢哪种?
查看>>
Python(72)_生成器函数与装饰器复习
查看>>
基于 HTML5 Canvas 的元素周期表展示
查看>>
基于visual Studio2013解决面试题之0304镜像二叉树
查看>>
head runt = "server"
查看>>