[mysql] [未完待续] 添加表字段导致空间暴涨
背景:
应用变更方案:
/*改名建新表,避免数据丢失*/
CREATE TABLE tihuan_new like tihuan;
ALTER TABLE tihuan_new
ADD COLUMN create_time timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0);
RENAME TABLE tihuan TO tihuan_old, tihuan_new TO tihuan;
/*旧表添加时间字段*/
ALTER TABLE tihuan_old
ADD COLUMN create_time timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0);
/*将旧表表名改回去*/
RENAME TABLE tihuan TO tihuan_new, tihuan_old TO tihuan;
/*新表数据写入旧表*/
insert into tihuan (select * from tihuan_new);
drop table tihuan_new;
问题:
/*旧表添加时间字段*/
ALTER TABLE tihuan_old
ADD COLUMN create_time timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0);
该步骤导致磁盘空间暴涨,现场已经没有,初步排查是undo空间暴涨导致。
解决方案:
1.drop掉tihuan_old表索引,修改完字段在重新创建。
2.将命令分解执行,添加字段(add),修改新加列默认值(modify),更新新加列值(update)。
未完待续
- 点赞
- 收藏
- 关注作者
评论(0)