我对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树确实不够大,不能有那么大的差异。
任何想法都会得到我永恒的感激之情。
答案 0 :(得分:0)
MongoTop未报告总查询时间。它报告了MongoDB花在持有特定锁上的时间。
该查询根据解释(非常快)在0ms内重新调整。您所描述的内容听起来像网络延迟。 ping节点时的延迟是多少?网络是否有可能出现问题?
您使用的是哪个版本的MongoDB?考虑将MongoDB和C#驱动程序升级到最新的稳定版本。