MongoDB C#查询性能比mongotop报告差得多

时间:2013-08-02 01:06:50

标签: mongodb mongodb-.net-driver

我对Mongo有很多经验,但我对这个问题感到沮丧(当然在发布前一天突然出现)。

基本上我正在查询数据库以检索文档,但它通常比它应该的数量级(甚至两个)更糟,特别是因为查询没有返回任何内容。

查询:

//searchQuery ex: { "atomic.Basic^SessionId" : "a8297898-7fc9-435c-96be-9c5e60901e40" }
var doc = FindOne(searchQuery); 

说明:

{
   "cursor":"BtreeCursor atomic.Basic^SessionId",
   "isMultiKey" : false, 
   "   n":0,
   "nscannedObjects":0,
   "nscanned":0,
   "nscannedObjectsAllPlans":0,
   "nscannedAllPlans":0,
   "scanAndOrder":false,
   "indexOnly":false,
   "nYields":0,
   "nChunkSkips":0,
   "millis":0,
   "indexBounds":{
      "atomic.Basic^SessionId":[
         [
            "a8297898-7fc9-435c-96be-9c5e60901e40",
            "a8297898-7fc9-435c-96be-9c5e60901e40"
         ]
      ]
   }
}

通常需要50-150毫秒,即使mongotop报告最多15毫秒的读取时间(这应该是几次查询)。数据库中只有6k个文档(索引中只有2k左右,并且解释说它正在使用索引),并且因为搜索的文档不存在,所以它不能是反序列化问题。

对于每个查询(大多数时间都是sub ms)来说并不是这么糟糕,而且B树确实不够大,不能有那么大的差异。

任何想法都会得到我永恒的感激之情。

1 个答案:

答案 0 :(得分:0)

MongoTop未报告总查询时间。它报告了MongoDB花在持有特定锁上的时间。

该查询根据解释(非常快)在0ms内重新调整。您所描述的内容听起来像网络延迟。 ping节点时的延迟是多少?网络是否有可能出现问题?

您使用的是哪个版本的MongoDB?考虑将MongoDB和C#驱动程序升级到最新的稳定版本。