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

PolarDB:インスタントADD COLUMN

最終更新日:Dec 23, 2024

従来の方法を使用してテーブルに列を追加すると、テーブル全体が再構築され、大量のシステムリソースが消費されます。 この問題に対処するために、PolarDB for MySQLインスタントADD COLUMN機能を提供しています。 インスタントADD COLUMN機能を使用してテーブルに列を追加すると、テーブルの定義のみが変更されます。 インスタントADD COLUMN機能を使用すると、テーブルのサイズに関係なく、テーブルに列を即座に追加できます。 このトピックでは、インスタントADD COLUMN機能の使用方法について説明します。

前提条件

クラスターは、次のいずれかのデータベースエンジンバージョンを実行します。

  • リビジョンバージョンが5.6.1.0.43以降のPolarDB for MySQL5.6。 クラスターのデータベースエンジンバージョンを照会する方法については、「エンジンバージョン」トピックの「エンジンバージョンの照会」を参照してください。

    説明

    インスタントADD COLUMN機能は、PolarDB for MySQL 5.6のカナリアリリースにあります。 PolarDB for MySQL 5.6でこの機能を使用するには、Quota Centerに移動し、IDがpolardb_mysql_iac_56のクォータを見つけて、[適用] をクリックします。

  • リビジョンバージョンが5.7.1.0.6以降のPolarDB for MySQL 5.7。 クラスターのデータベースエンジンバージョンを照会する方法については、「エンジンバージョン」トピックの「エンジンバージョンの照会」を参照してください。

    説明

    PolarDB for MySQL 5.7クラスターでインスタントADD COLUMN機能を使用するには、loose_innodb_support_instant_add_columnパラメーターをONに設定する必要があります。

  • PolarDB for MySQL8.0。

    説明

    デフォルトでは、PolarDB for MySQL 8.0クラスターはインスタントADD COLUMN機能をサポートしています。 機能を有効にするためにパラメーターを設定する必要はありません。

制限事項

  • インスタントADD COLUMN機能を使用して、テーブルの最後にのみ列を追加できます。

  • インスタントADD COLUMN機能を使用して、PolarDB for MySQL 8.0でのみ仮想列をテーブルに追加できます。

  • インスタントADD COLUMN機能を使用して、PolarDB for MySQL 5.6のパーティションテーブルに列を追加することはできません。 インスタントADD COLUMN機能を使用して、PolarDB for MySQL 5.7およびPolarDB for MySQL 8.0のパーティションテーブルに列を追加できます。

    説明

    パーティションテーブルに列を即座に追加できる機能は、PolarDB for MySQL 5.7のカナリアリリースにあります。 PolarDB for MySQL 5.7でこの機能を使用するには、Quota Centerに移動し、IDがpolarM_57_iac_on_partition_tableであるクォータを見つけ、[適用] をクリックします。

  • インスタントADD COLUMN機能を使用して、フルテキストインデックスまたはインメモリ列インデックス (IMCI) が作成されているテーブルに列を追加することはできません。

  • [暗黙の主キー] オプションが有効になっているが、カスタム主キー列がないテーブルに列を追加するには、インスタント列の追加機能を使用することはできません。

  • インスタントADD COLUMN操作と他のDDL操作を同じSQL文に含めることはできません。

使用状況

  • パラメーターの設定

    PolarDB for MySQL 5.6またはPolarDB for MySQL 5.7クラスターでインスタントADD COLUMN機能を使用するには、loose_innodb_support_instant_add_columnパラメーターをONに設定する必要があります。 クラスターのパラメーターの設定方法については、「クラスターとノードパラメーターの設定」をご参照ください。

    説明

    デフォルトでは、PolarDB for MySQL 8.0クラスターはインスタントADD COLUMN列機能をサポートしています。 機能を有効にするためにパラメーターを設定する必要はありません。

    パラメーター

    レベル

    説明

    loose_innodb_support_instant_add_列

    グローバル

    インスタントADD COLUMN機能を有効にするかどうかを指定します。 有効な値:

    • オン

    • オフ

  • Executeステートメント

    • ALGORITHM=INSTANT句を指定して、インスタントADD COLUMN機能を強制的に有効にすることができます。 例:

      ALTER TABLE test.t ADD COLUMN test_column int, ALGORITHM=INSTANT;

      インスタントADD column機能を使用して列を追加できない場合、この操作ではERROR 0A000: ALGORITHM=instantはサポートされません。 ALGORITHM=COPY/INPLACE. をお試しください エラーメッセージが返されます。 この場合、loose_innodb_support_instant_add_columnパラメーターがONに設定されているかどうかを確認し、操作が制限されているかどうかを確認することを推奨します。 インスタントADD COLUMN機能の制限については、このトピックの「制限」セクションを参照してください。

    • アルゴリズムを指定しない場合、またはデフォルトのアルゴリズムを指定する場合、PolarDBは列を追加するための最速のアルゴリズムを選択します。 例:

      ALTER TABLE test.t ADD COLUMN test_column int, ALGORITHM=DEFAULT;
      ALTER TABLE test.t ADD COLUMN test_column int;
      説明

      PolarDBは、INSTANT > INPLACE > COPYの優先順位で列を追加するアルゴリズムを選択します。

  • INSTANTアルゴリズムを使用して追加された列の表示

    INNODB_SYS_INSTANT_COLUMNSテーブルという名前のテーブルが、PolarDB for MySQL 5.6およびPolarDB for MySQL 5.7クラスターのINFORMATION_SCHEMAデータベースに追加されます。 このテーブルには、列名、列シーケンス番号、デフォルト値 (バイナリ値) など、すぐに追加された列に関する情報が記録されます。 次のステートメントを実行して、すぐに追加された新しい列に関する情報を表示できます。

    SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_INSTANT_COLUMNS;
    説明

    DROP COLUMNなど、テーブルを再作成する必要があるDDL操作を実行した場合、テーブルに列をすぐに追加した後、システムはINNODB_SYS_INSTANT_columnsテーブルから列に関する情報を削除します。

    PolarDB for MySQL 8.0で次のステートメントを使用して、テーブルの列を表示できます。 インスタントADD column機能を使用して列を追加した場合、has_defaultパラメーターの値は1になります。

    SELECT * FROM INFORMATION_SCHEMA.INNODB_COLUMNS WHERE TABLE_ID = (SELECT TABLE_ID FROM INFORMATION_SCHEMA.INNODB_TABLES WHERE NAME = "test/t1");

お問い合わせ

DDL操作についてご質問がある場合は、お気軽にお問い合わせください。