mongodb可以通過profile來監控資料,進行優化。
檢視當前是否開啟profile功能用命令
db.getprofilinglevel() 返回level等級,值為0|1|2,分別代表意思:0代表關閉,1代表記錄慢命令,2代表全部
開始profile功能為
db.setprofilinglevel(level); #level等級,值同上
level為1的時候,慢命令預設值為100ms,更改為db.setprofilinglevel(level,slowms)如db.setprofilinglevel(1,50)這樣就更改為50毫秒
通過db.system.profile.find() 檢視當前的監控日誌。
如: view source
print?
1
> db.system.profile.
find
(})
2
nreturned:101 bytes:11006 640ms"
,
"millis"
: 640 }
3
} nreturned:101 bytes:11130 647ms"
,
"millis"
: 647 }
這裡值的含義是
ts:命令執行時間
info:命令的內容
query:代表查詢
order.order: 代表查詢的庫與集合
reslen:返回的結果集大小,byte數
nscanned:掃瞄記錄數量
nquery:後面是查詢條件
nreturned:返回記錄數及用時
millis:所花時間
如果發現時間比較長,那麼就需要作優化。
比如nscanned數很大,或者接近記錄總數,那麼可能沒有用到索引查詢。
reslen很大,有可能返回沒必要的字段。
nreturned很大,那麼有可能查詢的時候沒有加限制。
mongo可以通過db.serverstatus()檢視mongod的執行狀態
view source
print?
01
> db.serverstatus()
02
,
18
"activeclients"
:
23
},
24
"mem"
: ,
31
"connections"
: ,
35
"extra_info"
: ,
40
"indexcounters"
:
48
},
49
"backgroundflushing"
: ,
56
"cursors"
: ,
61
"network"
: ,
66
"opcounters"
: ,
74
"asserts"
: ,
81
"writebacksqueued"
:
false
,
82
"ok"
: 1
83
}
db.stats()檢視某乙個庫的原先狀況
view source
print?
01
> db.stats()
02
檢視集合記錄用
view source
print?
01
> db.order.stats()
02
,
17
"ok"
: 1
18
}
mongostat命令檢視執行中的實時統計,表示每秒實時執行的次數
mongodb還提供了乙個機遇http的監控頁面,可以訪問http://ip:28017來檢視,這個頁面基本上是對上面的這些命令做了一下綜合,所以這裡不細述了。
根據上面這些監控手段,找到問題後,我們可以進行優化
上面找到了某一下慢的命令,現在我們可以通過執行計畫跟蹤一下,如
view source
print?
01
> db.order.
find
( }).explain()
02
15
}
對於這樣的,我們可以建立索引
可以通過 db.collection.ensureindex() 來建立索引,1為公升序,-1為降序,在已經有多資料的情況下,可用後台來執行,語句db.collection.ensureindex( , )
獲取索引用db.collection.getindexes() 檢視
這裡我們建立乙個user.uid的索引 >db.order.ensureindex()
建立後重新執行
view source
print?
01
db.order.
find
( }).explain()
02
20
}
掃瞄數量減少,速度提高。mongodb的索引設計類似與關聯式資料庫,按索引查詢加快書讀,但是多了會對寫有壓力,所以這裡就不再敘述了。
2.其他優化可以用hint強制索引查詢,返回只是需要的資料,對資料分頁等。
mongodb的監控與效能優化
mongodb可以通過profile來監控資料,進行優化。檢視當前是否開啟profile功能用命令 db.getprofilinglevel 返回level等級,值為0 1 2,分別代表意思 0代表關閉,1代表記錄慢命令,2代表全部 開始profile功能為 db.setprofilinglevel...
mongodb的監控與效能優化
mongodb的監控與效能優化 mongodb可以通過profile來監控資料,進行優化。www.2cto.com 檢視當前是否開啟profile功能用命令 db.getprofilinglevel 返回level等級,值為0 1 2,分別代表意思 0代表關閉,1代表記錄慢命令,2代表全部 開始pr...
mongodb 效能監控
一 使用mongostat.exe cd c program files mongodb server 3.0 bin mongostat.exe mongostat n 10 c test.txt 列印10行到文字檔案,方便檢視 mongo.exe 執行mongodb命令 二 伺服器執行狀態 db...