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

PolarDB:テーブル末尾へのインスタントカラム追加

最終更新日:Mar 14, 2026

従来の列追加では、テーブル全体を再構築する必要があり、大量のシステムリソースを消費します。PolarDB for MySQL クラスターは、インスタントカラム追加をサポートしています。これにより、テーブルサイズに関係なく、数秒で列を追加できます。

インスタントカラム追加機能は、INSTANT アルゴリズムを使用して DDL 操作を実行します。この機能はデータディクショナリ内のメタデータのみを変更し、既存データの変更やコピー、テーブルの再構築は行いません。そのため、このプロセスはテーブルサイズに関係なく機能し、DDL 操作全体が数秒で完了します。

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

ご利用のクラスターは、次のいずれかのバージョンを実行している必要があります:

  • PolarDB for MySQL 5.6 (リビジョン 5.6.1.0.43 以降)。

    説明

    PolarDB for MySQL 5.6 のインスタントカラム追加機能はカナリアリリース中です。この機能を使用するには、クォータセンターに移動してください。polardb_mysql_iac_56 という名前のクォータを見つけ、[操作] 列の [申請] をクリックします。

  • PolarDB for MySQL 5.7 (リビジョン 5.7.1.0.6 以降)。

    説明

    PolarDB for MySQL 5.7 クラスターでこの機能を使用する前に、loose_innodb_support_instant_add_column パラメーターを有効にする必要があります。

  • PolarDB for MySQL 8.0。

    説明

    PolarDB for MySQL 8.0 クラスターは、デフォルトでインスタントカラム追加をサポートしています。パラメーターの設定は不要です。

クラスターのリビジョン番号を確認できます。詳細については、「バージョン番号の確認」をご参照ください。

制限事項

  • 列は、テーブルの最後の列としてのみ追加できます。

  • 仮想カラムの追加:

    • PolarDB for MySQL 5.6 および 5.7:サポートされていません。

    • PolarDB for MySQL 8.0:サポートされています。

  • パーティションテーブルへのフィールドの秒速追加:

    • PolarDB for MySQL 5.6:サポートされていません。

    • PolarDB for MySQL 5.7 および 8.0:サポートされています。

      説明

      PolarDB for MySQL 5.7 のパーティションテーブルに対するインスタントカラム追加機能はカナリアリリース中です。この機能を使用するには、クォータセンターに移動してください。polarM_57_iac_on_partition_table という名前のクォータを見つけ、[操作] 列の [申請] をクリックします。

  • テーブルの全文検索インデックスはサポートされていません。

  • ROW_FORMAT が COMPRESSED に設定されているテーブルはサポートされていません。

  • インメモリ列指向インデックス (IMCI) を持つテーブルにインスタントカラム追加は可能ですが、以下の条件を満たす必要があります:

    • PolarDB for MySQL 8.0.1.1.42 以前、または 8.0.2.2.23 以前の場合:imci_enable_add_column_instant_ddl パラメーターを ON に設定します。有効にすると、インスタントカラム追加は IMCI のサイレントなバックグラウンドでの再構築をトリガーします。再構築中、IMCI は利用できません。

    • PolarDB for MySQL 8.0.1.1.42 以降、または 8.0.2.2.23 以降の場合:imci_enable_add_column_instant_ddl パラメーターを OFF に設定します。

  • implicit_primary_key オプションが有効になっているテーブルには、カスタムプライマリキーが必要です。

  • インスタントカラム追加を、インデックスの追加など他の DDL 操作と同一の SQL ステートメント内で組み合わせることはできません。

使用方法

パラメーター設定

  • PolarDB for MySQL 5.6 および 5.7 クラスターloose_innodb_support_instant_add_column パラメーターを有効にして、インスタントカラム追加を使用します。手順については、「パラメーターの有効化」をご参照ください。

    パラメーター

    レベル

    説明

    loose_innodb_support_instant_add_column

    グローバル

    インスタントカラム追加を有効または無効にします。有効な値:

    1. ON:インスタントカラム追加を有効にします。

    2. OFF (デフォルト):インスタントカラム追加を無効にします。

  • PolarDB for MySQL 8.0 クラスター:パラメーターを設定せずにインスタントカラム追加を使用できます。

構文

  • ALGORITHM=INSTANT を指定して、インスタントカラム追加を強制します。例:

    ALTER TABLE <table_name> ADD COLUMN <column_name> int, ALGORITHM=INSTANT;
    説明

    このステートメントが ERROR 0A000: ALGORITHM=INSTANT is not supported for this operation. Try ALGORITHM=COPY/INPLACE. を返す場合、この操作ではインスタントカラム追加はサポートされていません。loose_innodb_support_instant_add_column パラメーターが有効になっているかを確認し、制限事項を確認してください。

  • ALGORITHM 句を省略するか、ALGORITHM=DEFAULT を指定します。PolarDB は自動的に最速のアルゴリズムを選択します。例:

    ALTER TABLE <table_name> ADD COLUMN <column_name> int, ALGORITHM=DEFAULT;
    ALTER TABLE <table_name> ADD COLUMN <column_name> int;
    説明

    PolarDB は、INSTANT > INPLACE > COPY の順にアルゴリズムを選択します。

INSTANT アルゴリズムで追加された列情報の表示

  • PolarDB for MySQL 5.6 および 5.7 クラスターINFORMATION_SCHEMA データベースに INNODB_SYS_INSTANT_COLUMNS という名前の新しいテーブルが表示されます。このテーブルには、INSTANT アルゴリズムを使用して追加された列の詳細 (列名、序数、デフォルト値 (バイナリ形式で保存) など) が格納されます。次のステートメントを実行して詳細を表示できます:

    SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_INSTANT_COLUMNS;
    説明

    INSTANT アルゴリズムを使用して対象テーブルに列を追加した後、テーブルの再構築をトリガーする DDL 操作 (例:OPTIMIZE TABLE) を実行すると、テーブルは物理的に再構築されます。このプロセス中に、元の INSTANT 列は自動的に通常の列に変換され、そのデータは新しいテーブルに完全に保持されます。これらの列は INSTANT アルゴリズムをサポートしなくなるため、システムテーブル INNODB_SYS_INSTANT_COLUMNS 内の対応するレコードは削除されます。

  • PolarDB for MySQL 8.0 クラスター:次のステートメントを実行して列の詳細を表示できます。has_default 列に 1 が表示されている場合、その列は INSTANT アルゴリズムを使用して追加されたものです。

    SELECT * FROM INFORMATION_SCHEMA.INNODB_COLUMNS WHERE TABLE_ID = (SELECT TABLE_ID FROM INFORMATION_SCHEMA.INNODB_TABLES WHERE NAME = "<database_name>/<table_name>");

お問い合わせ

DDL 操作についてご不明な点がある場合は、テクニカルサポートにお問い合わせください。