为啥 MongoDB 将已删除的文件保留在磁盘上?

Posted

技术标签:

【中文标题】为啥 MongoDB 将已删除的文件保留在磁盘上?【英文标题】:Why MongoDB keeps deleted file on disk?为什么 MongoDB 将已删除的文件保留在磁盘上? 【发布时间】:2019-10-17 07:27:06 【问题描述】:

我在使用 MongoDB 磁盘时遇到问题。我有一个应用程序并在我的服务器上使用单个 MongoDB 实例。此外,我正在处理大数据(例如,一个记录存储平均为 800MB),我正在为此存储 GridFS。过了一会儿,我发现 fs.chunks 集合大小为 110GB 并删除了所有数据 除了过去 1 个月外,使用 mongo shell。

现在 fs.chunks 集合在“MongoDB Compass”上似乎是 32GB,但 ...\MongoDBDatas\data 文件夹仍然是 110GB,我的磁盘使用量没有改变。

我能做些什么呢?

我试过 db.repairDatabase();和紧凑的命令。也重新启动了 mongo 服务器,但没有任何改变。

这是我的 mongo.cfg

systemLog:
    destination: file
    path: d:\HealthcarePlatform\MongoDBDatas\log\mongod.log
storage:
    dbPath: d:\HealthcarePlatform\MongoDBDatas\data
net:
   port: 28019
   bindIp: 0.0.0.0
security:
   authorization: enabled

【问题讨论】:

【参考方案1】:

有时我们会删除数据库,但它并没有释放空间。所以用这个

sudo lsof +L1

【讨论】:

以上是关于为啥 MongoDB 将已删除的文件保留在磁盘上?的主要内容,如果未能解决你的问题,请参考以下文章

mongodb 删除后为啥不释放空间

为啥有关MongoDB采用B树索引,以及Mysql B+树做索引

为啥 Mongodb 在 Linux 上的性能比在 Windows 上更好?

在 MongoDB 中的特定时间删除集合的所有文档

Linux下为啥要进行磁盘的分区

为啥我在使用 Prisma(React 应用程序)在 Mongodb 中显示和删除时遇到问题?