天天看點

MongoDB資料庫性能分析(轉)

設定目前資料庫日志級别:

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 ,如需轉載請自行聯系原作者