我正在使用MySQL Server-5.1.58社区日志。问题是在删除数据后,MySQL数据库的分配空间没有获得空闲,因此我的使用数据库的备份大小日益增加。
请让我知道任何可以解决问题的工具。
答案 0 :(得分:0)
请记住 MySQL在OPTIMIZE TABLE运行期间锁定表
从官方文档中获取MySQL版本:
如果删除了很大一部分,则应使用OPTIMIZE TABLE 表或者如果您对具有可变长度的表进行了许多更改 行(具有VARCHAR,VARBINARY,BLOB或TEXT列的表)。 删除的行在链表和后续INSERT中维护 操作重用旧行位置。您可以使用OPTIMIZE TABLE 回收未使用的空间并对数据文件进行碎片整理
InnoDB的附加说明:
对于InnoDB表,OPTIMIZE TABLE映射到ALTER TABLE,其中 重建表以更新索引统计信息并释放未使用的空间 聚集索引。从MySQL 5.1.27开始,显示在 在InnoDB表上运行时,OPTIMIZE TABLE的输出为 如下所示:
的MySQL> OPTIMIZE TABLE foo; 表不支持优化,而是重新创建+分析
所以:
OPTIMIZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE
tbl_name [, tbl_name] ...
默认情况下,OPTIMIZE TABLE语句会写入二进制日志 他们将被复制到复制奴隶。记录可以 使用可选的NO_WRITE_TO_BINLOG关键字或其别名进行抑制 LOCAL。