我们一直在单个非分片实例中运行 mongoDB,只有一个数据库。数据文件的大小为 0.45 GB。当我查看所有集合的 storageSize 时,总大小约为 85 MB。为了回收未使用的空间,我们运行了 repairDatabase(),了解文件大小从 64 增长到 128 再到 256 等等直到 2 GB。由于我们拥有的 mongo 对象数据 (85 MB) 可以容纳在 64 + 128 MB 的文件中,因此我们期望回收 256 MB 的文件。然而,令我们惊讶的是,没有空间被回收。
有人可以让我们知道我们可以找到多少空间将被回收的逻辑吗?从本质上讲,给定数据库占用的总磁盘空间,以及给定 mongo 对象数据的总大小,是否可以准确估计将回收多少空间?
以下是评论中要求的 db.stats() 输出:
> db.stats()
{
"db" : "analytics_data_1",
"collections" : 12,
"objects" : 207223,
"avgObjSize" : 353.6659347659285,
"dataSize" : 73287716,
"storageSize" : 84250624,
"numExtents" : 43,
"indexes" : 26,
"indexSize" : 21560112,
"fileSize" : 469762048,
"nsSizeMB" : 16,
"dataFileVersion" : {
"major" : 4,
"minor" : 5
},
"ok" : 1
}
>