您好,匿名用户
随意问技术百科期待您的加入

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

+4 投票

Mysql5.5 表为InnoDB,字段为名为type,为普通字段,不被包含在任何索引/主键中。

type字段本来拥有两个值 'a' , 'b' ,我现在要为其加上值 'c' ,于是有了修改语句:

ALTER TABLE `table` MODIFY COLUMN `type` enum('a','b','c');

我现在想知道我执行上面这条语句大约要消耗多久的时间?

我主要是想知道因为该字段不涉及索引,修改所消耗的时间跟该表的1000w记录有关系吗

大家帮我预估一下,我好有个停机时间的计划准备,谢谢!

用户头像 提问 2013年 8月11日 @ 匿名用户
编辑 2013年 8月11日 @Saber
分享到:

1个回答

+2 投票
 
最佳答案

最近在看高性能mysql(第三版),里面讲到了这个。 modify column会导致重建表(内部实现是建一个最新结构的表,然后导入数据,然后删除旧表,重命名新表为旧表名),所以会比较慢 使用alter table xxx alter column 则是直接修改.frm文件所以会很快。跟表数据有多少无关。

另一个做法其实原理一样,都是修改.frm文件: 1.创建一个新机构的新表 2.flush tables with read lock.关闭正在使用的表,并且禁止任何表被打开。 3.交换.frm文件 4.unlock tables释放第二步的锁。

用户头像 回复 2013年 8月11日 @ Quinn 上等兵 (107 威望)
选中 2013年 8月15日 @Saber
提一个问题:

相关问题

0 投票
1 回复 31 阅读
用户头像 提问 2013年 12月5日 @ Miss Fortune 上等兵 (418 威望)
+1 投票
1 回复 55 阅读
0 投票
1 回复 125 阅读
0 投票
1 回复 45 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...