为了账号安全,请及时绑定邮箱和手机立即绑定

[Mysql]一张1000W条记录的表中,修改表结构,为一个enum字段增加一个值,需要多久时间?

[Mysql]一张1000W条记录的表中,修改表结构,为一个enum字段增加一个值,需要多久时间?

蛊毒传说 2019-04-07 09:38:40
Mysql5.5表为InnoDB,字段为名为type,为普通字段,不被包含在任何索引/主键中。type字段本来拥有两个值'a','b',我现在要为其加上值'c',于是有了修改语句:ALTERTABLE`table`MODIFYCOLUMN`type`enum('a','b','c');我现在想知道我执行上面这条语句大约要消耗多久的时间?我主要是想知道因为该字段不涉及索引,修改所消耗的时间跟该表的1000w记录有关系吗大家帮我预估一下,我好有个停机时间的计划准备,谢谢!
查看完整描述

2 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

最近在看高性能mysql(第三版),里面讲到了这个。
modifycolumn会导致重建表(内部实现是建一个最新结构的表,然后导入数据,然后删除旧表,重命名新表为旧表名),所以会比较慢
使用altertablexxxaltercolumn则是直接修改.frm文件所以会很快。跟表数据有多少无关。
另一个做法其实原理一样,都是修改.frm文件:
1.创建一个新机构的新表
2.flushtableswithreadlock.关闭正在使用的表,并且禁止任何表被打开。
3.交换.frm文件
4.unlocktables释放第二步的锁。
最近几晚上看的,没亲自试过,话说我也该去测试下了
                            
查看完整回答
反对 回复 2019-04-07
  • 2 回答
  • 0 关注
  • 326 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信