一、背景
mongodb版本 3.2.5
說(shuō)到mongo的慢日志分析,,就不得不提到profile分析器,,profile分析器將記錄的慢日志寫(xiě)到system.profile集合下,這個(gè)集合是一個(gè)固定的集合,。我們可以通過(guò)這個(gè)集合的查詢,,來(lái)了解當(dāng)前的慢日志,進(jìn)而對(duì)數(shù)據(jù)庫(kù)進(jìn)行優(yōu)化
二,、分析
在查詢system.profile的時(shí)候,,我們能夠觀察到所有的操作,包括remove,update,find等等都會(huì)被記錄到system.profile集合中,,該集合中包含了諸多信息,,如:
"op" : "query", //system.profile.op 代表了慢日志的種類(lèi),是查詢,,插入,,更新,刪除還是其它 "ns" : "test.c",//該項(xiàng)表示了哪個(gè)庫(kù)下面的哪個(gè)集合對(duì)應(yīng)的慢日志 "query" : { //該項(xiàng)詳細(xì)輸出了慢日志的具體語(yǔ)句和行為 "keysExamined" : 2,//該項(xiàng)表明了為了找出最終的結(jié)果,,mongo搜索了多少個(gè)索引key "docsExamined" : 2, //該項(xiàng)表明了為了找出最終的結(jié)果,,mongo搜索了多少個(gè)文檔 "cursorExhausted" : true,// "keyUpdates" : 0, //表明了有多個(gè)索引key在本次操作中被修改,更改索引key也會(huì)有少量的性能消耗,,因?yàn)閙ongo不僅要?jiǎng)h除舊key,,還要插入新key到B-Tree中 "writeConflicts" : 0, //寫(xiě)沖突發(fā)生的數(shù)量,例如update一個(gè)正在被別的update操作的文檔 "numYield" : 0, //為了讓別的操作完成而屈服的次數(shù),,一般發(fā)生在需要訪問(wèn)的數(shù)據(jù)尚未被完全讀取到內(nèi)存中,,mongo會(huì)優(yōu)先完成在內(nèi)存中的操作(冷數(shù)據(jù),?) "locks" : { //比較多,見(jiàn)下文 "nreturned" : 2,//該操作最終返回的文檔數(shù) "responseLength" : 108,//結(jié)果返回的大小,,單位為bytes,,該值如果過(guò)大,則需要考慮limit等方式減少輸出結(jié)果,。 "millis" : 0, //該操作從開(kāi)始到結(jié)束耗時(shí)多少,,單位毫秒 "execStats" : { //包含了一些該操作的統(tǒng)計(jì)信息,只有query類(lèi)型才會(huì)顯示 "stage" : "FETCH", //包含了該操作的詳細(xì)信息,,例如是否用到了索引 "executionTimeMillisEstimate" : 0, "executionTimeMillisEstimate" : 0, "ts" : ISODate("2015-09-03T15:26:14.948Z"),//該操作執(zhí)行開(kāi)始的時(shí)間 "client" : "127.0.0.1", //發(fā)起請(qǐng)求的客戶端ip,。并顯示出該客戶端的ip或hostname "allUsers" : [ ],//哪個(gè)認(rèn)證用戶執(zhí)行的操作 "user" : ""}//是否認(rèn)證用戶執(zhí)行該操作,如認(rèn)證后使用其它用戶操作,,該項(xiàng)為空
system.profile.locks
在操作中產(chǎn)生的鎖,,鎖的種類(lèi)有多種,如下:
Global | Represents global lock. | MMAPV1Journal | Represents MMAPv1 storage engine specific lock to synchronize journal writes; for non-MMAPv1 storage engines, the mode forMMAPV1Journal is empty. | Database | Represents database lock. | Collection | Represents collection lock. | Metadata | Represents metadata lock. | oplog | Represents lock on the oplog. |
鎖的模式也有多種,,如下:
Lock Mode | Description |
---|
R | Represents Shared (S) lock. | W | Represents Exclusive (X) lock. | r | Represents Intent Shared (IS) lock. | w | Represents Intent Exclusive (IX) lock. |
system.profile.locks.acquireCoun
在各種不用的種類(lèi)下,,請(qǐng)求鎖的次數(shù)
三、拓展
一個(gè)mongodb神器,,mtools
|