このページは機械翻訳したものです。
オンライン DDL 機能では、即時およびインプレースのテーブル変更および同時 DML がサポートされます。 この機能の利点は次のとおりです:
- ビジーな本番環境での応答性と可用性が向上し、テーブルを数分間または数時間使用できなくなります。 
- インプレース操作の場合、 - LOCK句を使用して DDL 操作中のパフォーマンスと同時実行性のバランスを調整する機能。 LOCK 句を参照してください。
- テーブルコピー方法よりもディスク領域の使用量と I/O のオーバーヘッドが少なくなります。 
      ALGORITHM=INSTANT のサポートは、ADD COLUMN および MySQL 8.0.12 のその他の操作で使用できます。
    
通常、オンライン DDL を有効にするために特別な操作を行う必要はありません。 デフォルトでは、MySQL は操作を許可されているとおりに即時またはインプレースで実行しますが、ロックはできるかぎり少なくなります。
    ALTER TABLE ステートメントの ALGORITHM 句および LOCK 句を使用して、DDL 操作の側面を制御できます。 これらの句は、テーブルおよびカラムの指定からカンマで区切ってステートメントの最後に配置されます。 例: 
  
ALTER TABLE tbl_name ADD PRIMARY KEY (column), ALGORITHM=INPLACE, LOCK=NONE;
    LOCK 句は、インプレースで実行される操作に使用でき、操作中のテーブルへの同時アクセスの程度を微調整する場合に役立ちます。 即時に実行される操作では、LOCK=DEFAULT のみがサポートされます。 ALGORITHM 句は、主にパフォーマンスの比較と、問題が発生した場合の古いテーブルコピー動作へのフォールバックを目的としています。 例: 
  
- インプレースの - ALTER TABLE操作中に、誤ってテーブルを読取りまたは書込み (あるいはその両方) に使用できないようにするには、- LOCK=NONE(読取りおよび書込みの許可) や- LOCK=SHARED(読取りの許可) などの句を- ALTER TABLEステートメントに指定します。 要求されたレベルの並列性が使用できない場合、操作はただちに停止します。
- アルゴリズム間でパフォーマンスを比較するには、 - ALGORITHM=INSTANT、- ALGORITHM=INPLACEおよび- ALGORITHM=COPYでステートメントを実行します。- old_alter_table構成オプションを有効にしてステートメントを実行し、- ALGORITHM=COPYを強制的に使用することもできます。
- テーブルをコピーする - ALTER TABLE操作でサーバーがタイアップされないようにするには、- ALGORITHM=INSTANTまたは- ALGORITHM=INPLACEを含めます。 指定されたアルゴリズムを使用できない場合、ステートメントはただちに停止します。