1

すべてのドキュメントの平均サイズが 16 KB で、ドキュメント数が 30,000 の 1 つのコレクションです。

(30,000 * 16) / 1024 * 2024 = 1.71 GB

しかし、コレクションの統計でコレクションのサイズが であることがわかりました28.6 GB。それは恐ろしいことです。このドキュメントに 736 個のドキュメントしかなく、18.5 MB しか消費していなかったときに、嘘つきをチェックしました。このコレクションでは、テキストや大きな文字列ではなく、数値データのみを格納しています。

Mongo db はコレクション用の余分なスペースですか?

統計情報はこちら。

> db.MyCollection.stats()
{
        "ns" : "DB.MyCollection",
        "count" : 31228,
        "size" : 30593236376,
        "avgObjSize" : 979673.254002818,
        "storageSize" : 31878659904,
        "numExtents" : 33,
        "nindexes" : 1,
        "lastExtentSize" : 2146426864,
        "paddingFactor" : 1,
        "systemFlags" : 1,
        "userFlags" : 0,
        "totalIndexSize" : 923888,
        "indexSizes" : {
                "_id_" : 923888
        },
        "ok" : 1
}

編集

これは以前にキャプチャした統計です (レコード数が 736 のとき)

> db.MyCollection.stats()
{
        "ns" : "DB.MyCollection",
        "count" : 736,
        "size" : 18985944,
        "avgObjSize" : 25796.119565217392,
        "storageSize" : 23035904,
        "numExtents" : 4,
        "nindexes" : 1,
        "lastExtentSize" : 11681792,
        "paddingFactor" : 1,
        "systemFlags" : 1,
        "userFlags" : 0,
        "totalIndexSize" : 32704,
        "indexSizes" : {
                "_id_" : 32704
        },
        "ok" : 1
}

そして、私は更新ではなく、非常に頻繁にクエリを行うだけで挿入を使用しています。

いくつかの情報が状況を特定するのに役立つ場合があります:

  • コレクションのスキーマは深いツリー構造 (7 レベル)
  • mongodb に Windows サーバーを使用する (ただし、MongoLab (Amazon がホストする) インスタンスでも同じ問題が発生します)
  • 挿入ステートメントのみを使用してコレクションを別のデータベース (別のサーバー上) に移動しましたが、BulkInsertion も同じサイズを消費しました。

サンプル データ : フィールド名を変更しました

{
   "_id":ObjectId("50ff7614c9145359648cc017"),
   "gtrtt":2,
   "XYZ":2,
   "Namecount":2,
   "ABC":0,
   "123":0,
   "IDD":793,
   "date":   ISODate("2012-04-22T00:00:00   Z"),
   "network":[
      {
         "gtrtt":2,
         "XYZ":2,
         "Namecount":2,
         "ABC":0,
         "123":0,
         "type":"facebook",
         "safasfasf":[
            {
               "gtrtt":2,
               "XYZ":2,
               "Namecount":2,
               "ABC":0,
               "123":0,
               "type":0,
               "sassasas":[
                  {
                     "gtrtt":2,
                     "XYZ":2,
                     "Namecount":2,
                     "ABC":0,
                     "123":0,
                     "type":2,
                     "asfasffasfsafas":[
                        {
                           "gtrtt":2,
                           "XYZ":2,
                           "Namecount":2,
                           "ABC":0,
                           "123":0,
                           "type":5,
                           "435435345":[
                              {
                                 "gtrtt":2,
                                 "XYZ":2,
                                 "Namecount":2,
                                 "ABC":0,
                                 "123":0,
                                 "type":"Egypt",
                                 "34534534435345":[
                                    {
                                       "gtrtt":1,
                                       "XYZ":1,
                                       "Namecount":1,
                                       "ABC":0,
                                       "123":0,
                                       "type":"Cairo"
                                    },
                                    {
                                       "gtrtt":1,
                                       "XYZ":1,
                                       "Namecount":1,
                                       "ABC":0,
                                       "123":0,
                                       "type":null
                                    }
                                 ]
                              }
                           ]
                        }
                     ]
                  }
               ]
            }
         ]
      }
   ],
   "OS":[
      {
         "gtrtt":1,
         "XYZ":1,
         "Namecount":1,
         "ABC":0,
         "123":0,
         "type":"Windows7"
      },
      {
         "gtrtt":1,
         "XYZ":1,
         "Namecount":1,
         "ABC":0,
         "123":0,
         "type":"WindowsXP"
      }
   ],
   "Browser":[
      {
         "gtrtt":1,
         "XYZ":1,
         "Namecount":1,
         "ABC":0,
         "123":0,
         "type":"IE"
      },
      {
         "gtrtt":1,
         "XYZ":1,
         "Namecount":1,
         "ABC":0,
         "123":0,
         "type":"Firefox"
      }
   ],
   "Device":[
      {
         "gtrtt":2,
         "XYZ":2,
         "Namecount":2,
         "ABC":0,
         "123":0,
         "type":"PC"
      }
   ]
}
4

2 に答える 2

2

ここでいくつかの仮定を立てますが、知識に基づいた推測を行うと、それらは真実であると言えます。

そこに表示されるすべての測定値はバイト単位です。

オブジェクトの平均サイズ (ドキュメント) は、実際には 16KB ではなく 0.9 MB です。

したがって、実際に使用しているのは、約 28.4922 GB です (そのコレクションには 31228 個のオブジェクトがあります)。とにかく、それがMongoDBが言っていることです。

実際には 29.6893 GB のストレージを使用しています。

これは、将来のエクステントの事前割り当て (この場合、ここで新しい 2 GB ファイルを事前に割り当てると思います) と断片化の可能性があるため、実際には理にかなっていますが、断片化はそれほど高くなく、おそらく数 MB なので、それがあなたの問題だとは言いませんが、問題が発生した場合は、それを削除しても、そのコレクションでコンパクトを実行できます。

また、断片化の量を考慮すると、パディング係数はおそらくほぼ1または少し上にあると思います。これはそれほど問題ではありません。ここではオブジェクトサイズよりも大きく割り当てられます。

インデックスは個別の名前空間であるため、コレクションの名前空間の範囲に影響を与えることはありません。

あなたの主な問題は、データセットの出力と実際のサイズを誤解して誤解していることだと思います。

編集

このコレクションを頻繁に更新する (挿入しない) 場合、avgObjSize を説明できる可能性があり、その場合、圧縮によってコレクションを飼いならし可能なサイズに戻す必要があります。

于 2013-01-23T10:19:28.803 に答える
1

インデックスによってコレクションのサイズも増加することを考慮する必要があります。さらに、mongodb には、ドキュメントに適用される paddingfactor があります。これにより、ドキュメントのサイズが 1 バイト大きくなったとしても、常にドキュメントを移動する必要なく、ドキュメントのサイズを大きくすることができます。パディング係数は非常に不安定で、大きく変化します。したがって、パディングファクターを使用すると、コレクションも増加します。stats()を参照してください

あなたの出力から:

インデックスは問題ないようです。_id インデックスだけです。パディング係数も問題ないようですが、これは新しい書き込みに適用される実際のパディング係数にすぎないため、何も言う必要はありません。しかし、問題があるように見えるのは、mongodb があなたの avgObjSize を、疑わしい 16kB ではなく、およそ 956kB と報告していることです。したがって、間違ったコレクションを調べるか、保存していると予想しているものとは異なるものが保存されています (16kB がどこから来ているのかわかりません)。

できることは、compact を実行しコレクションを圧縮し、その後、パディング ファクターによって割り当てられたスペースを確認することです。

于 2013-01-23T10:14:12.403 に答える