7

インデックスが RAM に存在するか、mongodb のディスクに存在するかを確認する最善の方法は何ですか?

4

2 に答える 2

5

一方で、インデックスの一部のみが RAM にある可能性は十分にありますhttp://docs.mongodb.org/manual/applications/indexes/#indexing-right-handed

すべての場合において、インデックスが完全に RAM に収まる必要はありません。インデックス付きフィールドの値が挿入ごとに大きくなり、ほとんどのクエリが最近追加されたドキュメントを選択する場合。その場合、MongoDB は、RAM に最新の値または「最も右の」値を保持するインデックスの部分のみを保持する必要があります。これにより、読み取り操作と書き込み操作でインデックスを効率的に使用でき、インデックスをサポートするために必要な RAM の量を最小限に抑えることができます。

一方、db.serverStatus()必要な情報の集約を提供します。http://docs.mongodb.org/manual/reference/server-status/#server-status-indexcounters を確認してください:

このindexCounters.btree.hits値は、インデックスがアクセスされ、mongod がメモリからインデックスを返すことができる回数を反映しています。

于 2012-11-25T14:35:06.043 に答える
1

はい、方法はあります。totalIndexSize()または を使用stats() して、インデックスのサイズを確認できます

> db.collection.totalIndexSize()
> 1073741824


> db.collection.stats()
> {
"ns" : "collection.test",
"count" : 100006,
"size" : 72104,
"avgObjSize" : 4506.5,
"storageSize" : 688128,
"numExtents" : 3,
"nindexes" : 1,
"lastExtentSize" : 524288,
"paddingFactor" : 1.0170000000000319,
"systemFlags" : 1,
"userFlags" : 0,
"totalIndexSize" : 1073741824,
"indexSizes" : {
    "_id_" : 1073741824
},
"ok" : 1

どちらも、コレクションのインデックス サイズをバイト単位で返します。上記の例は、インデックスのサイズが であることを示しています1GB

アップデート

データベース全体の合計インデックス サイズを確認するには、次を使用できます。stats()

 > db.stats()
{
    "db" : "test",
    "collections" : 10,
    "objects" : 5909990,
    "avgObjSize" : 2888.31186440677965,
    "dataSize" : 170123304,
    "storageSize" : 14745603499,
    "numExtents" : 17,
    "indexes" : 8,
    "indexSize" : 1073741824,
    "fileSize" : 50331648,
    "nsSizeMB" : 163453,
    "ok" : 1
}

これで、マシンの RAM と比較indexSizeして、インデックスがメモリに収まるかどうかを確認できます。また、完全なインデックスに対応するために RAM サイズを増やすことができます。

それが役に立てば幸い

于 2012-11-25T14:42:57.463 に答える