美文网首页
Mysql删除数据后,如何释放磁盘空间

Mysql删除数据后,如何释放磁盘空间

作者: misspass | 来源:发表于2020-02-01 17:23 被阅读0次

    ####此时可以使用optimize整理表的碎片:

    #####注意:该操作执行的时候会把该表格先写入一个tmp临时表,所以磁盘剩余空间必须大于表空间,否则会执行失败。

    ```

    alter table tab_xxxxx  ENGINE = 'InnoDB';

    ```

    #####5.6.X以前的版本会提示该表不支持optimize,5.6.X的版本已经支持Innodb了。

    原因及解决办法:

    使用delete删除的时候,mysql并没有把数据文件删除,而是将数据文件的标识位删除,没有整理文件,因此不会彻底释放空间。被删除的数据将会被保存在一个链接清单中,当有新数据写入的时候,mysql会利用这些已删除的空间再写入。即,删除操作会带来一些数据碎片,正是这些碎片在占用硬盘空间。(BTW:看官方文档上好像是innodb引擎的可以利用操作系统来帮忙回收这些碎片,MyISam的表没有办法自己回收,这里待定,后续再看下)

    官方推荐使用 OPTIMIZE TABLE命令来优化表,该命令会重新利用未使用的空间,并整理数据文件的碎片。

    语法如下:

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

    相关文章

      网友评论

          本文标题:Mysql删除数据后,如何释放磁盘空间

          本文链接:https://www.haomeiwen.com/subject/kbsxxhtx.html