如何清除 ibdata1 文件以及它如何影响性能?

Posted

技术标签:

【中文标题】如何清除 ibdata1 文件以及它如何影响性能?【英文标题】:How to clear the ibdata1 file and how it may affect the performance? 【发布时间】:2012-12-06 20:19:32 【问题描述】:

我查看了 ibdata 文件,它是 128 GB。我取出每个表的大小,一个表有 500 万条记录,显示为 90 GB。

我截断了该表,因为它不是必需的,并且我查看了 ibdata1 大小。它仍然显示 128 GB。然后我取出每个表的大小,然后总和只有 35-38 GB。

如何取回我的 Db 服务器上的 90 GB 空间。我在 red-hat Linux 服务器上使用 mysqlphp

我猜-如果我们删除数据库上的任何内容,它只会删除复制,但分配给它的空间在我们手动执行之前不会被释放。是这样吗?

【问题讨论】:

***.com/questions/3456159/… 的可能副本。一言以蔽之:你不能。转储所有数据库,停止服务器,删除 ibdata 文件,重新启动,重新导入转储。 下次使用innodb_file_per_table 选项。删除大表将允许您回收空间。 强烈推荐访问@YaK 提供的链接。绝对是重复的,并且他/她链接到的帖子有分步说明。 【参考方案1】:

一旦您的 ibdata 文件占用了空间,它就永远不会消失。 'shink' 数据文件的唯一方法是转储您的 dbs,将它们全部删除,删除 ibdata 文件,重新启动 mysql 并重新加载转储。

如果你经常删除整个表,你可以配置 innodb 为每个表使用一个数据文件。在这种情况下,当您删除一个表时,您可以删除该表特定的 ibdata 文件。

【讨论】:

如果我删除所有表并删除数据库并删除 ibdatafile,如果我重新加载转储,它将自动创建 @NaanuManu 是的,只要确保你有一个完整的转储。删除时所有的 innodb 数据都会丢失。

以上是关于如何清除 ibdata1 文件以及它如何影响性能?的主要内容,如果未能解决你的问题,请参考以下文章

ibdata1文件非常大如何解决,ibdata单独存储

如何防止 MySQL 的 ibdata1 文件过大

浮动布局所带来的影响以及如何清除浮动

修改ibdata1大小的验证以及如何使用mysqld_multi管理多实例

如何防止 MySQL 的 ibdata1 文件过大

如何防止 MySQL 的 ibdata1 文件过大