如何计算InnoDB数据库所需的磁盘空间?

时间:2010-12-09 09:19:30

标签: mysql innodb

我在MySQL中有几个使用InnoDB引擎的数据库。它们一起在文件系统上大小约为30 GB。几天前,我从这些数据库中删除了大量数据(约10-15 GB),但文件系统上的已用空间是相同的,并且从information_schema.TABLES读取data_length和index_length几乎给出了旧的大小。

我转储了一个3.3 GB的数据库并将其导入我的工作站,只需要1,1 GB(是的,它是1:1的副本)。那么,如果我在新系统中重新导入它,我如何计算InnoDB数据库所需的大小呢?

2 个答案:

答案 0 :(得分:3)

删除大量数据后优化表格。 http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html

答案 1 :(得分:3)

InnoDB没有释放磁盘空间;这是一个PITA。基本上,您可以通过删除数据库并从备份中恢复它来释放它(正如您偶然注意到的那样) - 请参阅here for examples

因此,您无法计算还原备份后数据库的大小。 但是它永远不会比未备份的版本大(因为unbacked up版本仍然有来自任何已删除数据的空间,并且恢复的备份将具有该空间)

这可以使用每个表的文件选项在某种程度上解决;这篇文章的第一个链接中有更多细节。