加快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;
posted @ 2021-12-04 20:43  NoBugNoError  阅读(142)  评论(0)    收藏  举报