删除数据后,有哪些工具可用于释放MySQL数据库中的已分配空间?

时间:2016-12-28 05:33:52

标签: mysql

我正在使用MySQL Server-5.1.58社区日志。问题是在删除数据后,MySQL数据库的分配空间没有获得空闲,因此我的使用数据库的备份大小日益增加。

请让我知道任何可以解决问题的工具。

1 个答案:

答案 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。

相关问题