ドキュメントに非常に長い文字列を mongodb サーバーに保存すると、ドキュメントは次のようになります。
{
"_id": ObjectId("5280efdbe4b062c93b582118"),
"viewID": 1,
"content": "a very long string"
}
そして、同じコレクションに約数百のそのような文書があります。コレクションに索引を付けました。
問題は、非常に単純なクエリを実行することです
db.blog.find({viewID:1});
その後、応答を待つのに非常に長い時間 (数時間以上) かかりますが、エラー メッセージは表示されず、サーバーの状態は OK です。しかし、db.blog.find({viewID:1}).limit(1);
mongodbがすぐに結果を返すことを追加するだけです。
問題を解決したり、パフォーマンスを向上させるにはどうすればよいですか??
これが私の説明です:
db.blog.find({viewID:1}).explain();
{
"cursor" : "BtreeCursor viewID_1",
"isMultiKey" : false,
"n" : 377,
"nscannedObjects" : 377,
"nscanned" : 377,
"nscannedObjectsAllPlans" : 377,
"nscannedAllPlans" : 377,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 45,
"indexBounds" : {
"viewID" : [
[
1,
1
]
]
},
"server" : "Server:27017"
}
colStat は次のとおりです。
db.blog.stats();
{
"ns" : "***.blog",
"count" : 98582,
"size" : 2330759632,
"avgObjSize" : 23642.851960804204,
"storageSize" : 2958364672,
"numExtents" : 18,
"nindexes" : 2,
"lastExtentSize" : 778276864,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 0,
"totalIndexSize" : 6540800,
"indexSizes" : {
"_id_" : 4055296,
"viewID_1" : 2485504
},
"ok" : 1
}