file_per_table を使用して MySQL DB をセットアップしました。InnoDB にはテーブルごとに個別の .ini があることは知っていますが、スキーマを削除したとき、またはテーブルを削除したときにスペースが解放されるかどうか疑問に思っています。スキーマを削除するとスペースが返されることはわかっていますが、テーブルを削除するとスペースが再利用されるのでしょうか?
1 に答える
1
はい、別の .ibd テーブルスペース ファイルに保存されているテーブルを DROP または TRUNCATE すると、そのスペースはファイル システムに戻されます。
デモンストレーション:
$ df /var/lib/mysql
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdb 33538048 14413988 19124060 43% /var/lib/mysql
$ sudo ls -lh /var/lib/mysql/data/imdb/name2.ibd
-rw-rw---- 1 mysql mysql 168M Apr 30 02:44 /var/lib/mysql/data/imdb/name2.ibd
mysql> drop table name2;
$ df /var/lib/mysql
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdb 33538048 14151832 19386216 43% /var/lib/mysql
InnoDB テーブルを最適化することもできます。これにより、データが最適化され、インデックスが再構築されます。そのファイルに多くの無駄なスペースがある場合、最適化されたファイルは小さくなり、残りのスペースはファイルシステムに戻されます。
于 2013-05-17T19:19:16.163 に答える