1
我有相當多的與蒙戈的經驗,但我對挫折的淚水這個問題的邊緣(也當然是從哪兒每天彈出發佈之前)。MongoDB的C#查詢性能比mongotop差很多報道
基本上我查詢數據庫檢索文檔,但它往往是幅度(甚至二)不如它應該是一個數量級,特別是因爲該查詢返回什麼。
查詢:
//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毫秒,即使在讀取時間最多爲15毫秒(mongotop報告,這應該是在幾個查詢)。數據庫中只有6k個文檔(索引中只有2k左右,解釋說它使用索引),並且由於搜索的文檔不存在,所以它不能是反序列化問題。
這不是這個壞每個查詢(子毫秒的大部分時間),並肯定是B樹是不是足夠大,有那麼多的變化。
任何想法都會有我永恆的感激之情。
它可能是某種線程問題?我刪除了數據庫,即使沒有條目,它仍然花費很多時間! 集合正在從它未創建的線程調用,但調用新的GetCollection也不輔助。 – mikkelfishman
如果您使用Windows,MongoDB在Windows上通常比其他操作系統慢。根據MongoDB C#驅動程序,它的性能應該與Java等其他託管語言相似(除非查詢使用泛型強烈類型化,否則性能可能會非常不同)。包含lambda表達式的linq查詢也較慢。 –
你在測量線路上的150ms嗎? (你可以嘗試wireshark或者一些網絡嗅探器來查看查詢/響應時間是否從查詢結束到查詢響應在tcp級別被消耗,如果不是那麼它是你的驅動程序或應用程序可能會延遲?)您是否嘗試過在shell中查詢?它是否表現出相同的行爲?您的實驗是否依賴從「冷」應用程序狀態拍攝的單個查詢? (可能與第一次建立mongo服務器,replset連接等有關) –