mysqlで更新クエリの多いテーブルにカラム追加したらDB負荷が高まりサイトが落ちました。
PHP+mysqlでwebサービス稼働中なのですが、更新クエリ(トランザクション)が多く発行されるテーブルに対し日中、ALTER TABLEでカラム1件を追加したところ、DB負荷が高まりサイトアクセスできなくなり、mysqlを再起動せざるを得ない状態となりました。
漢のコンピュータ道氏のサイトによりますと以下のように書かれてあり、これは負荷かかるだろうなと思いました。
まず結論から言うと、なんとMySQLのALTER
TABLEはテーブルのデータを全てコピーし直すのである。なんて無駄なことを!?と思うかも知れないが、テーブル定義(スキーマ)の変更を動的に行うには、ストレージエンジンによるサポートが必要であり、動的なスキーマ変更をサポートしているストレージエンジンはまだ少ないのである。
みなさんはサービス稼働中のサイトにどのようにALTER TABLEを実行していますか?
サービスを止めたりしていますか?または深夜に行う等
■バージョン情報
バージョン:5.1.73
ストレージエンジン:INNODB