全部產品
Search
文件中心

PolarDB:Online Copy DDL

更新時間:Mar 14, 2026

PolarDB MySQL版新增Online Copy DDL功能,有效緩解傳統Copy DDL(如MODIFY COLUMN、普通表與分區表互轉等)在執行過程中因全程持有MDL鎖而導致的業務阻塞問題。

背景資訊

在標準Copy DDL執行期間,MySQL會持有MDL-SNW(Shared No Write)鎖,導致表上的所有寫操作(INSERT/UPDATE/DELETE)被持續阻塞。這可能引發Business Connectivity堆積,嚴重時甚至造成系統雪崩。Online Copy DDL通過最佳化資料拷貝階段的鎖機制,在保證資料一致性的前提下,允許並發讀寫操作,顯著提升DDL執行期間的業務可用性。

適用範圍

PolarDB MySQL版8.0.2版本且修訂版本為8.0.2.2.33.1及以上,可通過查詢版本號碼確認叢集版本。

說明

Online Copy DDL功能目前處於灰階發布階段。如需使用,請前往配額中心,根據配額ID polarm_82_online_copy_ddl找到配額名稱,在對應的操作列單擊申請來開通該功能。申請時請提供需要開通的叢集ID(形如pc-xxx)。

使用限制

支援的操作:

  • 普通表與分區表互相轉換。

  • MODIFY COLUMN語句(不支援同時修改列位置)。

不支援的操作或對象:

  • 含有JSON類型列的表。

  • 含有空間索引(SPATIAL INDEX)的表。

  • 含有全域二級索引(GSI)的表。

  • 混合分區(Hybrid Partitioning)表。

  • 多主叢集(Limitless)

  • 表上已執行過LOCK TABLES的會話。

  • 顯式指定ALGORITHM=COPYLOCK=SHAREDLOCK=EXCLUSIVE的DDL。

說明

您可以在執行DDL操作前使用EXPLAIN DDL功能,直觀地判斷當前DDL操作是否支援Online Copy DDL。

使用方法

您可以先通過loose_polar_support_online_copy_ddl_algorithm參數開啟Online Copy DDL功能。針對MODIFY COLUMN語句,需要額外開啟loose_polar_support_online_copy_ddl_algorithm_for_modify參數。具體操作請參見設定叢集參數和節點參數。參數說明如下:

參數

層級

說明

loose_polar_support_online_copy_ddl_algorithm

Global

Online Copy DDL主開關。取值範圍如下:

  • ON:啟用Online Copy DDL。

  • OFF(預設):禁用Online Copy DDL。

loose_polar_support_online_copy_ddl_algorithm_for_modify

Global

專用於MODIFY COLUMN的Online Copy DDL開關。取值範圍如下:

  • ON:啟用MODIFY COLUMN的Online能力。

  • OFF(預設):禁用。

方式一:顯式指定演算法(推薦)

通過ALGORITHM=COPY, LOCK=NONE強制使用Online Copy DDL:

CREATE TABLE t(a int);
ALTER TABLE t MODIFY COLUMN a BIGINT DEFAULT NULL, ALGORITHM=COPY, LOCK=NONE;
說明

使用上述語句時,若返回ERROR 1846 (0A000): LOCK=NONE is not supported. Reason: COPY algorithm requires a lock. Try LOCK=SHARED.的錯誤,表示當前修改欄位類型操作無法使用Online Copy DDL演算法執行。建議您查看loose_polar_support_online_copy_ddl_algorithm參數是否已開啟,並仔細核對使用限制。

方式二:自動選擇最優演算法(預設行為)

不指定演算法或使用DEFAULT,系統將自動選擇最合適的執行方式:

-- 方法1:顯式DEFAULT
ALTER TABLE t MODIFY COLUMN a BIGINT DEFAULT NULL, ALGORITHM=DEFAULT, LOCK=DEFAULT;

-- 方法2:完全省略(等效)
ALTER TABLE t MODIFY COLUMN a BIGINT DEFAULT NULL;
說明

系統優先嘗試Online Copy DDL。若不滿足條件,則自動回退到傳統Copy DDL(會鎖表),確保DDL最終能完成。