今天和同事讨论mysql在线ddl是否会锁表的问题,查了下资料
Mysql在5.6版本之前,直接修改表结构的过程中会锁表,具体的操作步骤如下: (1)首先创建新的临时表,表结构通过命令ALTAR TABLE新定义的结构 (2)然后把原表中数据导入到临时表 (3)删除原表 (4)最后把临时表重命名为原来的表名 具体ddl如何工作
Mysql 5.6 虽然引入了Online DDL,但是并不是修改表结构的时候,一定不会导致锁表,在一些场景下还是会锁表的,比如 ①某个慢SQL或者比较大的结果集的SQL在运行,执行ALTER TABLE时将会导致锁表发生; ②存在一个事务在操作表的时候,执行ALTER TABLE也会导致修改等待;
参考:http://www.cnblogs.com/cchust/p/4639397.html