7

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

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

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

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

4

1 回答 1

5

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

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

于 2012-12-19T13:12:43.033 回答