Mysql 不是所有的Alter table都会锁定表,但是如果使用Modify column都会导致表重建。如果命令只修改了.frm文件并且没有改动表,则不会引起表重建。如下例。
Alter table tableName alter column ColumnName set default 5;
在修改表结构的时候,也可以采取类似的技巧,只修改.frm文件,以加快修改速度。
基本的思路是为想要的表结构创建一个.frm文件,并替换现有表的.frm文件。
但是适合这种方式的场景并不是很多。
如移除列的自动增长属性,添加移除或更改ENUM或SET常量。