Mysql InnoDB文件每表存储版本

Mysql InnoDB文件每表存储版本,mysql,innodb,Mysql,Innodb,我有一个MySQL数据库,每个表有一个文件。我知道InnoDB对每个表都有一个单独的.ini,但我想知道当我删除模式或表时是否释放了空间。我知道,当我删除一个架构时,我会拿回空间,我想知道如果我删除一个表,我会回收空间吗?是的,如果删除或截断一个存储在单独的.ibd表空间文件中的表,空间会返回到文件系统 演示: $ df /var/lib/mysql Filesystem 1K-blocks Used Available Use% Mounted on /dev/s

我有一个MySQL数据库,每个表有一个文件。我知道InnoDB对每个表都有一个单独的.ini,但我想知道当我删除模式或表时是否释放了空间。我知道,当我删除一个架构时,我会拿回空间,我想知道如果我删除一个表,我会回收空间吗?

是的,如果删除或截断一个存储在单独的.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表。这将对数据进行碎片整理并重建索引。如果该文件中浪费了大量空间,那么优化后的文件将变小,剩余空间将返回到文件系统