开发者社区> 问答> 正文

MySQL删除数据后磁盘空间未释放

假设 mysql A 表的字段 a 占用 200K 的磁盘空间,我 update set a = null,发现磁盘空间没有被释放,请问这块被占用的空间是否真的还存储着那 200K 的数据?是针对误操作的一种保障机制吗?我还本地测了一下,空间也是一直没有释放,全表 set a = null 也没有释放;使用 truncate 就会释放,delete 和 update 都不会;昨天因为这个问题,测试环境的一个表占用了67G的磁盘空间,是一段时间积累下来的,一直认为会被清理,结果一直占用着。

展开
收起
景凌凯 2020-04-22 18:06:38 1842 0
1 条回答
写回答
取消 提交回答
  • 有点尴尬唉 你要寻找的东西已经被吃掉啦!
    • 是否释放和你事务的提交有关系,以及事务提交刷新磁盘的频率有关
    • 这个感觉类似,删除数据库数据。虽然删除了,但是实际零散空间碎片还没被回收
    • MongoDB不要乱用repaireDatabase。可能导致数据库损坏,好办法就是把数据写到另一个库中。然后删了老的库
    2020-04-22 18:07:20
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像