第一步:
SELECT sleep(20) from my_table where id = 1;
第二步:
ALTER TABLE my_table MODIFY my_field VARCHAR(4) ;
第三步:
SHOW PROCESSLIST ;
Waiting for table metadata lock
第四步:
SELECT * from my_table;#会阻塞直到ALTER TABLE结束
总结
第三步中如果获取不到metadata lock,则会阻塞第四步的查询,当第一步执行完毕后,第四步可以正常执行,即使第三步还没有执行结束
详细说明见:
1、https://www.cnblogs.com/digdeep/p/4892953.html
2、http://blog.itpub.net/20625855/viewspace-1463743/