設定目前資料庫日志級别:
db.setProfilingLevel(n);
引用
n: 0 - 關閉性能分析,測試環境可以打開,生成環境關閉,對性能有很大影響 1 - 開啟慢查詢日志,執行時間大于100毫秒的語句 2 - 開啟所有記錄檔
擷取目前資料庫日志分析級别:
db.getProfilingLevel();
資料庫的日志分析資料一般存放在目前資料庫的 system.profile 集合中
檢視目前庫下所有集合的分析資料
db.system.profile.find()
檢視某一個集合的分析資料
db.system.profile.find({info:/user.info/})
檢視執行時間大于100毫秒的執行操作,并倒序排列,并取前5行
db.system.profile.find({millis:{gt:100}}).sort({gt:100}}).sort({natural:-1}).limit(5);
分析執行操作的性能參數:
query: { uid: 200001.0 } nreturned:0 bytes:20", "millis" : 0 }
{ "ts" : "Tue Jun 01 2010 12:27:30 GMT+0800 (CST)", "info" : "query mosh.users ntoreturn:1000
reslen:36 nscanned:1
參數介紹:
ts:操作執行時的時間戳 millis:執行操作所花的時間 info: query:資料庫查詢操作,查詢字段資訊包括ntoreturn,query,nscanned,reslen,nreturned ntoreturn:從查詢中傳回用戶端指定的對象數 query:查詢操作資訊 nscanned:在執行查詢操作的時候掃描了多少對象 reslen:查詢結果的大小 nreturned:從查詢中傳回的結果對象 update:資料庫更新操作, insert:資料庫插入操作 getmore:大資料量查詢
查詢優化:
1、如果nscanned 比 nreturned 大很多時,說明資料庫掃描了很大對象才找到目标對象,是以需要為條件查
詢建立索引
2、當傳回的結果集很大時即reslen值相當大時,會影響性能下降,在做find查詢時,需要添加第二個查詢參數
,隻擷取需要顯示的字段
更新優化:
1、檢查nscanned字段,如果字段非常大,資料庫需要掃描大量的對象才能查找到并更新,如果更新頻率比較
大的話,建議建立索引
本文轉自 不得閑 部落格園部落格,原文連結: http://www.cnblogs.com/DxSoft/archive/2010/10/21/1857357.html ,如需轉載請自行聯系原作者