1. 程式人生 > >mongodb可以通過profile來監控資料 (mongodb效能優化) mongodb可以通過profile來監控資料 (mongodb效能優化)

mongodb可以通過profile來監控資料 (mongodb效能優化) mongodb可以通過profile來監控資料 (mongodb效能優化)

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

開啟 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