我正在使用MySQL Server-5.1.58社区日志。问题是在删除数据后,MySQL数据库的分配空间没有变得免费,因此我日常使用的数据库的备份大小不断增加。删除数据后,有什么工具可用于释放MySQL数据库中分配的空间?
请让我知道任何可以解决问题的工具。
我正在使用MySQL Server-5.1.58社区日志。问题是在删除数据后,MySQL数据库的分配空间没有变得免费,因此我日常使用的数据库的备份大小不断增加。删除数据后,有什么工具可用于释放MySQL数据库中分配的空间?
请让我知道任何可以解决问题的工具。
记住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来抑制 。