1

我对 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 左右,并且解释说它正在使用索引)并且由于正在搜索的文档不存在,因此它不可能是反序列化问题。

每个查询(大多数时候都低于毫秒)并没有那么糟糕,而且 B-tree 肯定没有大到足以产生这么大的差异。

任何想法都会有我永远的感激。

4

1 回答 1

0

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

根据说明(非常快),该查询在 0 毫秒内重新调整。你所描述的听起来像网络延迟。ping 节点时的延迟是多少?网络有可能是不稳定的吗?

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

于 2013-11-13T00:01:46.633 回答