我有一個MySQL作爲主數據庫和mongodb作爲輔助數據庫。 我在生產上運行查詢並運行超過5秒鐘。我的mongo查詢讀取運行超過5000毫秒
這裏是我的查詢時,我與運行解釋
{
"cursor" : "BtreeCursor host_1_type_1 multi",
"isMultiKey" : false,
"n" : 1,
"nscannedObjects" : 1,
"nscanned" : 313566,
"nscannedObjectsAllPlans" : 313553,
"nscannedAllPlans" : 627118,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 14,
"nChunkSkips" : 0,
"millis" : 6555,
"indexBounds" : {
"host" : [
[
"",
{
}
],
[
/shannisideup/i,
/shannisideup/i
]
],
"type" : [
[
"ambassador-profile",
"ambassador-profile"
]
]
},
"server" : "mongoserver:27017"
}
我添加一個索引
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"ns" : "db.visitor",
"name" : "_id_"
},
{
"v" : 1,
"key" : {
"host" : 1,
"type" : 1
},
"ns" : "db.visitor",
"name" : "host_1_type_1"
}
]
,但我仍然不知道爲什麼它這麼慢時運行的查詢
是db.visitor.find({ host:/shannisideup/i, type:"ambassador-profile" }).limit(1)
僅供參考,我爲我的應用程序和AWS雲中的我的mongodb服務器運行了不同的服務器。 對於運行EC2 m3.medium的mongodb,我試着提高了mongodb網站建議的openfile限制。我的mongodb運行在通過/ dev/sdf安裝的單獨的100GB磁盤上。 我執行MongoDB版本2.4.5 當我的MongoDB的運行時,CPU負荷幾乎都是100%
我的彩信統計爲opcounter是:
命令:19.11
查詢:13.79
更新:0.03
刪除:0.00001
getmore:0
插入:0.03
我最高的頁面錯誤是0.02
我能做些什麼,以我的MongoDB的優化,以小於1秒?
多大主機領域?最有可能的正則表達式必須瘋狂,還應該注意的是,您的索引的當前順序對於此查詢不是最優的。你應該把精確匹配的領域,然後你的部分匹配字段 – Sammaye
嗨Sammaye,我不知道多久/大是我的主人領域,但我使用它的字符串,我的主機是爲了保存網站的網址。關於索引,所以你會建議我索引主機,然後單獨鍵入? –
Nah我會做一個'{type:1,host:1}'的複合索引,看看是否有幫助,因爲當然有正則表達式首先意味着你必須掃描整個索引 – Sammaye