gpt4 book ai didi

mongodb - 从 Db 中删除 doc 后存储空间没有减少。为什么?

转载 作者:可可西里 更新时间:2023-11-01 09:57:36 26 4
gpt4 key购买 nike

我通过在 shell 上运行 deleteMany 查询删除了集合中的文档,它返回了确认的 true 和结果。

即使在删除大约 100 万个文档后,运行 show dbs 命令时数据库的大小仍然相同。

我在 shell 上执行的删除查询:

db.getCollection('activity').deleteMany({createdAt:{$lte: 1565375400000}})

上面查询的结果是:

{ "acknowledged" : true, "deletedCount" : 1199713 }

show dbs 命令查询前后的输出是:

admin           0.000GB
local 0.000GB
logDb 17.203GB

为什么数据库大小没有减少,我该怎么做才能释放该大小?

最佳答案

我将简要解释一下:

为什么会这样
通过使用 db.stats() 检查数据库,您会发现 mongoDB 具有 storageSize(数据 + 未使用空间)和 dataSize(数据库中的数据)。如果您从数据库中删除文档,实际上是在减少数据大小。这是因为 mongodb 遵循一种存储策略,我称之为“尽你所能,不予返回”。假设您有 15GB 的数据并删除了 5GB,MongoDB 将继续保留它之前拥有的整个 15GB 磁盘空间,因此它可以在以后使用相同的空间来存储新数据。

我如何释放存储空间

如果您处于开发环境,我建议转储数据库,删除它然后恢复它。
1. 这是创建备份的方式: https://docs.mongodb.com/manual/reference/program/mongodump/
2.通过在mongo shell中执行删除数据库:

 db.dropDatabase()

然后是 mongorestore(这是文档的链接:https://docs.mongodb.com/manual/reference/program/mongorestore/)

关于mongodb - 从 Db 中删除 doc 后存储空间没有减少。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57604139/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com