欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > MongoDB使用profile分析慢查詢的步驟

MongoDB使用profile分析慢查詢的步驟

熱門標簽:長沙電銷外呼防封卡是什么 內蒙古營銷智能外呼系統哪個好 crm外呼系統聯系方式 外呼線路資源屬于電信業務嗎 呼和浩特外呼系統原理是什么 青白江400企業電話申請 智能外呼系統官網 小裙科技電銷機器人怎樣 河南電話外呼系統招商

      在MongoDB中,如果發生了慢查詢,我們如何得到這些慢查詢的語句,并優化呢?今天來看這塊兒的一些心得。

01 如何收集慢查詢?

    在MongoDB中,通常可以開啟profile來收集慢日志,查看當前profile狀態的語句如下:

test1:PRIMARY> db.getProfilingStatus()
{
        "was" : 2,
        "slowms" : 0,
        "sampleRate" : 1,
        "$gleStats" : {
                "lastOpTime" : Timestamp(0, 0),
                "electionId" : ObjectId("7fffffff0000000000000005")
        },
        "lastCommittedOpTime" : Timestamp(1619186976, 2),
        "$configServerState" : {
                "opTime" : {
                        "ts" : Timestamp(1619186976, 1),
                        "t" : NumberLong(2)
                }
        },
        "$clusterTime" : {
                "clusterTime" : Timestamp(1619186976, 2),
                "signature" : {
                        "hash" : BinData(0,"zvwFpgc0KFxieMpj7mBPdrOnonI="),
                        "keyId" : NumberLong("6904838687771590657")
                }
        },
        "operationTime" : Timestamp(1619186976, 2)
}

這里我們可以看到2個關鍵參數,分別是was和slowms,其中:

was=0,代表不記錄任何的語句;

was=1,代表記錄執行時間超過slowms的語句

was=2,代表記錄所有的語句

slowms代表語句的閾值,單位是ms

上圖中的結果代表我們的實例會收集所有的查詢語句。profile收集的查詢語句結果存放在admin數據庫中的system.profile集合中,可以通過下面的方法進行訪問:

test1:PRIMARY> use admin
switched to db admin

test1:PRIMARY> db.system.profile.find({'op':'query'},{'op':1,'ns':1,'millis':1,'ts':1})
{ "op" : "query", "ns" : "admin.system.users", "millis" : 0, "ts" : ISODate("2020-08-27T07:22:14.815Z") }
{ "op" : "query", "ns" : "admin.system.users", "millis" : 0, "ts" : ISODate("2020-08-27T07:22:15.139Z") }
{ "op" : "query", "ns" : "admin.system.users", "millis" : 0, "ts" : ISODate("2020-08-27T07:22:15.141Z") }
{ "op" : "query", "ns" : "admin.system.users", "millis" : 0, "ts" : ISODate("2020-08-27T07:22:15.239Z") }
{ "op" : "query", "ns" : "admin.system.version", "millis" : 0, "ts" : ISODate("2020-08-27T07:22:16.155Z") }
{ "op" : "query", "ns" : "admin.system.version", "millis" : 0, "ts" : ISODate("2020-08-27T07:22:16.192Z") }
{ "op" : "query", "ns" : "admin.system.users", "millis" : 0, "ts" : ISODate("2020-08-27T07:22:16.225Z") }
{ "op" : "query", "ns" : "admin.system.users", "millis" : 0, "ts" : ISODate("2020-08-27T07:22:16.273Z") }
{ "op" : "query", "ns" : "admin.system.version", "millis" : 0, "ts" : ISODate("2020-08-27T07:22:16.276Z") }

02 system.profile慢查詢集合分析

   admin數據庫中的system.profile是一個固定集合,保存著超過設置的慢查詢的結果。我們來看里面的一條慢查詢。

    利用下面的方法,來拿到一條數據,并對其中的關鍵字段進行注釋說明:

