MySQL5.6 ALTER TABLE 分析和测试
| 执行操作 | 允许ALGORITHM=INPLACE |
是否拷贝表
|
允许并发DML
|
允许并发查询
|
备注和注意事项
|
|
create index
add index
|
Yes*
|
No*
|
Yes
|
Yes
|
对于全文索引,有一些限制,具体看下一行。目前,该操作不是在原地执行,需要拷贝表. |
|
add fulltext index
|
Yes
|
No*
|
No
|
Yes
|
创建第一个全文索引涉及到拷贝表,除非有使用FTS_DOC_ID列。后面的全文索引则在原地执行。 |
|
drop index
|
Yes
|
No
|
Yes
|
Yes
|
|
|
optimize table
|
Yes
|
Yes
|
Yes
|
Yes
|
在MySQL5.6.17里使用 ALGORITHM=INPLACE.
如果设置old_alter_table=1或使用mysqld --skip-new选项,则使用 ALGORITHM=COPY. 如果表使用了全文索引,则 ALGORITHM=INPLACE不适用
|
|
set default value for column
|
Yes
|
No
|
Yes
|
Yes
|
修改.frm文件,不涉及数据文件 |
|
change auto-increment value
|
Yes
|
No
|
Yes
|
Yes
|
修改存储到内存的一个值,不修改数据文件
|
|
add foreign key constraint
|
Yes*
|
No*
|
Yes
|
Yes
|
禁用foreign_key_checks,则可以避免拷贝表
|
|
drop forgien key constraing
|
Yes
|
No
|
Yes
|
Yes
|
foreign_key_checks可以禁用或开启
|
|
rename column
|
Yes*
|
No*
|
Yes*
|
Yes
|
允许并发DML,保持相同的数据类型,仅改变字段名
|
|
add column
|
Yes
|
Yes
|
Yes*
|
Yes
|
增加auto-increment字段时不允许DML操作.
虽然ALGORITHM=INPLACE可以允许,
但是数据要重组,代价比较昂贵.
|
|
drop column
|
Yes
|
Yes
|
Yes
|
Yes
|
虽然ALGORITHM=INPLACE可以允许,
但是数据要重组,代价比较昂贵.
|
|
reorder columns
|
Yes
|
Yes
|
Yes
|
Yes
|
虽然ALGORITHM=INPLACE可以允许,
但是数据要重组,代价比较昂贵.
|
|
change ROW_FORMAT
property
|
Yes
|
Yes
|
Yes
|
Yes
|
虽然ALGORITHM=INPLACE可以允许,
但是数据要重组,代价比较昂贵.
|
|
change KEY_BLOCK_SIZE
property
|
Yes
|
Yes
|
Yes
|
Yes
|
虽然ALGORITHM=INPLACE可以允许,
但是数据要重组,代价比较昂贵.
|
|
make column null
|
Yes
|
Yes
|
Yes
|
Yes
|
虽然ALGORITHM=INPLACE可以允许,
但是数据要重组,代价比较昂贵.
|
|
make cplumn not null
|
Yes*
|
Yes
|
Yes
|
Yes
|
当SQL_MODE为strict_all_tables,如果执行的列包含null,则会执行失败。
虽然ALGORITHM=INPLACE可以允许,
但是数据要重组,代价比较昂贵.
|
|
change data type
of column
|
No
|
Yes
|
Yes
|
Yes
|
|
|
add primary key
|
Yes* |
Yes
|
Yes
|
Yes
|
虽然ALGORITHM=INPLACE可以允许,
但是数据要重组,代价比较昂贵.
如果列必须转换为非空的条件下,
ALGORITHM=INPLACE是不允许的。
|
|
drop primary key
and add other
|
Yes
|
Yes
|
Yes
|
Yes
|
当在同一个alter table新增主键时ALGORITHM=INPLACE是允许的.数据要重组,因此代价比较昂贵.
|
|
drop primary key
|
No
|
Yes
|
No
|
Yes
|
删除主键但是又不新增主键是被限制的
|
|
convert character set
|
No
|
Yes
|
No
|
Yes
|
如果新的字符编码不同将会重建表 |
|
specify character set
|
No
|
Yes
|
No
|
Yes
|
如果新的字符编码不同将会重建表
|
|
rebulid with
force option
|
Yes
|
Yes
|
Yes
|
Yes
|
在MySQL5.6.17里使用 ALGORITHM=INPLACE.
如果设置old_alter_table=1或使用mysqld --skip-new选项,则使用 ALGORITHM=COPY. 如果表使用了全文索引,则 ALGORITHM=INPLACE不适用 |
|
rebulid with
"null"
alter table ...
engine=innodb
|
Yes
|
Yes
|
Yes
|
Yes
|
在MySQL5.6.17里使用 ALGORITHM=INPLACE.
如果设置old_alter_table=1或使用mysqld --skip-new选项,则使用 ALGORITHM=COPY. 如果表使用了全文索引,则 ALGORITHM=INPLACE不适用 |
MySQL5.6 ALTER TABLE 分析和测试的更多相关文章
- MySQL--当mysqldump --single-transaction遇到alter table(2)
在上篇<MySQL--当mysqldump --single-transaction遇到alter table>中测试发现,在MySQL 5.6版本中,如果在mysqldump期间修改表, ...
- 【SQL篇章】【SQL语句梳理 :--基于MySQL5.6】【已梳理:ALTER TABLE解析】
ALTER TABLE 解析实例: SQL: 1.增加列 2.增加列,调整列顺序 3.增加索引 4.增加约束 5.增加全文索引FULL-TEXT 6.改变列的默认值 7.改变列名字(类型,顺序) 8. ...
- MySQL ALTER TABLE语法
先看一下定义(密密麻麻) ALTER TABLE tbl_name [alter_specification [, alter_specification] ...] [partition_optio ...
- MySQL alter table时执行innobackupex全备再看Seconds_Behind_Master
1.场景描述 早上7:25 接到Report中心同学告警,昨天业务报表数据没有完整跑出来,缺少500位业务员的数据,并且很快定位到,缺少的是huabei_order库上的数据.Report中心的数据是 ...
- 【转载】alter table move 和 alter table shrink space的区别
move 和shrink 的共同点1.收缩段2.消除部分行迁移3.消除空间碎片4.使数据更紧密 shrink 语法: alter table TABLE_NAME shrink space [com ...
- [每日一题] OCP1z0-047 :2013-07-26 alter table set unused之后各种情况处理
有疑问可以去itpub讨论:http://www.itpub.net/thread-1804872-1-1.html 对于alter table setunused的用法,查官方文档: alter_t ...
- MySQL--当mysqldump --single-transaction遇到alter table
部分生产环境采用mysqldump --single-transaction的方式在夜间进行数据库备份,而同事恰好在备份期间执行了alter table操作,操作部分成功部分失败,为啥呢? 在mysq ...
- MySQL--当mysqldump --single-transaction遇到alter table(1)
部分生产环境采用mysqldump --single-transaction的方式在夜间进行数据库备份,而同事恰好在备份期间执行了alter table操作,操作部分成功部分失败,为啥呢? ##=== ...
- 曲演杂坛--使用ALTER TABLE修改字段类型的吐血教训
--===================================================================== 事件起因:开发发现有表插入数据失败,查看后发现INT类型 ...
随机推荐
- [你必须知道的.NET]第三十三回,深入.NET 4.0之,Lazy<T>点滴
发布日期:2009.10.29 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. 对象的创建方式,始终代表了软件工业的生产力方向,代表了先进软件技 ...
- UVA 10673 扩展欧几里得
题意:给出x 和k,求解p和q使得等式x = p[x / k] + q [ x / k], 两个[x / k]分别为向下取整和向上取整 题解:扩展欧几里得 //meek///#include<b ...
- Android 注入详解
Android下的注入的效果是类似于Windows下的dll注入,关于Windows下面的注入可以参考这篇文章Windows注入术.而Android一般处理器是arm架构,内核是基于linux,因此进 ...
- HDFS Protocol修改流程
相对于1.x版本的Hadoop,2.x版本的Hadoop采用了Protocol Buffer作为序列化反序列化工具,以及RPC通讯工具.这样当我们对Hadoop源码进行修改之前,就需要了解Ha ...
- lintcode:背包问题
背包问题 在n个物品中挑选若干物品装入背包,最多能装多满?假设背包的大小为m,每个物品的大小为A[i] 样例 如果有4个物品[2, 3, 5, 7] 如果背包的大小为,可以选择的空间. 如果背包的大小 ...
- lintcode:快乐数
快乐数 写一个算法来判断一个数是不是"快乐数". 一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是 ...
- iOS 开发--添加工程
文/Bison(简书作者)原文链接:http://www.jianshu.com/p/dd71e15df5d0著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 第一部分,配置项目 在此只 ...
- IOS底层数据结构--class
一.类的数据结构 Class(指针) typedef struct objc_class *Class; /* 这是由编译器为每个类产生的数据结构,这个结构定义了一个类.这个结构是通过编译器在执行时产 ...
- JavaWeb项目开发案例精粹-第4章博客网站系统-002辅助类及配置文件
1. <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5&qu ...
- 1.BOM学习
1.bom.html <html> <head> <title>bom演示</title> <script type="text/jav ...