我刚刚从MyISAM转换了几个大表到InnoDB。
当我在phpMyAdmin中查看表时,他们显示了大量的开销(一个表有6.8GB)。
优化这些表(InnoDB上不支持的命令)不会像在MyISAM上那样受到影响。
这是InnoDB拥有不断增长的数据文件的结果,即使在删除之后永远不会返回空间。 如果是这样的话,我从来没有见过像其他InnoDB表格那样的开销。
有没有办法清理这个?
编辑:这是我试过的东西(没有成功):
缩小InnoDB数据文件的最常见方法是使用mysqldump进行完全备份并恢复。 可悲的是,由于InnoDB共享表空间的devise,未使用的表空间不能像MyISAM或MS SQL那样直接返回到操作系统。
InnoDB的人一直很激烈地说,这是一个故意的devise决定,但如果是这样的话,这是非常短视的。 我完全理解不自动缩小数据文件的想法,但没有手动选项是非常烦人的。
请注意,您可以将InnoDBconfiguration为每个表空间使用一个文件 。 如果你这样做,你应该能够单独优化表来收缩文件,因为每个文件都有一个单独的表空间文件。