mysql5.6创建索引导致锁表阻塞查询
结论:添加索引时,如果有对该表的慢查询,会导致索引添加延时等待
添加索引语句:alter table tb_name add index idx_xx(col_name);
执行添加索引的SQL:
通过show processlist; 发现有锁表等待的线程:
| 1205189 | root | localhost | erp | Query | 50 | Waiting for table metadata lock | ALTER TABLE `erp_ekpo` ADD INDEX indx(aedat)
正常情况:添加索引只需要几秒钟 就完成,此时等待很久都没有结束。
MySQL5.6是支持在线的DDL,对表进行alter table时是不会锁表的。
原因: 通过命令查看慢查询:
select * from information_schema.processlist where command not in ('Sleep') and user not in ('mydba','event_scheduler','repl','binlogbak','system user')
发现有慢SQL,针对该表。
解决方式:kill掉慢SQL进程,索引添加立刻完成
远方不一定有诗,但有更好的自己!你我共勉!