mongodb可以通過profile來監控數據 (mongodb性能優化)


開啟 Profiling  功能 ,對慢查詢進行優化:

mongodb可以通過profile來監控數據,進行優化。

查看當前是否開啟profile功能用命令

db.getProfilingLevel()  返回level等級,值為0|1|2,分別代表意思:0代表關閉,1代表記錄慢命令,2代表全部

 

db.setProfilingLevel(level);  #level等級,值同上

level為1的時候,慢命令默認值為100ms,更改為db.setProfilingLevel(level,slowms)如db.setProfilingLevel(1,50)這樣就更改為50毫秒

通過db.system.profile.find() 查看當前的監控日志。

如:

> db.system.profile.find({millis:{$gt:500}})
{ "ts" : ISODate("2011-07-23T02:50:13.941Z"), "info" : "query order.order reslen:11022 nscanned:672230  \nquery: { status: 1.0 } nreturned:101 bytes:11006 640ms", "millis" : 640 }
{ "ts" : ISODate("2011-07-23T02:51:00.096Z"), "info" : "query order.order reslen:11146 nscanned:672302  \nquery: { status: 1.0, user.uid: { $gt: 1663199.0 } }  nreturned:101 bytes:11130 647ms", "millis" : 647 }

 

 這里值的含義是

 ts:命令執行時間

info:命令的內容

query:代表查詢

order.order: 代表查詢的庫與集合

reslen:返回的結果集大小,byte數

nscanned:掃描記錄數量

nquery:后面是查詢條件

nreturned:返回記錄數及用時

millis:所花時間

 

如果發現時間比較長,那么就需要作優化。

比如nscanned數很大,或者接近記錄總數,那么可能沒有用到索引查詢。

reslen很大,有可能返回沒必要的字段。

nreturned很大,那么有可能查詢的時候沒有加限制。

 

原文轉自:http://my.oschina.net/baowenke/blog/97756


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM