这篇文章将为大家详细讲解有关MySQL5.6 Online DDL在线状态是怎么样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
Yes*和No*表明结果依赖于其他一些附加条件:
执行操作 | 允许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 Online DDL在线状态是怎么样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。