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

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

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

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

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

【问题讨论】:

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

标签: mysql database innodb


【解决方案1】:

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

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

【讨论】:

  • 如果我删除所有表并删除数据库并删除 ibdatafile,如果我重新加载转储,它将自动创建
  • @NaanuManu 是的,只要确保你有一个完整的转储。删除时所有的 innodb 数据都会丢失。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
  • 2011-07-01
  • 2020-05-08
  • 1970-01-01
  • 2015-09-05
相关资源
最近更新 更多