このトピックでは、Instant ADD COLUMN機能と、この機能を使用してテーブルに列を即座に追加する方法について説明します。
従来の方法でテーブルに列を追加する場合、データノードはすべての物理シャードのデータを再構築する必要があります。 このプロセスは、大量のシステムリソースを必要とします。 PolarDB-Xは、インスタントADD COLUMN機能を提供します。 この機能は、テーブルの定義のみを更新し、既存のデータを変更しないことで、テーブルに列を追加します。 この機能により、テーブルのサイズに関係なく、テーブルに列をすばやく追加できます。
前提条件
インスタンスは、V5.4.13-16504348で実行されるPolarDB-X 2.0インスタンスです。
デフォルトでは、データノード (DN) バージョンが5.7のインスタンスではこの機能は無効になっています。 このようなインスタンスでこの機能を有効にするには、support_instant_add_columnパラメーターをONに設定する必要があります。 詳細については、このトピックの「使用方法」セクションをご参照ください。
DNバージョンが8.0のインスタンスの場合、この機能は自動的に有効になります。
DNバージョンに関する情報を取得するには、PolarDB-Xコンソールにログインし、インスタンスの ページに移動し、[構成情報] セクションの [互換性] パラメーターの値を表示します。
制限事項
この機能を使用して主キー列を追加することはできません。
この機能を使用して、ROW_FORMAT属性がCOMPRESSEDに設定されているテーブルに列を追加することはできません。
説明SHOW CREATE TABLE
ステートメントを実行して、テーブルのROW_FORMAT属性がCOMPRESSEDに設定されているかどうかを確認します。この機能を使用して、フルテキストインデックスを含むテーブルに列を追加することはできません。
この機能を使用して、物理パーティションを含むテーブルに列を追加することはできません。
説明SHOW CREATE TABLE
ステートメントを実行して、テーブルにLOCAL PARTITION BY
句が含まれているかどうかを確認します。DNバージョンが5.7のインスタンスの場合、
INSTANT ADD COLUMN
ステートメントを実行して、既存の列の最後にのみ列を追加できます。この機能を有効にするには、
ALTER TABLE
ステートメントに列を追加する操作のみを含める必要があります。 同じALTER TABLEステートメントに他の操作が含まれている場合、この機能は有効になりません。
使用量
パラメータ (DNバージョン: 5.7)
パラメーター | レベル | 説明 |
loose_innodb_support_instant_add_column | グローバル | インスタントADD COLUMN機能を有効にするかどうかを指定します。 有効な値:
|
インスタントADD COLUMN機能を有効にするには、次の操作を実行します。
PolarDB-Xコンソールにログインし、 ページに移動し、loose_innodb_support_instant_add_columnパラメーターをonに設定します。
ステートメント
列を追加するときにインスタントADD COLUMN機能を有効にするには、ALTER TABLE add columnステートメントでALGORITHM=Instantを指定します。 NPLACEやCOPYなどの他のアルゴリズムを指定すると、Instant ADD COLUMN機能は無効になります。
既定では、インスタントADD COLUMN機能は、DNバージョンが8.0のインスタンスに対して有効になっています。 ALTER TABLE ADD COLUMNステートメントでALGORITHM=INSTANTを指定しない場合でも、この機能は有効になります。 例:
ALTER TABLE test ADD COLUMN col1 int;
インスタントADD COLUMN機能を強制的に有効にするには、ALTER TABLE ADD COLUMNステートメントでALGORITHM=Instantを指定します。 例:
ALTER TABLE test ADD COLUMN col2 int, ALGORITHM=INSTANT;
インスタントADD COLUMN機能を無効にするには、ALTER TABLE ADD COLUMNステートメントでALGORITHM=INPLACEまたはALGORITHM=COPYを指定します。 例:
ALTER TABLE test ADD COLUMN col3 int, ALGORITHM=INPLACE; ALTER TABLE test ADD COLUMN col4 int, ALGORITHM=COPY;