mysql - 为什么在删除 MySQL 表的某些行后我的可用磁盘空间减少了?

标签 mysql sql windows memory

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

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

最佳答案

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

要回收磁盘空间,MySQL 将不得不完全重写这些数据文件,因为(廉价地)从大文件中间删除一些数据是不可能的。

我能想到的实际空间较少的一个原因是,您可能启用了二进制日志,但在不知道哪些文件大小增加的情况下很难确定是什么占用了这些额外空间。

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

关于mysql - 为什么在删除 MySQL 表的某些行后我的可用磁盘空间减少了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57094052/

相关文章:

mysql - 根据年份的最后一天选择记录

c++ - 如何检查是否使用了真正的硬件视频适配器

java - 有什么方法可以对依赖于旧版(非工作)JRE 版本的应用程序进行沙箱处理吗?

php - Doctrine 1.1 中大写列名的奇怪行为导致异常

mysql - SQL 查询显示昨天创建的所有用户,有多少发送的邀请?

php - MySQL RAND() 不工作,总是得到相同的结果

C# Datetime 到 ODBC Datetime 转换错误

mysql - 如何在 MySQL 中检查日期时间是否等于明天

c# - Varbinary 最大图像

linux - 如何在 Windows 中更新 Kerberos 票证?