大数据表修改表结构技巧

MySQL表结构修改,实际就是按修改后的结构和属性创建新表再将原表记录写入。
如果表记录太多,可能会导致执行时间较长。
当然有些情况也可以避免重建表并写入记录。
1.修改缺省值
    假设有一张表,字段需要修改默认值,那么可以使用alter colnum
alter table 表名 alter column 字段名 set default 1;

2.修改字段注释、枚举字段末端增加新值等
可以按如下步骤:
创建一张有相同结构的空表,并进行需要的修改

执行flush tables with read lock,这将会关闭所有正在使用的表,并禁止任何表被打开。

交换.frm文件

执行unlock tables来释放第二步的读锁
确认无误后,删除新建表
例:

#create table 新表名 like 原表名;

#flush table with read lock;

#unlock tables;
mv 原表名.frm 原表名tmp.frm
mv 新表名.frm 原表名.frm
mv 原表名tmp.frm 新表名
注意:以上操作有一定风险。

以下的操作可能不需要重建表:

1.移除一个列的自增长属性

2.增加、删除或者修改enum和set常量

 

 

你可能感兴趣的:(MySQL,MySQL修改表)