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

PolarDB:テーブルをロックせずに列タイプを変更する

最終更新日:Jun 11, 2024

列タイプを変更する操作は、データノードでのDML操作をブロックし、ビジネスに影響します。 このトピックでは、PolarDB-XでOnline Modify Column (OMC) を使用して、テーブルをロックせずに列の種類を変更する方法について説明します。

前提条件

PolarDB-XインスタンスのカーネルバージョンはV5.4.18-17108394以降である必要があります。

制限事項

  • OMCは、カーネルバージョンがV5.4.18-17108394以降のPolarDB-Xインスタンスのみをサポートします。

  • 列を追加または削除するだけの場合、ALGORITHMをOMCに設定することはできません。

  • シャードキー、パーティションキー、または主キーの列の名前は変更できません。 ただし、これらの列の型は変更できます。

  • シャードキー、パーティションキー、または主キー列は削除できません。

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

  • MODIFY COLUMN、CHANGE COLUMN、DROP COLUMN、およびADD COLUMN操作のみがサポートされています。 ADD INDEX、DROP INDEX、SET DEFAULTなどのその他の操作はサポートされていません。

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

構文

次のサンプルコードでは、OMCを使用する構文について説明します。 OMCを使用して、一度に複数の列のタイプを変更できます。 OMCを使用して、列の種類を変更し、同時に列を追加または削除することもできます。

ALTER TABLE tbl_name
    alter_option [, alter_option] ...
    アルゴリズム=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]
  | ドロップ [コラム] col_name
  | MODIFY [コラム] col_name column_definition
        [FIRST | AFTER col_name]
} 

OMCの使用

ALGORITHM句が指定されていない場合、またはALTER TABLEステートメントでALGORITHMをINPLACEやCOPYなどの他の値に設定した場合、このステートメントはDML操作をブロックします。 OMCは、ALGORITHMをOMCに設定した場合にのみ有効になります。

説明

OMCはAUTOおよびDRDSモードのデータベースをサポートします。 この例では、ステートメントはデータベース上でAUTOモードで実行されます。

  • 次のステートメントを実行して、t1という名前のテストテーブルを作成します。

    CREATE TABLE t1 (intプライマリキー、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;