为什么mongodb数据库在删除文档后占用更多空间

时间:2016-05-28 12:49:08

标签: mongodb

在删除数据之前,数据库占用25.5G空间,有413562171个文档。

然后我执行以下操作:

db.collectionName.remove({xxx:" xxx"})

此操作删除165540416个文档,数据库需要25.8G。

我很困惑为什么在删除这么多数据后需要更多空间。

1 个答案:

答案 0 :(得分:3)

删除文档时,MongoDB不会自动释放空间(假设此空间可以重新用于新文档)

您可以使用repairDatabase命令释放空间:来自mongo shell的db.repairDatabase();或者mongod --repair(使用这种方式时mongod不应该已经运行) https://docs.mongodb.com/v3.2/reference/command/repairDatabase/

请注意,repairDatabase需要的可用磁盘空间等于当前数据集的大小加2千兆字节,并获得全局写锁定,将阻止其他操作直到完成

少添加:

如果您使用WiredTiger存储引擎,您也可以使用compact命令代替repairDatabase

https://docs.mongodb.com/manual/reference/command/compact/

WiredTiger存储引擎是从MongoDB 3.2开始的默认存储引擎