MySQLでストレージエンジンにInnoDBを使うと、レコード削除しても実ファイルサイズが小さくならない。
これはInnoDBの仕様で、MyISAMだと最適化するとファイルサイズが小さくなるんだけど、InnoDBはファイルサイズが小さくならない。
なので、変換などの作業用などでInnoDBを使うとファイルサイズが膨らんじゃって、Dropしてもファイルサイズが大きいまんまって事が起きる。
とりあえず、Dropしてやったときに小さくする方法としては、設定で
innodb_file_per_table=1
を指定してやる。
通常時、MySQLはInnoDB用に唯一のファイルを作るのだが、それをやめてテーブル毎にファイルを作るようにする指定。
これを指定すると、テーブルがDropされた時にファイルが消せるので、ディスクの消費を多少抑えられる。
根本的に、テーブルの一部をDeleteした場合にファイルを小さくするには、テーブルをDumpしてDropしてファイルを削除して、Importすると言う手順が必要になる。
テーブル毎にファイルが作成されていれば、この作業が楽になるので、Deleteが多く発生することが予想される場合には、先の設定を有効にしておけば、テーブル単位で作業が済むのでメンテナンス時間を短縮できる。
(2218)