mongodb中慢查詢日志
1.開啟查詢日志.
(1)動态開啟,可以選擇性的對指定DB開啟慢查詢日志,但伺服器重新開機後慢查詢日志又要人工手動開啟。
db.setProfilingLevel(1,300)
setProfilingLevel有兩個參數,第一參數表示慢查詢日志開關(可使用的值為0,1,2
0:表示關閉慢查詢日志,1:表示開啟慢查詢日志,2:表示記錄所有資料庫中的查詢),
第二個參數為慢查詢閥值,機關是毫秒,預設情況下閥值為100ms。
(2).配置檔案中開啟,永久生效。對所有的資料DB生效
在mongo的配置檔案中加上一下兩個參數即可永久開啟慢查詢。
profile:表示慢查詢日志開關.
slowms:慢查詢日志閥值。
和setProfilingLevel中的兩個參數對應。
2.檢視伺服器慢查詢日志狀态
db.getProfilingStatus()
rs0:SECONDARY> db.getProfilingStatus();
{ "was" : 1, "slowms" : 100 }
db.getProfilingLevel()
rs0:SECONDARY> db.getProfilingLevel()
1
3.檢視滿查詢日志。
一般情況下,當開啟慢查詢日志後會在每個db下面生成一個集合(system.profile).
這個集合裡面記錄了所有目前資料庫查詢時間超過閥值的查詢記錄。
rs0:PRIMARY> db.system.profile.find({ns:/^gow/}).limit(1)
{"op" : "update",
"ns" : "gow.broadcasts",
"query" : { "_id" : ObjectId("54b73af6bab3047b5593c456") },
"updateobj" : { "_id" : ObjectId("54b73af6bab3047b5593c456"), "content" : "各新石"},
"nscanned" : 0,
"nscannedObjects" : 0,
"nMatched" : 1,
"nModified" : 0,
"upsert" : true,
"keyUpdates" : 0,
"numYield" : 0,
"lockStats" : { "timeLockedMicros" : { "r" : NumberLong(0) , "w" : NumberLong(10) } },
"millis" : 157,
"execStats" : { },
"ts" : ISODate("2015-01-26T19:05:00.118Z"),
"client" : "10.136.3.117",
"allUsers" : [ { "user" : "root", "db" : "admin" } ], "user" : "root@admin" }
鍵值解釋:
op:操作類型。
ns:執行操作的對象集合
millis:操作所花時間,毫秒
client:執行操作的客服端。
allUsers:執行操作的mongodb賬号
ts:時間戳(操作的發生時間)