0

ドキュメントに非常に長い文字列を 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
}
4

0 に答える 0