欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

MongoDB慢日志查詢

MongoDB慢日志查詢

成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:網(wǎng)站設計、網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的燈塔網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!

MongoDB system.profile

前言

Part1:寫在最前

    說到MongoDB的慢日志分析,就不得不提到profile分析器,profile分析器將記錄的慢日志寫到system.profile集合下,這個集合是一個固定集合。我們可以通過對這個集合的查詢,來了解當前的慢日志,進而對數(shù)據(jù)庫進行優(yōu)化。

Part2:整體環(huán)境

MongoDB 3.2.5

實戰(zhàn)

Part1:輸出示范

在查詢system.profile的時候,我們能夠觀察到所有的操作,包括remove,update,find等等都會被記錄到system.profile集合中,該集合中包含了諸多信息,如:

{
   "op" : "query",
   "ns" : "test.c",
   "query" : {
      "find" : "c",
      "filter" : {
         "a" : 1
      }
   },
   "keysExamined" : 2,
   "docsExamined" : 2,
   "cursorExhausted" : true,
   "keyUpdates" : 0,
   "writeConflicts" : 0,
   "numYield" : 0,
   "locks" : {
      "Global" : {
         "acquireCount" : {
            "r" : NumberLong(2)
         }
      },
      "Database" : {
         "acquireCount" : {
            "r" : NumberLong(1)
         }
      },
      "Collection" : {
         "acquireCount" : {
            "r" : NumberLong(1)
         }
      }
   },
   "nreturned" : 2,
   "responseLength" : 108,
   "millis" : 0,
   "execStats" : {
      "stage" : "FETCH",
      "nReturned" : 2,
      "executionTimeMillisEstimate" : 0,
      "works" : 3,
      "advanced" : 2,
      "needTime" : 0,
      "needYield" : 0,
      "saveState" : 0,
      "restoreState" : 0,
      "isEOF" : 1,
      "invalidates" : 0,
      "docsExamined" : 2,
      "alreadyHasObj" : 0,
      "inputStage" : {
         "stage" : "IXSCAN",
         "nReturned" : 2,
         "executionTimeMillisEstimate" : 0,
         "works" : 3,
         "advanced" : 2,
         "needTime" : 0,
         "needYield" : 0,
         "saveState" : 0,
         "restoreState" : 0,
         "isEOF" : 1,
         "invalidates" : 0,
         "keyPattern" : {
            "a" : 1
         },
         "indexName" : "a_1",
         "isMultiKey" : false,
         "isUnique" : false,
         "isSparse" : false,
         "isPartial" : false,
         "indexVersion" : 1,
         "direction" : "forward",
         "indexBounds" : {
            "a" : [
               "[1.0, 1.0]"
            ]
         },
         "keysExamined" : 2,
         "dupsTested" : 0,
         "dupsDropped" : 0,
         "seenInvalidated" : 0
      }
   },
   "ts" : ISODate("2015-09-03T15:26:14.948Z"),
   "client" : "127.0.0.1",
   "allUsers" : [ ],
   "user" : ""}

Part2:輸出解讀

system.profile.op

這一項主要包含如下幾類

  • insert

  • query

  • update

  • remove

  • getmore

  • command

代表了該慢日志的種類是什么,是查詢、插入、更新、刪除還是其他。

system.profile.ns

該項表明該慢日志是哪個庫下的哪個集合所對應的慢日志。

system.profile.query

該項詳細輸出了慢日志的具體語句和行為

system.profile.keysExamined

該項表明為了找出最終結果MongoDB搜索了多少個key

system.profile.docsExamined

該項表明為了找出最終結果MongoDB搜索了多少個文檔

system.profile.keyUpdates

該項表名有多少個index key在該操作中被更改,更改索引鍵也會有少量的性能消耗,因為數(shù)據(jù)庫不單單要刪除舊Key,還要插入新的Key到B-Tree索引中

system.profile.writeConflicts

寫沖突發(fā)生的數(shù)量,例如update一個正在被別的update操作的文檔

system.profile.numYield

為了讓別的操作完成而屈服的次數(shù),一般發(fā)生在需要訪問的數(shù)據(jù)尚未被完全讀取到內(nèi)存中,MongoDB會優(yōu)先完成在內(nèi)存中的操作

system.profile.locks

在操作中產(chǎn)生的鎖,鎖的種類有多種,如下:

GlobalRepresents global lock.
MMAPV1JournalRepresents MMAPv1 storage engine specific lock to synchronize journal writes; for non-MMAPv1 storage engines, the mode forMMAPV1Journal is empty.
DatabaseRepresents database lock.
CollectionRepresents collection lock.
MetadataRepresents metadata lock.
oplogRepresents lock on the oplog.

鎖的模式也有多種,如下:

Lock ModeDescription
RRepresents Shared (S) lock.
WRepresents Exclusive (X) lock.
rRepresents Intent Shared (IS) lock.
wRepresents Intent Exclusive (IX) lock.

system.profile.locks.acquireCoun

在各種不用的種類下,請求鎖的次數(shù)

system.profile.nreturned

該操作最終返回文檔的數(shù)量

system.profile.responseLength

結果返回的大小,單位為bytes,該值如果過大,則需考慮limit()等方式減少輸出結果

system.profile.millis

該操作從開始到結束耗時多少,單位為毫秒

system.profile.execStats

包含了一些該操作的統(tǒng)計信息,只有query類型的才會顯示

system.profile.execStats.stage

包含了該操作的詳細信息,例如是否用到索引

system.profile.ts

該操作執(zhí)行時的時間

system.profile.client

哪個客戶端發(fā)起的該操作,并顯示出該客戶端的ip或hostname

system.profile.allUsers

哪個認證用戶執(zhí)行的該操作

system.profile.user

是否認證用戶執(zhí)行該操作,如認證后使用其他用戶操作,該項為空

——總結——

system.profile集合是定位慢SQL的手段之一,了解每一個輸出項的含義有助于我們更快的定位問題。由于筆者的水平有限,編寫時間也很倉促,文中難免會出現(xiàn)一些錯誤或者不準確的地方,不妥之處懇請讀者批評指正。


當前標題:MongoDB慢日志查詢
文章位置:http://www.chinadenli.net/article16/jdjhgg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄企業(yè)網(wǎng)站制作網(wǎng)頁設計公司做網(wǎng)站定制網(wǎng)站App設計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)