経緯
IT後に試験環境に追加したINDEXを削除しようとしたら一向に終わらない。
MySQL 5.6
試したこと
MySQLのINDEX削除は絶望的に時間が掛かるらしい
MySQLのALTER TABLEは絶望的に時間が掛かるとの記事が多数。
(INDEX追加はそんなに時間が掛からなかったんだが…)
参照可能って話なのにSELECT出来ない。
更新のみ不可って記事を見たので、それなら実行しっぱなしで帰ればいいか…と思ったが、DROP INDEXを走らせて別窓からSELECTを掛けるも帰ってこない。
SHOW PROCESSLISTで実行中の処理を確認するとWaiting for table metadata lock。
参照できるって話ではなかったのか…。とりあえずKILLしてロック解除。
テーブルロックを掛けずに実行する方法を探す
ALTER TABLE に ALGORITHM=INPLACE LOCK=NONE を設定すればテーブルロックを掛けずに実行できるらしい。早速実行。
エラーは出ないので成功かと思ったが、SELECTを掛けると結局参照すら不可。
解決策
結局夜間帯に裏で実行させて朝終わってることを確認。(解決してない)
50,000件レコードのINDEX削除に8時間かかりました。
参考にさせて頂いた記事
InnoDBオンラインDDLについて
mysql 5.6~でのalter tableでやらかさない
そのALTER TABLEがオンラインALTER TABLEかどうかを確かめる方法