InnoDBを使うと一度増えた容量が減らない – MySQL

 MySQLでストレージエンジンにInnoDBを使うと、レコード削除しても実ファイルサイズが小さくならない。
 これはInnoDBの仕様で、MyISAMだと最適化するとファイルサイズが小さくなるんだけど、InnoDBはファイルサイズが小さくならない。
 なので、変換などの作業用などでInnoDBを使うとファイルサイズが膨らんじゃって、Dropしてもファイルサイズが大きいまんまって事が起きる。
 とりあえず、Dropしてやったときに小さくする方法としては、設定で
innodb_file_per_table=1
を指定してやる。
 通常時、MySQLはInnoDB用に唯一のファイルを作るのだが、それをやめてテーブル毎にファイルを作るようにする指定。
 これを指定すると、テーブルがDropされた時にファイルが消せるので、ディスクの消費を多少抑えられる。

 根本的に、テーブルの一部をDeleteした場合にファイルを小さくするには、テーブルをDumpしてDropしてファイルを削除して、Importすると言う手順が必要になる。
 テーブル毎にファイルが作成されていれば、この作業が楽になるので、Deleteが多く発生することが予想される場合には、先の設定を有効にしておけば、テーブル単位で作業が済むのでメンテナンス時間を短縮できる。

(2218)


カテゴリー: LAMP[Linux, Apache, MySQL, PHP]   パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です