オンラインDDL機能はMySQL 5.1およびMySQL 5.5で使用可能な機能に基づいて構築されています。機能は,テーブルコピー動作を行わないように创建索引
と指数下降
を最適化しました。MySQL 5.6で導入されたオンラインDDL機能は,ほかのタイプの多くのALTER TABLE
操作を,テーブルコピー,DDLが進行中のDML操作のブロック化,またはその両方を行わないように拡張しています。
オンラインDDL機能には,次の利点があります。
インデックスやカラム定義を変更する場合は常に,テーブルを数分または数時間にわたって使用できなくすることが現実的でないビジー状態の本番環境での応答性と可用性を向上させます。
テーブルへのアクセスを完全にブロックするか(
锁=独家
句),クエリーを許可するが,dmlは許可しないか(锁=共享
,またはテーブルへの完全なクエリーおよびDMLアクセスを許可するか(锁=没有
句)どうかを選択することによって,DDL操作中のパフォーマンスと並列性のバランスを調整できます。锁
句を省略するか,または锁=违约
を指定すると,MySQLは,操作の種類に応じてできるだけ高い並列性を許可します。テーブルの新しいコピーを作成するのではなく,可能な場合はインプレースで変更を行うことによって,テーブルのコピーおよびすべてのセカンダリインデックスの再構築のためのディスク領域の使用量やI / Oオーバーヘッドの一時的な増加が回避されます。
MySQLクラスタのNDB
ストレージエンジンは,オンラインのテーブルスキーマ変更もサポートしていますが,InnoDB
のオンライン操作に使用されるものとは互換性のない独自の構文を使用します。詳細は,セクション13.1.7.2“MySQL集群でのALTER TABLEオンライン操作“を参照してください。