我有一个使用 file_per_table 设置的 MySQL 数据库。我知道 InnoDB 对每个表都有一个单独的 .ini,但我想知道当我删除模式或删除表时是否释放了空间。我知道当我删除一个模式时我会收回空间,我想知道如果我删除一个表我会回收空间吗?
问问题
97 次
1 回答
1
是的,如果您 DROP 或 TRUNCATE 存储在单独的 .ibd 表空间文件中的表,则该空间将返回到文件系统。
示范:
$ 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 回答