我将一个集合复制到另一个集合。数据为 14GB。我删除了复制的集合。然而目录的大小仍然是 14 GB。
我选择了修复,但似乎要花很长时间。实际上插入全部数据只用了 20 分钟,修复到现在还在运行。
它只是压缩数据。
如果我不修复数据库会怎样?文件最终会被压缩吗?
我将一个集合复制到另一个集合。数据为 14GB。我删除了复制的集合。然而目录的大小仍然是 14 GB。
我选择了修复,但似乎要花很长时间。实际上插入全部数据只用了 20 分钟,修复到现在还在运行。
它只是压缩数据。
如果我不修复数据库会怎样?文件最终会被压缩吗?
当您像这样删除数据时,文件不会自动重写以反映数据的新大小(这可能是一项巨大的操作)。相反,这些文件中的可用空间被标记为可用,并在您插入新数据时重新使用。
正如您所发现的,目前回收磁盘空间的唯一方法是修复——这不仅仅是“压缩数据”。事实上,修复会从头开始重写您的数据文件,本质上是在删除旧文件之前在磁盘的另一部分创建一个全新的副本。根据当前数据集的大小、剩余的数据量以及磁盘的速度,这可能需要很长时间。
如果您删除了数据库中的所有数据,一种更快、更有效的删除数据的方法是简单地删除数据库,这样就不会出现此问题。
正如 Adam 所说,“不”,文件最终不会自行压缩。
只是关于修复过程的注释,但请记住,它需要两倍的磁盘空间来运行。在您的例子中,您的数据库是 14GB,因此您还必须在磁盘上有额外的 14GB 可用空间才能成功运行修复。
只有 14GB 你很可能不会有问题。我想我会为任何可能在修复运行方面遇到问题的未来 google 员工指出这一点。