0

我有一张桌子叫path. 它占用了大约 99% 的 13G ibdata1。它以前是一张INNODB桌子,但我将其转换为MYISAM.

如果我在新表上运行优化表path,它会释放我的 ibdata1 文件吗?或者这是否永远不会减小大小,我需要删除它并重新导入一个新的数据库?

4

2 回答 2

2

不会。删除 InnoDB 表将释放InnoDB 表空间(文件)ibdata1的空间,但不会缩小ibdata1文件。

例外的是,如果表是在innodb_file_per_table设置服务器变量时创建的,那么该表将在自己单独的 InnoDB 表空间(数据文件)中,并且当删除该表时,该表使用的空间被释放。

见:14.3.3。使用每表表空间 http://dev.mysql.com/doc/refman/5.5/en/innodb-multiple-tablespaces.html

于 2013-08-18T22:57:19.120 回答
1

答案是否定的(上面有更好的解释)。我必须做的是:

1) Dump the database
2) Stop mysql
3) Delete the `ibdata1` file and two log files.
4) Restart mysql
5) Import the sql dump.

这将使您恢复到默认ibdata1文件大小。然后,您可以 1)如果表上没有完整性约束(这是我所做的),则将表的引擎更改为 myisam,或者 2)innodb_file_per_table=ON如果保留 innodb 表,则可以设置。

于 2013-08-18T23:10:08.877 回答