Open1

【DB】データベースが稼働している間にテーブルの構造を変更することができる「オンラインDDL」について📝

まさぴょん🐱まさぴょん🐱

「オンラインDDL」について📝

オンラインDDL(Data Definition Language)は、データベースが稼働している間にテーブルの構造を変更することを可能にする機能です。
従来のDDL操作では、テーブルの構造を変更する際にはそのテーブルがロックされ、変更が完了するまで他の操作ができなくなることが一般的でした。
しかし、オンラインDDLを使用すると、テーブルの構造を変更している間も、そのテーブルに対する読み書きが可能になり、データベースの可用性を維持しながら構造の変更が行えるようになります。

https://zenn.dev/akito_ima/articles/76ffb4efadbe01

Pros

MySQL5.5以前でもオンラインDDLが利用が可能
INPLACEでデータがコピーされて負荷が高めのケースにも負荷を抑えることが可能

Cons

INPLACEやINSTANTに比べて手順が煩雑で難易度が高め(ミスするとレプリケーションがコケて一時的にデータ欠損が発生する)
AUTO_ICMREMENTによる採番で歯抜けが発生するようになるので、歯抜けが一時的にでも許容されない場合は使えない
レプリカラグが大きく、それを許容できないような環境では使えない

https://qiita.com/doriven/items/6d31f01589d6cfcc1b85

https://dev.mysql.com/doc/refman/8.0/ja/innodb-online-ddl-operations.html

https://dev.mysql.com/doc/refman/8.0/ja/innodb-online-ddl.html