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

PolarDB:インスタントADD COLUMN

最終更新日:Sep 14, 2024

通常、テーブルに列を追加する場合は、テーブル全体を再構築する必要があります。 これは、大量のシステムリソースを消費します。 PolarDB for MySQLは、インスタントADD COLUMN機能をサポートしています。 列を追加するときは、既存のデータではなく、テーブルの定義のみを変更する必要があります。 これにより、テーブルのサイズに関係なく、テーブルに列を即座に追加できます。 このトピックでは、インスタントADD COLUMN機能の使用方法について説明します。

前提条件

クラスターは、次のいずれかのバージョン要件を満たしています。

  • リビジョンバージョンが5.6.1.0.43以降のPolarDB for MySQL 5.6クラスター。 クラスターのバージョンを表示する方法については、「エンジンバージョンの照会」をご参照ください。

    説明

    この機能は、PolarDB for MySQL 5.6のカナリアリリースにあります。 この機能を使用するには、クォータセンターに移動します。 polardb_mysql_iac_56クォータIDを入力して、クォータ名を見つけます。 [操作] 列の [適用] をクリックします。

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

    説明

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

  • PolarDB for MySQLの8.0。

    説明

    この機能は、PolarDB for MySQLの8.0クラスターですぐに使用できます。 追加の設定は必要ありません。

制限事項

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

  • 仮想列はサポートされていません (PolarDB for MySQL 8.0でサポートされています) 。

  • パーティションテーブルはサポートされていません (PolarDB for MySQL 8.0でサポートされています) 。

  • フルテキストインデックスまたはIMCIを使用するテーブルはサポートされていません。

  • 暗黙の主キーが有効で、カスタム主キーがないテーブルはサポートされていません。

  • 同じSQL文で、インスタントADD COLUMN操作を他のDDL操作と一緒に実行することはできません。

インスタントADD COLUMN機能を使用する

  • パラメーター

    PolarDB For MySQL 5.6とPolarDB for MySQL 5.7のクラスターの場合、loose_innodb_support_instant_add_ パラメーターを設定して機能を有効にする必要があります。 パラメーターの設定方法の詳細については、「クラスターとノードパラメーターの設定」をご参照ください。

    説明

    PolarDB For MySQL 8.0のクラスターの場合、このパラメーターを設定する必要はありません。

    パラメーター

    レベル

    説明

    loose_innodb_support_instant_add_列

    グローバル

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

    • オン

    • オフです。

  • ステートメント

    • ALGORITHMをINSTANTに設定すると、この機能を強制的に有効にできます。 例:

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

      インスタントアルゴリズムが使用できない場合、この操作ではERROR 0A000: algorithm=instantメッセージをお試しください が返されます。 この場合、loose_innodb_support_instant_add_ パラメーターがONに設定されているかどうかを確認し、[制限] のルールを確認することを推奨します。

    • ALGORITHMをDEFAULTに設定した場合、またはALGORITHMを指定しない場合、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です。

  • インスタントアルゴリズムを使用して追加された列の表示

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

    SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_INSTANT_COLUMNS;
    説明

    指定したテーブルに列を即座に追加した後、DROP COLUMNなどのテーブルの再作成が必要なDDL操作を実行すると、INNODB_SYS_INSTANT_columnsテーブルから列に関する情報が削除されます。

    PolarDB For MySQL 8.0の場合、次のステートメントを使用してテーブルの列を表示できます。 インスタントアルゴリズムを使用して列を追加した場合、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操作についてご質問がある場合は、お気軽にお問い合わせください。