Mysql
儘管對 ALTER TABLE 使用 ALGORITHM=INPLACE,為什麼 MySQL InnoDB 表仍被複製
我在 MySQL 伺服器版本 5.7 上的 InnoDB 表上執行 ALTER STATEMENT:
- 刪除一些外鍵約束
- 刪除一些索引(非唯一)
- 添加一些列(沒有索引或外鍵約束,但它們沒有添加到表的末尾,我使用
AFTER
子句)我使用該
ALGORITHM=INPLACE
選項。但是該表仍在複製中,我看到在數據庫目錄中創建了臨時文件。根據DDL 操作文件,所有這些操作都支持 INPLACE 修改。為什麼我的表還是被複製了?我沒有收到任何錯誤消息。
我使用 AFTER 子句
這會產生錯誤,從而迫使您使用
ALGORITHM=COPY
.更多的
在頁面https://dev.mysql.com/doc/refman/5.7/en/innodb-online-ddl-operations.html上,請參閱
表 14.12 列操作的線上 DDL 支持
它說“添加列”和“重新排序列”是“就地”和“重建表”完成的。
我認為這意味著從技術上講這不是“副本”,但仍然是一項昂貴的操作。(我發現該頁面難以閱讀和解釋。)
至於您觀察到的臨時文件,我沒有答案。