什么时候在mysql中使用OPTIMIZE

时间:2009-02-02 23:21:54

标签: mysql optimization

我有一个充满时间敏感数据的数据库,因此我每天都会截断表格,然后将新数据(从其他数据库的合并中)导入到截断的表格中。

目前我在导入每日数据刷新后在桌面上运行OPTIMIZE。 但是,看一下mysql的OPTIMIZE语法页面 http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html

它说我可以优化以回收未使用的空间并对数据进行碎片整理。

我应该两次运行OPTIMIZE吗? 一旦我删除了数据,然后在我重新插入之后再次删除数据? 还是只有一次? 如果只是一次,是否应该在加载新数据后? 还是在清理旧的?

之后

3 个答案:

答案 0 :(得分:6)

它可能取决于您使用的是MyISAM还是InnoDB表,但我会在截断表后运行OPTIMIZE。这应该确保回收空间并且它将非常快速地运行。

当你插入你的一批数据时,它应该按顺序插入并且不会被分割,因为它是一个新的插入物,所以没有空间可以回收。如果它是一个小数据集,它可能并不重要,但是在插入后执行OPTIMIZE的大型数据集也可能非常慢。

答案 1 :(得分:0)

导入新数据后,只需一次即可。

答案 2 :(得分:0)

将一组数据删除或更新到数据库后,可以使用optimize table命令删除碎片化空间。

没有必要使用两次优化命令。在所有DML过程之后你都可以 使用optimize命令。