您好,欢迎访问一九零五行业门户网

MySQLMDL与存储引擎相关吗?_MySQL

背景是某个业务的logdb历史oss_log(myisam表类型)例行删除,有时候会告deadlock。分析slow log发现有些删除需要很长时间,比如:drop table 2014_10_17_oss_abandonquest 花费了15041.2410秒。删除行为在凌晨4点发出,刚好落在备份期间,因为5.5有了mdl(meta data lock),所以–single-transaction时,事务内操作过的表都会持有mdl,因此不会被ddl破坏。所以,查看get_status.err会有如下日志:
11966363,hardcore,localhost,oss_log,query,11084,waiting for table metadata lock,drop table 2014_10_17_oss_abandonquest
5.5的mdl机制是如果事务不释放,事务里边涉及到的表都会持有该表的dml锁,事务不释放,锁就不释放。而5.0、5.1的mdl机制与事务无关,只要语句结束,语句持有的mdl锁就会释放。这是两者的区别,确实该表引擎没关系。
下面是个测试:
session.1 session.2
step.1 begin;
step.2 select * from tb_myisam;
step.3 drop table tb_myisam;
被阻塞…
其它类似信息

推荐信息