我对 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 肯定没有大到足以产生这么大的差异。
任何想法都会有我永远的感激。