文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  InnoDB 儲存引擎  /  InnoDB 與線上 DDL

17.12 InnoDB 與線上 DDL

線上 DDL 功能提供即時和就地表格變更以及並行 DML 的支援。此功能的優點包括

  • 在繁忙的生產環境中提高回應能力和可用性,在這些環境中,使表格無法使用幾分鐘或幾小時是不切實際的。

  • 對於就地操作,能夠使用 LOCK 子句調整 DDL 操作期間效能和並行性之間的平衡。請參閱 LOCK 子句

  • 比表格複製方法使用更少的磁碟空間和 I/O 負擔。

通常,您不需要執行任何特殊操作來啟用線上 DDL。預設情況下,MySQL 會在允許的情況下盡可能以最少的鎖定立即或就地執行操作。

您可以使用 ALTER TABLE 陳述式的 ALGORITHMLOCK 子句來控制 DDL 操作的各個方面。這些子句位於陳述式的末尾,並以逗號與表格和資料行規格分隔。例如

ALTER TABLE tbl_name ADD PRIMARY KEY (column), ALGORITHM=INPLACE;

LOCK 子句可以用於就地執行的操作,並且適用於在操作期間微調對表格的並行存取程度。只有 LOCK=DEFAULT 支援立即執行的操作。ALGORITHM 子句主要用於效能比較,以及在您遇到任何問題時回退到較舊的表格複製行為。例如

  • 為了避免在就地 ALTER TABLE 操作期間意外使表格無法讀取、寫入或同時無法讀寫,請在 ALTER TABLE 陳述式上指定子句,例如 LOCK=NONE(允許讀寫)或 LOCK=SHARED(允許讀取)。如果要求的並行等級不可用,則操作會立即停止。

  • 為了比較不同演算法的效能,請使用 ALGORITHM=INSTANTALGORITHM=INPLACEALGORITHM=COPY 執行語句。您也可以在啟用 old_alter_table 設定選項的情況下執行語句,以強制使用 ALGORITHM=COPY

  • 為了避免 ALTER TABLE 操作複製表格而佔用伺服器資源,請包含 ALGORITHM=INSTANTALGORITHM=INPLACE。如果無法使用指定的演算法,該語句會立即停止。