質問: mysql alter table 終わらない alter tableの処理が全然終わらなくなってしまったので、質問させて下さい。 下記のような状態です。 ・テーブルの行数は962362 ・topコマンドで見たとき、普段mysqldのcpu使用率が50~100%なのですが、alter table後に確認すると2%前後になる ・試した処理はdrop indexとadd column ・mysqlを再起動しようにもstopするのに数分かかる ・nginxを一度stopし、負荷の少ない状態でも同じことを試しましたが結果はかわりませんでした ・検索してみると、key_buffer_sizeが少なすぎることが原因という記事をみかけたので、試しにkey_buffer=512mとして、設定を読み込み直してから試してみましたが結果はかわりませんでした このような場合の原因と対策を教えて頂ければ幸いです。 足りていない情報は随時補足させていただきます。 是非回答宜しくお願い致します。
回答: ・対象テーブルと同じ構成の変更用テーブルをつくる ・あらたにインデックスをつける ・対象テーブルから変更用テーブルにデータを流し込む ・変更用テーブルをつかってテスト ・問題なければ対象テーブルを削除し、変更用テーブルを対象テーブルにリネーム という流れでやるとよいでしょう ・対象テーブルから全データを別テーブルコピー ・対象テーブルをトランケート ・インデックスを設定 ・別テーブルから対象テーブルにデータを戻し入れる でもよいかも