全部產品
Search
文件中心

PolarDB:無鎖變更列類型

更新時間:Jul 06, 2024

使用普通方式執行修改列類型操作時,資料節點DN上會阻塞DML,影響業務執行。PolarDB-X新增無鎖變更列類型(Online Modify Column,簡稱OMC)功能,允許以無鎖方式變更列類型。

前提條件

僅核心版本在 5.4.18-17108394 及以上的PolarDB-X執行個體支援無鎖變更列類型。

使用限制

  • 僅核心版本在5.4.18-17108394及以上的執行個體支援無鎖變更列類型。

  • 不支援僅進行加減列時指定OMC演算法。

  • 不支援修改拆分鍵、分區鍵以及主鍵的列名稱,但支援修改列類型。

  • 不支援刪除拆分鍵、分區鍵以及主鍵包含的列。

  • 不支援新增列的列定義中包含UNIQUE、KEY等關鍵字。

  • 僅支援MODIFY COLUMN、CHANGE COLUMN、DROP COLUMN以及ADD COLUMN操作,其他動作均不支援,例如不支援ADD INDEX、DROP INDEX、SET DEFAULT等操作。

  • 不支援修改產生列以及產生列運算式中包含的列。

文法

目前無鎖變更列類型的具體文法如下,使用無鎖變更列類型時,支援同時變更多個列的列類型,並且支援在變更列的同時進行加列和減列操作。

ALTER TABLE tbl_name
    alter_option [, alter_option] ...
    ALGORITHM = OMC

alter_option: {
    table_options
  | ADD [COLUMN] col_name column_definition
        [FIRST | AFTER col_name]
  | CHANGE [COLUMN] old_col_name new_col_name column_definition
        [FIRST | AFTER col_name]
  | DROP [COLUMN] col_name
  | MODIFY [COLUMN] col_name column_definition
        [FIRST | AFTER col_name]
}

使用方法

ALTER TABLE語句中未指定ALGORITHM演算法或指定為其它演算法,例如INPLACE或COPY時,預設使用普通的方式執行,會阻塞DML的執行。當ALGORITHM演算法指定為OMC時,則使用無鎖變更列類型方式執行。

樣本

說明

無鎖變更列類型功能支援AUTO和DRDS模式的資料庫,以下命令以在AUTO模式資料庫中執行為例。

  • 執行以下命令,建立測試表t1:

    CREATE TABLE t1(a int primary key, b tinyint, c varchar(10)) partition by key(a);
  • 執行以下命令,修改t1表中b列和c列的列類型:

    ALTER TABLE t1 MODIFY COLUMN b int, MODIFY COLUMN c varchar(30), ALGORITHM=OMC;
  • 執行以下命令,修改t1表中b列的名稱和類型,並在該列後面增加一個bigint類型的e列:

    ALTER TABLE t1 CHANGE COLUMN b d int, ADD COLUMN e bigint AFTER d, ALGORITHM=OMC;