为什么删除MySQL上表的某些行后,可用磁盘空间减少了?

时间:2019-07-18 12:04:39

标签: mysql sql windows memory

我删除了表中成千上万的行,但是(C :)中的可用空间从40 Gb减少到15 Gb。发生了什么?它不是应该上升吗?

我已经重新启动了MySQL Server甚至我的计算机,但是问题仍然存在。我正在使用Windows 10和MySQL 8.0

1 个答案:

答案 0 :(得分:1)

删除行不是保证释放可用磁盘空间的保证方法。 MySQL倾向于将表的数据存储在一个文件中,或者每个磁盘存储一个文件。通常,它只是将该文件中的行标记为已删除,因此,如果在此之后插入新行,它们将占用此空间。

要回收磁盘空间,MySQL必须完全重写这些数据文件,因为实际上不可能(廉价地)从大文件中间删除某些数据。

我可以想到的实际上拥有较少空间的一个原因是,您可能启用了binlog,但是很难确定是什么占用了这个额外的空间而又不知道哪些文件大小增加了。

真正回收该磁盘空间的一种方法是从头开始重建整个表。