October 26, 2014

MySQL5.7 : Metadata Lock关键类及函数

在MySQL5.7.4中,对Server层的Metadata Lock做了颠覆性的修改,在正常负载下几乎完全消除了MDL子系统部分的锁开销.   基于最新的MySQL5.7.5, 我们来看看MDL锁的具体实现思路。注意在5.7.5里,MDL子系统的代码和之前版本已经发生了非常大的差异,具体表现在: 1.    针对DDL 和DML做了区分,引入了fast path的概念,对于走fast path路径的MDL锁,无需任何读写锁操作,使用类似LOCK WORD的方式来标记赋予权限 2.    对MDL的存储采用LOCK FREE HASH的方式,这样5.6所谓的mdl分区在5.7里都全部移除了 3.    THR_LOCK被移除掉了,改而全部使用MDL锁来代替,为了适应这种变化,引入新的MDL锁类型来处理类似LOCK TABLE READ这样的场景,同时例如DML饥饿处理也做了些变化   另外,鉴于MDL子系统的复杂度,本文只是做一些简单的描述,后续还会单独分篇来对其中的某些细节进行探讨。很早之前写了篇博客来介绍MDL锁的发展历程,有兴趣的可以看一下:http://mysqllover.com/?p=985   先画个图,简单的理一下各个类之间的关系 原创文章,转载请注明: 转载自Simple Life 本文链接地址: MySQL5.7 : Metadata Lock关键类及函数 Post Footer automatically generated by wp-posturl plugin for wordpress.