通常、InnoDB
テーブルに対して ALTER TABLE
ステートメントを使用する場合、オンライン DDL を有効にするために特殊なことをする必要はありません。インプレースで実行できるか、並列 DML を許可するか、またはその両方の DDL 操作の種類については、表14.5「DDL 操作のオンラインステータスのサマリー」を参照してください。一部の種類には、構成設定または ALTER TABLE
句の特定の組み合わせが必要になります。
ALTER TABLE
ステートメントの LOCK
および ALGORITHM
句を使用することによって、特定のオンライン DDL 操作のさまざまな側面を制御できます。これらの句はステートメントの最後に現れ、テーブルやカラムの指定とはカンマで区切られます。LOCK
句は、テーブルへの並列アクセスの程度を微調整するのに役立ちます。ALGORITHM
句は、主にパフォーマンス比較を目的にしているほか、既存の DDL コードで何らかの問題が発生した場合の古いテーブルコピー動作へのフォールバックとしても使用されます。例:
テーブルの読み取り、書き込み、またはその両方を誤って不可能にしてしまうことがないようにするには、
ALTER TABLE
ステートメントでLOCK=NONE
(読み取りと書き込みの両方を許可する) やLOCK=SHARED
(読み取りを許可する) などの句を指定できます。要求されたレベルの並列性が使用できない場合、操作はただちに停止します。パフォーマンスを比較するには、
old_alter_table
構成オプションを設定する代わりに、1 つのステートメントをALGORITHM=INPLACE
で、もう 1 つのステートメントをALGORITHM=COPY
で実行できます。テーブルをコピーした
ALTER TABLE
を実行することによってサーバーが結合されてしまう可能性をなくすには、インプレースメカニズムを使用できなければステートメントがただちに停止するようにALGORITHM=INPLACE
を含めることができます。インプレースで実行できるか、またはできない DDL 操作のリストについては、表14.5「DDL 操作のオンラインステータスのサマリー」を参照してください。
LOCK
句の詳細は、セクション14.11.2「オンライン DDL でのパフォーマンスと並列性に関する考慮事項」を参照してください。オンライン DDL の使用の完全な例については、セクション14.11.5「オンライン DDL の例」を参照してください。