暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

115.如何释放 MySQL 占用的磁盘空间(二)

每天一个开发小知识。

《如何释放 MySQL 占用的磁盘空间》中,我们介绍过如何释放 MySQL 占用的磁盘空间。

释放 MySQL 占用的磁盘空间,一共三步:

  1. 通过 use information_schema 查看表空间大小;
  2. 通过 delete/truncate 删除不需要的数据;
  3. 通过 optimize 立即释放 MySQL 不需要的空间。

今天,我在一张有1.47亿条记录的表中,删除其中100万条记录,delete 操作耗时50分钟

当我使用 optimize 释放该表占用的空间时,4个小时过去了,它依然在执行中。

由于 optimize 操作会锁住整张表,导致同事不能访问该表。

为了不影响同事的工作进步,我通过 Ctrl + C 终止 optimize  的执行。

万万没想到,此后再访问该表会报错:

    ERROR 144 (HY000): Table './your_tablename' is marked as crashed and last (automatic?) repair failed

    上网寻找解决办法,网上说可以通过 repair 修复。

      repair table your_tablename;

      在焦虑地等待3个小时后,可算恢复了该表的正常访问。

      吓死我了。

      不管什么时候,对删除操作、强制停止操作都应该存有敬畏之心。

      每天一个开发小知识,今天你学废了吗?
      文章转载自每天一个开发小知识,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论