InnoDBでTRUNCATEした時のibdファイル
古いInnoDBではテーブルをTRUNCATEしてもibdファイルは再利用用にのこるらしい
古いバージョンのInnoDBだとTRUNCATE TABLEしてもデータファイルのサイズが減らない件 - shimxmemo
- 検証
テーブル作成して適当にデータを入れる
CREATE TABLE test (hoge VARCHAR(32),foo VARCHAR(32)) ENGINE=INNODB;
-rw-rw---- 1 mysql mysql 8588 Jan 9 12:20 test.frm
-rw-rw---- 1 mysql mysql 50331648 Jan 16 15:35 test.ibd
TRUNCATE
TRUNCATE test;
-rw-rw---- 1 mysql mysql 8588 Jan 9 12:20 test.frm
-rw-rw---- 1 mysql mysql 50331648 Jan 16 15:36 test.ibd
ibdのサイズは変わらず
ドロップして再作成
DROP TABLE test;
CREATE TABLE test (hoge VARCHAR(32),foo VARCHAR(32)) ENGINE=INNODB;
-rw-rw---- 1 mysql mysql 8588 Jan 16 15:40 test.frm
-rw-rw---- 1 mysql mysql 98304 Jan 16 15:40 test.ibd
これで再作成されてる
故、ディスク容量を減らしたいのならTRUNCATEの代わりにDROP&CREATE
- TRUNCATEの代用
InnoDBを新しくすればいんだけど
取り敢えずLIKEしてRENAMEで代用
CREATE TABLE test_tmp LIKE test;
DROP TABLE test;
RENAME test_tmp TO test;
- InnoDB Plugin