2016-12-28 48 views

回答

0

记住MySQL的时间OPTIMIZE TABLE期间锁定表运行

对于从官方文档你的MySQL版本:

OPTIMIZE TABLE应该被使用,如果你删除了很大一部分 表,或者如果您对具有可变长度 行(具有VARCHAR,VARBINARY,BLOB或TEXT列的表)的表进行了许多更改。 删除的行保留在链接列表中,随后的INSERT操作将重新使用旧的行位置。你可以使用OPTIMIZE TABLE来 回收未使用的空间,并整理数据文件

其他注意事项InnoDB的:

对于InnoDB表,OPTIMIZE TABLE被映射到ALTER TABLE,这 重建表来更新索引统计信息并在 聚簇索引中释放未使用的空间。从MySQL 5.1.27开始,这显示在 OPTIMIZE TABLE的输出,当你在一个InnoDB表运行它,因为 如下所示:

的mysql> OPTIMIZE TABLE FOO; 表不支持优化,做重新创建+分析代替

所以:

OPTIMIZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE 
    tbl_name [, tbl_name] ... 

默认情况下,OPTIMIZE TABLE语句被写入二进制日志,以便 ,他们将被复制到复制奴隶。日志记录可以使用可选的NO_WRITE_TO_BINLOG关键字或其别名 LOCAL来抑制 。

相关问题