0

file_per_table を使用して MySQL DB をセットアップしました。InnoDB にはテーブルごとに個別の .ini があることは知っていますが、スキーマを削除したとき、またはテーブルを削除したときにスペースが解放されるかどうか疑問に思っています。スキーマを削除するとスペースが返されることはわかっていますが、テーブルを削除するとスペースが再利用されるのでしょうか?

4

1 に答える 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 に答える