test1:PRIMARY> db.system.profile.findOne({'op':'query'})
{
        "op" : "query",  # 操作類型
        "ns" : "admin.system.users",  # 命名空間
        "command" : {
                "find" : "system.users",
                "filter" : {
                        "_id" : "admin.root"  # 過濾的字段
                },
                "limit" : 1,
                "singleBatch" : true,
                "lsid" : {
                        "id" : UUID("a6034f5e-77c1-4b19-9669-60e1253edf4b")
                },
                "$readPreference" : {
                        "mode" : "secondaryPreferred"
                },
                "$db" : "admin"
        },
        "keysExamined" : 1,   # 掃描的索引數
        "docsExamined" : 1,   # 掃描的行數
        "cursorExhausted" : true,  
        "numYield" : 0,
        "nreturned" : 1,   # 返回的值的行數
        "locks" : {
                xxxx   #  鎖信息
        },
        "flowControl" : {

        },
        "storage" : {
        },
        "responseLength" : 647,
        "protocol" : "op_query",
        "millis" : 0,    # 這個查詢的執行時間,因為我們設置的profilestatus是0,因此所有操作都被記錄了。
        "planSummary" : "IDHACK",  # 針對_id進行查詢
        "execStats" : {   # 查詢執行狀態
                "stage" : "IDHACK",
                "nReturned" : 1,
                "executionTimeMillisEstimate" : 0,
                "works" : 2,
                "advanced" : 1,
                "needTime" : 0,
                "needYield" : 0,
                "saveState" : 0,
                "restoreState" : 0,
                "isEOF" : 1,
                "keysExamined" : 1,
                "docsExamined" : 1
        },
        "ts" : ISODate("2020-08-27T07:22:14.815Z"),
        "client" : "xx.xx.xx.xx",  # 查詢的客戶端IP地址
        "allUsers" : [   #  所有的用戶信息
                {
                        "user" : "root",
                        "db" : "admin"
                }
        ],
        "user" : "root@admin"   # 使用的用戶信息
}

03 慢查詢分析利器---explain

   通常情況下,我們可以使用MongoDB的explain語法來分析一個語句的查詢性能,包含是否用到索引、掃描行數等信息,explain語法的基本用法:

后置寫法
db.system.profile.find({'op':'query'}).explain()
前置寫法
db.system.profile.explain().find({'op':'query'})

其中,explain可以放在查詢語句的后面或者前面,當然find語法也可以是update、remove、insert

explain語法的輸出分為3種不同的詳細程度,分別如下:

三種清晰度模式,清晰度越高,則輸出的信息越全,默認情況下是queryPlanner:

1、queryPlanner模式(默認)
db.products.explain().count( { quantity: { $gt: 50 } } )

2、executionStats模式
db.products.explain("executionStats").count( { quantity: { $gt: 50 } } )

3、allPlansExecution模式
db.products.explain("allPlansExecution").count( { quantity: { $gt: 50 } } )

其中,allPlansExecution模式輸出的信息最多。

下面是一個explain語法的輸出內容,查詢的SQL如下:

db.getCollection('files').find(
{"cTime":{
           "$gte":ISODate("2021-04-18"),
           "$lt":ISODate("2021-04-19")
       }}).limit(1000).explain("allPlansExecution")

輸出的結果如下:

{
        "queryPlanner" : {   # 代表查詢的執行計劃
                "plannerVersion" : 1,   # 版本號
                "namespace" : "fs.files",   # 查詢的命名空間,也就是集合名稱
                "indexFilterSet" : false,   # 是否使用了索引過濾,注意,它并不能判定是否使用了索引
                "parsedQuery" : {    # 查詢語法解析樹
                        "$and" : [
                                {
                                        "cTime" : {
                                                "$lt" : ISODate("2021-04-19T00:00:00Z")
                                        }
                                },
                                {
                                        "cTime" : {
                                                "$gte" : ISODate("2021-04-18T00:00:00Z")
                                        }
                                }
                        ]
                },
                "winningPlan" : {    # 最終選擇的查詢計劃
                        "stage" : "LIMIT",   # 查詢的階段,很重要,下面詳細介紹
                        "limitAmount" : 1000,   # 查詢結果的limit值
                        "inputStage" : {
                                "stage" : "FETCH",
                                "inputStage" : {
                                        "stage" : "IXSCAN",  # 代表索引掃描
                                        "keyPattern" : {
                                                "cTime" : 1
                                        },
                                        "indexName" : "cTime_1",  #  索引名稱
                                        "isMultiKey" : false,    # 下面4個字段都是索引類型分析
                                        "isUnique" : false,
                                        "isSparse" : false,
                                        "isPartial" : false,
                                        "indexVersion" : 1,
                                        "direction" : "forward",
                                        "indexBounds" : {
                                                "cTime" : [
                                                        "[new Date(1618704000000), new Date(1618790400000))"
                                                ]
                                        }
                                }
                        }
                },
                "rejectedPlans" : [ ]  # 候選的沒被選中的查詢計劃
        },
        "serverInfo" : {
                "host" : "xxxx",
                "port" : 24999,
                "version" : "3.2.8",
                "gitVersion" : "ed70e33130c977bda0024c125b56d159573dbaf0"
        },
        "ok" : 1
}

