MySQL 8.0 リファレンスマニュアル


15.12.5 オンライン DDL 失敗条件

オンライン DDL 操作の失敗は、通常、次のいずれかの状況が原因です:

  • ALGORITHM 句では、特定のタイプの DDL 操作またはストレージエンジンと互換性のないアルゴリズムを指定します。

  • LOCK 句では、特定のタイプの DDL 操作と互換性のない低レベルのロック (SHARED または NONE) を指定します。

  • テーブルでの exclusive lock の待機中にタイムアウトが発生し、DDL 操作の初期フェーズおよび最終フェーズで短時間必要になる場合があります。

  • tmpdir または innodb_tmpdir ファイルシステムのディスク領域が不足していますが、MySQL はインデックスの作成中に一時ソートファイルをディスクに書き込みます。 詳細は、セクション15.12.3「オンライン DDL 領域の要件」を参照してください。

  • 操作には時間がかかり、同時 DML は一時オンラインログのサイズが innodb_online_alter_log_max_size 構成オプションの値を超えるようにテーブルを変更します。 この状態は DB_ONLINE_LOG_TOO_BIG エラーの原因になります。

  • 同時 DML は、元のテーブル定義では許可されているが、新しいテーブル定義では許可されていないテーブルに変更を加えます。 この操作は、MySQL がいちばん最後に、並列 DML ステートメントからのすべての変更を適用しようとしたときにのみ失敗します。 たとえば、一意のインデックスの作成中にカラムに重複した値を挿入したり、そのカラムでの主キーのインデックスの作成中にカラムに NULL 値を挿入したりすることがあります。 並列 DML によって行われた変更が優先され、ALTER TABLE 操作は実質的にロールバックされます。


関連キーワード:  InnoDB, テーブル, 構成, インデックス, オンライン, ロック, 圧縮, スペース, 操作, INFORMATION