2

MongoDBには、ディスク上のデータベースの実際のサイズを fileSize として提供する dbstats 呼び出しがあります。ただし、dbstats は実行中にデータベース サーバーをブロックし、長時間実行される可能性があるため、運用環境での使用には適していません。(同僚によると)安全だとされているcollstats呼び出しがありますが、その戻り値にはfileSizeメンバーがなく、storageSizeメンバーのみがあります。これは dbstats().dataSize、fileSize、および storageSize の説明であり、 storageSizeと fileSize は異なると主張しています。ドキュメントはあいまいですが、経験的に違いを確認しました:

> MB = Math.pow(2, 20)
> db.stats(MB)
{
    "db" : "somedb",
    "collections" : 11,
    "objects" : 68200,
    "avgObjSize" : 1153.922991202346,
    "dataSize" : 75,
    "storageSize" : 117,
    "numExtents" : 34,
    "indexes" : 17,
    "indexSize" : 8,
    "fileSize" : 448,
    "nsSizeMB" : 16,
    "ok" : 1
}
>

サーバー API を使用して、サーバーを 15 分間ブロックすることなく、ディスク上の MongoDB データベースの実際のサイズを計算する方法はありますか?

更新:特にサーバー API を探しています。私の使用例は、ファイルシステムへの直接アクセスを想定できない db ブラウザであるMongsにディスク使用統計を追加することです。

4

1 に答える 1

0

これは予想されます。

ストレージサイズは、ドキュメントに内部的に割り当てられたスペースの量です。MongoDBは、実際のドキュメントサイズにパディングを自動的に追加して、ディスク上での移動を必要としない更新を行います。

FileSizeは、ホストOSのファイルシステムのディスクに割り当てられたスペースの量です(事前に割り当てられたスペースを含む)。データファイルはDBごとに割り当てられ、64 MBから始まり、2 GBに達するまでサイズが2倍になります(その後、後続の各データファイルのサイズは2 GBになります)。データファイルの名前は、dbname.0、dbname.1..の形式です。

ファイルサイズを見つけるには、すべてのデータファイルでLinuxコマンド(ls -l、du -hなど)を使用して値を合計するか、du - chregexを使用してすべてのデータの合計値を見つけることができます。 。

于 2012-04-26T20:29:08.190 に答える