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不適用 |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2144305/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql5.6的online ddl功能測試MySql
- MySQL5.6支援哪些Online DDL操作MySql
- 一個 MySQL 線上 DDL 工具 — pt-online-schema-changeMySql
- React 路由狀態管理總結React路由
- Flutter狀態管理 - 初探與總結Flutter
- Http協議狀態碼總結HTTP協議
- MySQL Online DDL 概述MySql
- Limitations of Online DDL for MySQLMITMySql
- MySQL DDL執行方式-Online DDL介紹MySql
- MySQL 5.7 Online DDL OverviewMySqlView
- mysql online ddl的演化MySql
- MySQL Online DDL詳解MySql
- [前端 · 面試 ]HTTP 總結(四)—— HTTP 狀態碼前端面試HTTP
- 執行緒的幾種狀態總結執行緒
- 關於android透明狀態列總結Android
- MySQL 5.6 Online DDL.mdMySql
- 線上改表工具oak-online-alter-table和pt-online-schema-change的使用限制總結
- 從工作流狀態機實踐中總結狀態模式使用心得模式
- Android關於沉浸式狀態列總結Android
- MySQL online ddl 工具之pt-online-schema-changeMySql
- MySQL Online DDL--pt-online-change-schema測試MySql
- 【MySQL】online ddl 工具之pt-online-schema-changeMySql
- MySQL 常用DDL執行方式總結MySql
- ORACLE11.2.0.3和MYSQL5.6 DDL比較OracleMySql
- mysql之 openark-kit online ddlMySql
- MySQL 5.7 online DDL特性介紹MySql
- 【MySQL】online ddl 思維導圖MySql
- MySQL ONLINE DDL 和PT-ONLINE-SCHEMA-CHANGE對比MySql
- 關於 Android 狀態列的適配總結Android
- JavaScript學習總結(七)Ajax和HTTP狀態字JavaScriptHTTP
- MySQL & MariaDB Online DDL 參考指南MySql
- 記錄一次 Online DDL 操作
- 零散知識點總結(3) Android 狀態列知識點總結Android
- 利用btrace線上監控java程式狀態Java
- HTTP總結(簡介、狀態碼和各版本對比)HTTP
- [MySQL5.6]PerformanceSchema學習:命名規範、狀態變數及其他(2)MySqlORM變數
- MySQL 線上DDL "gh-ost"MySql
- mysql 原生 線上DDL 的bug .MySql