add column发生了什么

[复制链接]
查看11 | 回复6 | 2011-11-1 16:23:26 | 显示全部楼层 |阅读模式
add column使用after会不会影响性能
add column内部如何实现,是去修改每个record还是直接新建表还是其他

回复

使用道具 举报

千问 | 2011-11-1 16:23:26 | 显示全部楼层
手册:13.1.2

ALTER TABLE运行时会对原表进行临时复制,在副本上进行更改,然后删除原表,再对新表进行重命名。在执行ALTER TABLE时,其它用户可以阅读原表,但是对表的更新和修改的操作将被延迟,直到新表生成为止。新表生成后,这些更新和修改信息会自动转移到新表上。
注意,如果您在执行ALTER TABLE时使用除了RENAME以外的选项,则MySQL会创建一个临时表。即使数据并不需要进行复制(例如当您更改列的名称时),MySQL也会这么操作。对于MyISAM表,您可以通过把myisam_sort_buffer_size系统变量设置到一个较高的值,来加快重新创建索引(该操作是变更过程中速度最慢的一部分)的速度

回复

使用道具 举报

千问 | 2011-11-1 16:23:26 | 显示全部楼层
RogerZhuo 发表于 2012-2-15 17:37
手册:13.1.2

Thanks,看过都忘记了


回复

使用道具 举报

千问 | 2011-11-1 16:23:26 | 显示全部楼层
welc, 呵呵,都一样哈


回复

使用道具 举报

千问 | 2011-11-1 16:23:26 | 显示全部楼层
本帖最后由 icer_repls 于 2012-2-15 22:48 编辑
貌似innodb plugin相比innodb built in在在线DDL上有了比较大的改进,不过是针对创建索引而言的
回复

使用道具 举报

千问 | 2011-11-1 16:23:26 | 显示全部楼层
icer_repls 发表于 2012-2-15 22:42
貌似innodb plugin相比innodb built in在在线DDL上有了比较大的改进,不过是针对创建索引而言的

Alter table在用alter cloumn来修改时,可以不重建表,当然这也是只能修改指定列的default value.
因为这个操作只会对.frm文件进行修改。
回复

使用道具 举报

千问 | 2011-11-1 16:23:26 | 显示全部楼层
RogerZhuo 发表于 2012-2-16 00:02
Alter table在用alter cloumn来修改时,可以不重建表,当然这也是只能修改指定列的default value.
因为这 ...

对啊, 如果仅仅只是修改.frm文件,而对数据文件的修改很小。这样的操作也就只有类似改变default value了这种了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行