我有一个每周运行的脚本,将数据从我们的实时数据库移动到归档数据库,然后从实时数据库中删除刚刚归档的数据。由于这是一个相当大的删除操作(表中约10%的数据被修剪),我认为在此删除操作之后应该运行OPTIMIZE TABLE。然而,我正在阅读mysql文档,并不知道如何解释它:http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html。"如果您已删除表的大部分或对具有可变长度行的表进行了多次更改(具有VARCHAR、VARBINARY、BLOB或TEXT列的表),则应使用OPTIMIZE TABLE。已删除的行会维护在链接列表中,并且随后的INSERT操作会重用旧行位置。您可以使用OPTIMIZE TABLE来回收未使用的空间并碎片整理数据文件。"
第一句话对我来说有歧义。它的意思是: A) 如果您已经删除了具有可变长度行的表的大部分或者您已经对具有可变长度行的表进行了许多更改,则应运行它 或者 B) 如果您已经删除了任何表的大部分或者您已经对具有可变长度行的表进行了许多更改,则应运行它。
这样是否有意义?所以如果我的表没有VAR列,我还需要运行它吗?
顺便提一下 - 有没有任何指标告诉我一个表适合进行OPTIMIZE调用?
此外,我读到这篇文章http://www.xaprb.com/blog/2010/02/07/how-often-should-you-use-optimize-table/说仅运行OPTIMIZE table对于主键是有用的。如果我的大多数选择都来自其他索引,那么对于具有替代键的表而言,我是不是在浪费精力?
非常感谢!
第一句话对我来说有歧义。它的意思是: A) 如果您已经删除了具有可变长度行的表的大部分或者您已经对具有可变长度行的表进行了许多更改,则应运行它 或者 B) 如果您已经删除了任何表的大部分或者您已经对具有可变长度行的表进行了许多更改,则应运行它。
这样是否有意义?所以如果我的表没有VAR列,我还需要运行它吗?
顺便提一下 - 有没有任何指标告诉我一个表适合进行OPTIMIZE调用?
此外,我读到这篇文章http://www.xaprb.com/blog/2010/02/07/how-often-should-you-use-optimize-table/说仅运行OPTIMIZE table对于主键是有用的。如果我的大多数选择都来自其他索引,那么对于具有替代键的表而言,我是不是在浪费精力?
非常感谢!