結論:添加索引時,如果有對該表的慢查詢,會導致索引添加延時等待
添加索引語句: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進程,索引添加立刻完成