bigmac-jp blog

web開発関連のメモ

MySQL メモ8 AlterTbaleの注意点

MySQL5.5以前を使っている場合は、AlterTableを実行した場合、対象テーブルへのwrite処理はブロックされる。
そのため本番環境がアクティブな状況では、運用に支障が起きる可能性が高かった。

MySQL5.6以降では、OnlineDDL機能が登場し、テーブルの複製が不要となり、テーブルのロックをしないでAlterTableが実行可能となった。(すべてのAlterTableができるわけではない。)
https://dev.mysql.com/doc/refman/5.6/ja/innodb-create-index-overview.html


あくまでも実行可能であるため、パフォーマンスは低下する可能性があるし、一時的なテーブルロックも発生することはあるらしい。
本番環境でAlterTbaleを実行する場合は、メンテナンス中に実行することが安全である。

メンテナンス中に実行する場合でも、AlterTableがどのくらい掛かるのかは事前に調査する必要がある。
メンテナンス中に終わらない可能性ももちろんある。


一番確実なのは、本番環境と同一環境を作成して、本番環境データで一度AlterTableを実行する。その処理時間を参考にするといいと思う。