如何计算InnoDB数据库所需的磁盘空间?
我在 MySQL 中有几个带有 InnoDB 引擎的数据库。它们的文件系统总共有大约 30 GB 大小。几天前,我从这些数据库中删除了很多数据(~10-15 GB),但文件系统上的已用空间是相同的,并且从 information_schema.TABLES 中读取 data_length 和 index_length 给出了几乎旧的大小。
我转储了一个 3.3 GB 的数据库并将其导入到我的工作站上,只需要 1.1 GB(是的,它是 1:1 的副本)。那么,如果我将 InnoDB 数据库重新导入到新系统中,我该如何计算它所需的大小呢?
I have several databases in MySQL with InnoDB engine. All together they have around 30 GB size on filesystem. A couple of days ago, I removed a lot of data from those databases (~10-15 GB) but the used space on filesystem is the same and also reading data_length and index_length from information_schema.TABLES give almost the old size.
I dumped a 3,3 GB database and imported it on my workstation where it takes only 1,1 GB (yes, it is a 1:1 copy). So, how can I calculate the size a InnoDB database needs if I would reimport it in a new system?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
删除大量数据后优化您的表。
http://dev.mysql.com/doc/refman/5.1 /en/optimize-table.html
Optimize your tables after deleting large amouts of data.
http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html
InnoDB 不释放磁盘空间;这是一个皮塔饼。基本上,您可以通过删除数据库并从备份中恢复它来释放它(正如您偶然注意到的那样) - 请参阅 此处有示例。
因此,您无法计算恢复备份后数据库有多大。 但是它永远不会比未备份的版本大(因为未备份的版本仍然有任何已删除数据的空间,而恢复的备份将没有有该空间) 。
使用每个表文件选项可以在一定程度上解决这个问题;这篇文章的第一个链接中有更多详细信息。
InnoDB doesn't free disk space; it's a PITA. Basically, you can free it by dropping the database and restoring it from a backup (as you've noticed by chance) - see here for examples.
So, you can't calculate how big a database will be after you restore a backup. But it will never be bigger than the un-backed up one (because the unbacked up version still has space from any deleted data and the restored backup will not have that space).
This can be worked around to some extent using the file per table option; more details in the first link from this post.