列タイプを変更する操作は、データノードでの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;