http://blog.csdn.net/qiuyepiaoling/article/details/7821984
一次关于Waiting for table metadata lock的处理
分类: mysql 2012-08-02 11:10 103人阅读 评论(0) 收藏 举报
一个简单的DDL操作(表数据很少,访问高)执行很久,导致Waiting for table metadata lock。
版本:mysql5.5.17
查看:Innodb_buffer_pool_pages_free = 0
解决:set global innodb_stats_on_metadata=0
查看丁奇老大博客:原文http://dinglin.iteye.com/blog/1575840
这个问题来自冷之同学测试时候碰到的一个“诡异现象”。
1、 测试现象
测试的库有很多数据,但是重启之后,只对一个表的5w条记录作查询。查询条件客户端控制,确保查询范围。innodb_buffer_pool_size设置为35G。
现象1:查询性能会出现大幅度抖动;
现象2:介入追查后发现,Innodb_buffer_pool_pages_free = 0
其中bp剩余量这个是最直观异常的,因为访问的5w行记录撑死也不可能把35G内存吃光的。在QA同学确认没有别人在使用这个库的情况下。
2、过程和原因
其实几乎确定还是有别的查询在访问的。所以打开general_log。 发现除了QA同学压的语句外,这个Server上还有一些监控语句。
其中一个语句如下
select constraint_schema,table_name,constraint_name,constraint_type from information_schema.table_constraints where table_schema not in ('information_schema', 'mysql', 'test');
这个语句访问了表 information_schema.table_constraints.
跟踪发现这个语句触发了读盘操作。原因是需要访问引擎的info()接口,而InnoDB此时又“顺手”做了更新索引统计的操作dict_update_statistics。
更新索引统计的基本流程是随机读取部分demo行。所以这个操作实际上是访问了这个Server里面的所有表,因此不只是访问5w行。
而且由于别的表事先没有被访问,就会导致读盘操作,也包括BP的LRU更新。
3、哪些表会触发
不只是上面提到的table_constraints,information_schema库下的一下几个表,访问时候都会触发这个“顺手”操作。
information_schema.TABLES
information_schema.STATISTICS
information_schema.PARTITIONS
information_schema.KEY_COLUMN_USAGE
information_schema.TABLE_CONSTRAINTS
information_schema.REFERENTIAL_CONSTRAINTS
其实还有 show table status ,也会触发这个操作,只是只处理单表,所以影响没那么明显。
4、修改
头痛医头的方法是把这些监控去掉。但实际上像TABLES、TABLE_CONSTRAINTS这些表,都是静态数据,访问时不作索引统计也没关系的。
另外一个方法就是把innodb_stats_on_metadata设置成off,这样上述说到的这些表访问都不会触发索引统计。
实际上这个动态统计的功能已经不推荐了,官方已经在6.0以后增加参数控制DML期间也不作动态统计了。因此这个参数配置成off更合理些(默认是on)
分享到:
相关推荐
而且,一旦alter table TableA的操作停滞在Waiting for table metadata lock的状态,后续对TableA的任何操作(包括读)都无法进行,因为他们也会在Opening tables的阶段进入到Waiting for table metadata lock的锁...
而且,一旦alter table TableA的操作停滞在Waiting for table metadata lock的状态,后续对TableA的任何操作(包括读)都无法进行,因为他们也会在Opening tables的阶段进入到Waiting for table metadata lock的锁...
想必玩过mysql的人对Waiting for table metadata lock肯定不会陌生,一般都是进行alter操作时被堵住了,导致了我们在show processlist 时,看到线程的状态是在等metadata lock。本文会对MySQL表结构变更的Metadata ...
简单的所谓的Waiting for table metadata lock之类的状态,其实MDL LOCK是MYSQL上层一个非常复杂的子系统,有自己的死锁检测机制 (无向图?)而大家一般口中的是不是锁表了其实就是指的它,可见的它的关键性和严重性...
Cognos® 8 FRAMEWORK MANAGER GUIDELINES FOR MODELING METADATA
当你看到 waiting for table metadata lock 时,那就是遇到MDL元数据锁了。本篇文章将会介绍MDL锁的产生与排查过程。 1.什么是MDL锁 MDL全称为metadata lock,即元数据锁。MDL锁主要作用是维护表元数据的数据一致性...
SAP.Middleware.Connector.RfcCommunicationException:“destination XXXX failed when calling RFC_METADATA_GET -- see log for details” 猜测的原因: 老的DLL库在获取接口实例时,会触发“RFC_METADATA_GET”...
遇到故障,我们往往想的是如何解决这个故障,而不是从故障...schema.processlist来看有大量的 Waiting for table metadata lock 情急之下他杀掉了一大堆线程后发现还是不能恢复,最后杀掉了一个没有及时提交的事物才恢
Display Metadata [3], while containing provisions for future HDR EOTFs and metadata. It is anticipated that these data structures will be extended to include additional EOTF and HDR metadata ...
metadata-extractor允许您通过简单的API访问数字图像和视频中的元数据。支持对多种类型的图片进行处理
Flink无法获取Kafka Topic Metadata异常及解决.docx
Tagging People powered Metadata for the Social Web - New Riders Press.rar
movie_metadata(电影数据)
techniques used for metadata management. Neither of these techniques can support large systems with high concurrent accesses due to the conflicting need for both load balancing and directory update ...
赠送jar包:metadata-extractor-2.6.2.jar; 赠送原API文档:metadata-extractor-2.6.2-javadoc.jar; 赠送源代码:metadata-extractor-2.6.2-sources.jar; 赠送Maven依赖信息文件:metadata-extractor-2.6.2.pom;...
java图片处理相关的jar包,可对图片进行关于exif信息的查看和修改。 metadata-extractor-2.13.0.jar,对图片exif信息的查看功能。
赠送jar包:metadata-extractor-2.6.2.jar; 赠送原API文档:metadata-extractor-2.6.2-javadoc.jar; 赠送源代码:metadata-extractor-2.6.2-sources.jar; 赠送Maven依赖信息文件:metadata-extractor-2.6.2.pom;...