开发者社区> 问答> 正文

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

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

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

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

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

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

展开
收起
落地花开啦 2016-06-15 10:41:08 5082 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    modify column会导致重建表(内部实现是建一个最新结构的表,然后导入数据,然后删除旧表,重命名新表为旧表名),所以会比较慢 使用alter table xxx alter column 则是直接修改.frm文件所以会很快。跟表数据有多少无关。

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

    2019-07-17 19:38:51
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
RowKey与索引设计:技巧与案例分析 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载