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 ... 
