我可以通过将表格转换为MyISam来减少ibdata1文件的大小吗?

时间:2013-08-18 22:11:50

标签: mysql innodb myisam

我有一张名为path的表格。它占据了13G ibdata1的99%左右。它之前是INNODB表,但我将其转换为MYISAM

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

2 个答案:

答案 0 :(得分:2)

没有。删除InnoDB表将释放 InnoDB表空间(ibdata1文件)中的空间,但它缩小ibdata1文件。

例外情况是,如果在设置服务器innodb_file_per_table变量时创建了表,那么表将在其自己独立的InnoDB表空间(数据文件)中,并且当表被删除时,由表发布。

请参阅:14.3.3. Using Per-Table Tablespaces http://dev.mysql.com/doc/refman/5.5/en/innodb-multiple-tablespaces.html

答案 1 :(得分: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文件大小。然后,如果表中没有完整性约束(这就是我所做的),或者2)设置innodb_file_per_table=ON,如果保留innodb表,你可以1)将表的引擎更改为myisam。