私たちは mongoDB を単一の非シャーディング インスタンスで実行しており、データベースは 1 つだけです。データ ファイルのサイズは 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
}
>