文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  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=DEFAULTALGORITHM 子句主要用於效能比較,並作為遇到任何問題時回退到較舊的表格複製行為。例如:

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

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

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