您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。