目次
テーブルのOPTIMIZEをしたら、Table does not support optimize, doing recreate + analyze insteadと出てきた
MySQLTunerを使ってデータベースのチェックをした際に、テーブルのOPTIMIZEをした方がパフォーマンスが良くなるよと言われました。
Run OPTIMIZE TABLE to defragment tables for better performance
OPTIMIZE TABLE `hoge`.`hoge`; -- can free 55 MB
OPTIMIZE TABLE `hoge`.`hoge`; -- can free 20 MB
OPTIMIZE TABLE `hoge`.`hoge`; -- can free 125 MB
Total freed space after theses OPTIMIZE TABLE : 200 Mb
OPTIMIZEをすることで、200Mも最適化できるとのことなので、対応を進めていきます。
$ OPTIMIZE TABLE `hoge`.`hoge`;
+------------------------+----------+----------+-------------------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+------------------------+----------+----------+-------------------------------------------------------------------+
| hoge.hoge | optimize | note | Table does not support optimize, doing recreate + analyze instead |
| hoge.hoge | optimize | status | OK |
+------------------------+----------+----------+-------------------------------------------------------------------+
Table does not support optimize, doing recreate + analyze insteadと出てきました。
OPTIMIZEはできているので問題ない
Table does not support optimize, doing recreate + analyze insteadと出てくるのは、InnoDBのテーブルをOPTIMIZEしようとしたときに、内部的にはOPTIMIZEではなく、ALTER TABLEで対応を行なっており、再度テーブルを作成して、インデックスの貼り直しを行なっています。そのため、その処理の記録として、note というメッセージタイプで、該当のテーブルはOPTIMIZEはサポートしていないけど、代わりに再度テーブルを作成して、インデックスの貼り直しをしているよ、と表示しています。
そのため、statusでOKが出ていれば、問題なく完了です。