適用シーン
この機能は主にオンライン業務の超大規模テーブルに対するDDL操作に対して、秒単位の変更を実現します。
機能説明
この機能はインスタントアルゴリズムによってデータコピーを回避し、大規模テーブルの列変更を高速化します。データをコピーせず、ディスク容量やディスクI/Oを占有しないため、ビジネスピーク時でも秒単位の変更を実現できます。
バージョン制限
MySQL 5.7 カーネルマイナーバージョン2.1.3以上でこの機能をサポートします。
MySQL 8.0 カーネルのマイナーバージョン3.1.1以上がこの機能をサポートします。
使用説明
現在、Instant DDLがサポートしている操作はADD COLUMNです。
インスタントカラム追加手順
MySQL 8.0 カーネルのマイナーバージョン3.1.1から3.1.10の操作手順
MySQL 8.0 カーネルマイナーバージョン3.1.12以上の操作手順
Instant Add Columnの構文。
Alter Tableにalgorithm = instant句を追加し、列追加操作は以下の文で実行できます:
ALTER TABLE t1 ADD COLUMN c INT, ADD COLUMN d INT DEFAULT 1000, ALGORITHM=INSTANT;
新規パラメータ innodb_alter_table_default_algorithm を追加します。これは inplace または instant に設定可能で、デフォルト値は instant です。
列追加操作は以下の文で実行できます:
ALTER TABLE t1 ADD COLUMN c INT, ADD COLUMN d INT DEFAULT 1000;
インスタント・カラム追加の制限
列追加操作のみを単一文で実行可能であり、他の操作を同一文で併用する場合はサポートされません。
追加された列は最後に配置され、列の順序の変更はサポートされません。
行フォーマットがCOMPRESSEDのテーブルでは高速列追加をサポートしていません。
全文検索インデックスがすでに存在するテーブルでは高速列追加をサポートしていません。
一時テーブルでは高速列追加をサポートしていません。