mongodb存储大尺寸文档和查询非常慢

时间:2013-11-14 08:29:09

标签: mongodb mongodb-query mongodb-java

我在mongodb服务器中将一个非常长的字符串存储到我的文档中,我的文档看起来像

{
    "_id": ObjectId("5280efdbe4b062c93b582118"),
    "viewID": 1,
    "content": "a very long string"
}

并且在同一个集合中有大约数百个此类文档。我已将该集合编入索引。

问题是我只是执行一个非常简单的查询

db.blog.find({viewID:1});

然后得到很长时间(超过几个小时)等待响应,并且没有显示任何错误消息,服务器状态正常。但我只是添加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
}

0 个答案:

没有答案