すべてのプロダクト
Search
ドキュメントセンター

PolarDB:テーブルをロックせずに列のデータ型を変更する

最終更新日:Apr 11, 2025

列の型を変更する操作は、DML 操作をブロックします。PolarDB-X は、オンラインでテーブルをロックせずに列の型を変更できるオンライン列変更(OMC)機能を提供します。

サポートされているバージョン

  • テーブルをロックせずに列の型を変更するには、インスタンスが V5.4.18-17108394 以降である必要があります。

  • テーブルをロックせずに列を追加または削除するだけの操作の場合、インスタンスは V5.4.20-20241224 以降である必要があります。

  • データ管理 (DMS) を使用してテーブルをロックせずに操作を実行するには、インスタンスが V5.4.20-20241224 以降である必要があります。

説明

注意事項

  • シャードキー、パーティションキー、またはプライマリキーとして使用されている列の名前は変更できません。ただし、これらの列の型は変更できます。

  • シャードキー、パーティションキー、またはプライマリキーに含まれている列は削除できません。

  • 新しく作成された列の定義に、UNIQUEKEY などのキーワードを追加することはできません。

  • 生成列、または生成列の式で参照される列は変更できません。

  • MODIFY COLUMNCHANGE COLUMNDROP COLUMN、および ADD COLUMN 操作のみがサポートされています。ADD INDEXDROP INDEXSET DEFAULT などの他の操作はサポートされていません。

利点

  • AUTO モードと DRDS モードのデータベースがサポートされています。

  • 複数の列の型を同時に変更できます。

  • 同じ文を使用して、列の型を変更したり、列を追加または削除したりできます。

構文

ALTER TABLE 文は、PolarDB-XALGORITHM=OMC が指定されている場合にのみ、テーブルをロックせずに実行されます。キーワードが指定されていない場合は、デフォルトで標準の MySQL アルゴリズムが使用されます(DML 操作をブロックするメタデータロックがトリガーされる場合があります)。

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]
}

これらの例は、AUTO モードのデータベースでテーブルをロックせずに列の型を変更する方法を示しています。

  1. テーブル t1 を作成します。

    CREATE TABLE t1(a INT PRIMARY KEY, b TINYINT, c VARCHAR(10)) PARTITION BY KEY(a);
  2. テーブル t1 の列 bc の型を変更します。

    ALTER TABLE t1 MODIFY COLUMN b INT, MODIFY COLUMN c VARCHAR(30), ALGORITHM=OMC;
  3. テーブル t1 の列 b の名前と型を変更し、BIGINT 型の新しい列 e を追加します。

    ALTER TABLE t1 CHANGE COLUMN b d INT, ADD COLUMN e BIGINT AFTER d, ALGORITHM=OMC;