首先解釋下stage的幾個階段:

  1. COLLSCAN---全表掃描
  2. IXSCAN---索引掃描
  3. FETCH---根據索引去檢索文檔
  4. SHARD_MERGE---合并分片結果
  5. IDHACK---針對id進行查詢
  6. LIMIT---執行limit

了解了這些stage的階段之后,我們可以看到,一個查詢的過程是一層一層解析的,所以可以看到,stage這個字段有嵌套的情況。winningPlan中的執行計劃也是按照一層一層的順序去執行:

1、先執行最內層的索引掃描(IXSCAN);

2、再執行外面的FETCH,根據索引去拿文檔

3、執行最后一步的limit,取指定數目個結果返回給客戶端

以上就是MongoDB profile分析慢查詢的示例的詳細內容,更多關于MongoDB profile分析慢查詢的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • 深入講解MongoDB的慢日志查詢(profile)

標簽:池州 菏澤 舟山 呼倫貝爾 黃石 白山 安順 楚雄

巨人網絡通訊聲明:本文標題《MongoDB使用profile分析慢查詢的步驟》,本文關鍵詞  MongoDB,使用,profile,分析,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MongoDB使用profile分析慢查詢的步驟》相關的同類信息!
  • 本頁收集關于MongoDB使用profile分析慢查詢的步驟的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    日韩欧美国产三级| 日本欧美一区二区在线观看| 国内精品久久久久影院薰衣草| 四虎成人免费视频| 在线免费不卡视频| 国产精品久久三| 国产美女精品在线| 激情小说欧美色图| 在线观看欧美日本| 亚洲免费资源在线播放| 国产一区二区三区高清播放| 最新日本中文字幕| 欧美日韩高清一区二区| 国产精品二三区| 国产成人鲁色资源国产91色综| 青娱乐国产视频| 欧美一卡二卡三卡| 亚洲电影在线播放| 佐佐木明希电影| 欧美色爱综合网| 一区二区三区在线免费| 97久久精品人人做人人爽| 国产三级国产精品国产国在线观看| 久久久久99精品一区| 久草精品在线观看| 天天舔天天操天天干| 久久综合国产精品| 国产一区二区h| 亚洲女人毛茸茸高潮| 国产蜜臀97一区二区三区| 精品一区二区免费视频| 亚洲精品国产91| 久久先锋资源网| 国产一区在线观看视频| 在线观看天堂av| 中文字幕的久久| 国产成人在线色| 美国一级片在线观看| 国产精品天美传媒| 99天天综合性| 欧美日韩国产成人在线免费| 爽爽淫人综合网网站| 免费a级黄色片| 欧美精品一区二区三区蜜桃| 国产精品一线二线三线精华| 成年人av电影| 亚洲资源中文字幕| 国产精品久线在线观看| 盗摄精品av一区二区三区| 91在线播放观看| 亚洲男同1069视频| 制服丝袜av在线| 精品91自产拍在线观看一区| 国产成人亚洲综合a∨猫咪| 久久精品黄色片| 亚洲综合激情网| 久久久久久久久免费看无码 | 天天综合色天天| 波多野结衣 在线| 国产日产亚洲精品系列| eeuss鲁片一区二区三区 | 香蕉视频污视频| 日韩欧美一区二区三区在线| 国内精品第一页| 色婷婷综合久久久久中文| 亚洲国产精品久久久久婷婷884 | 国产麻豆精品在线| 色欧美88888久久久久久影院| 一个色综合av| 亚欧洲乱码视频| 亚洲欧洲日韩av| 日韩精品一区二区三区高清免费| 欧美xxxx老人做受| caoporen国产精品视频| 日韩一区二区电影网| 国产黄色成人av| 精品视频资源站| 蜜臀a∨国产成人精品| 美女视频久久久| 亚洲电影一区二区三区| 美女福利视频网| 亚洲成a人v欧美综合天堂| 正在播放国产对白害羞| 亚洲另类春色国产| 国产av自拍一区| 一区二区三区 在线观看视频| 中文字幕国产专区| 亚洲色图欧洲色图婷婷| 91久久免费视频| 一区二区三区四区不卡视频| 亚洲第一视频区| 日韩精品亚洲一区二区三区免费| 丰满少妇被猛烈进入一区二区| 午夜在线成人av| 亚洲自拍偷拍图| 最新热久久免费视频| 中文字幕 自拍| 亚洲福利视频三区| 欧美性猛交xxxxx少妇| 免费成人在线网站| 欧美亚洲自拍偷拍| 国产馆精品极品| 日韩精品资源二区在线| 91麻豆自制传媒国产之光| 久久精子c满五个校花| 亚洲av成人精品一区二区三区| 国产欧美日韩三区| 中文字幕视频观看| 亚洲视频免费看| 操她视频在线观看| 麻豆视频一区二区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 国产乱人伦偷精品视频免下载 | 欧美熟妇精品一区二区| 久久综合九色综合欧美就去吻 | 亚洲欧美电影一区二区| 中文字幕在线播放一区| 亚洲视频图片小说| 裸体武打性艳史| 国产综合久久久久久久久久久久| 欧美一区二区成人6969| 国产激情视频网站| 日本不卡123| 日韩欧美久久一区| 朝桐光av一区二区三区| 丝袜国产日韩另类美女| 91精品国产入口在线| 在线黄色免费网站| 一区二区在线免费观看| 欧美亚洲综合另类| 亚洲欧洲国产视频| 偷拍亚洲欧洲综合| 欧美一区二区日韩| 中文字幕5566| 激情欧美一区二区三区在线观看| 精品国产乱码久久久久久1区2区 | 欧美一区二区免费| 短视频在线观看| 另类调教123区| 久久九九影视网| 精品国产视频一区二区三区| 成人综合婷婷国产精品久久 | 蜜桃视频免费观看一区| 精品久久久久一区二区国产| 国产成人一区二区在线观看| 国产91露脸合集magnet| 亚洲欧美国产三级| 91精品国产综合久久福利| 黄色正能量网站| 国产乱子伦一区二区三区国色天香| 国产精品国产三级国产aⅴ中文| 欧美卡一卡二卡三| 久久久久亚洲av无码网站| 日韩国产一二三区| 久久亚洲综合色| 黑鬼狂亚洲人videos| 欧美一级片在线免费观看| 青青青伊人色综合久久| 日本一区二区三区国色天香 | 欧美性猛交xxxxx少妇| 日本黄色www| 琪琪一区二区三区| 国产日韩欧美激情| 91福利精品视频| 人妻熟女aⅴ一区二区三区汇编| 国产精品一区在线观看乱码| 亚洲男人的天堂网| 欧美一级日韩免费不卡| 特黄一区二区三区| 亚洲成人福利视频| 蜜臀av国产精品久久久久 | 国产精品情侣呻吟对白视频| 成人av在线一区二区| 亚洲不卡一区二区三区| 久久影音资源网| 在线观看视频一区二区| 三叶草欧洲码在线| 成人白浆超碰人人人人| 婷婷亚洲久悠悠色悠在线播放 | 丰满少妇久久久久久久| 亚洲123区在线观看| 久久久国产精品午夜一区ai换脸| 日本韩国欧美一区二区三区| 精品人妻无码一区二区三区 | 亚洲一区二区三区四区在线观看| 日韩久久免费av| 日本道免费精品一区二区三区| 人妻体内射精一区二区三区| 国产不卡免费视频| 丝袜美腿亚洲色图| 中文字幕一区在线观看视频| 欧美一级精品大片| 色综合久久综合| 亚洲黄色免费视频| 手机在线播放av| 国产精品一区二区在线观看不卡| 亚洲国产成人tv| 国产精品久久久久永久免费观看| 欧美一区二区免费观在线| 91高清视频在线|