加快ALTER TABLE的速度方法
- alter table更改表时,通常是创建一个新表,再把原来的表数据复制到新表中
- alter table服务会导致MySQL服务中断
- 不是所有的alter table 都会引起MySQL表重建,例如以alter column操作改变表的属性默认值,只会修改.frm文件的内容
通过.frm文件快速修改表
- 一些操作,例如改变表中的enum和set常量或者移除列的auto_increment属性,可以通过创建新的.frm文件,然后替换原来的.frm文件
- 可以通过一下语句来完成
CREATE TABLE clone_table LIKE _table;
ALTER TABLE clone_table MODIFY COLUMN XXX ENUM('A','B') DEFAULT 'A';
FLUSH TABLE WITH READ LOCK;//关闭正在使用的表,同时禁止表打开,避免出错
//经过替换.frm文件
UNLOCK TABLES;
DROP TABLE clone_table;
浙公网安备 33010602011771号