255_Mongodb_索引執行計劃

      網友投稿 722 2025-03-31

      查詢優化診斷

      255_Mongodb_索引執行計劃

      查詢時候提供了 explain(), 來顯示執行計劃的相關信息, 可以根據結果進行性能優化

      執行結果中字段說明

      參數

      說明

      Shards.shardName

      分片名稱

      Shards.connectionString

      此分片上的服務器信息

      Shards.serverInfo

      服務器信息

      Shards.plannerVersion

      查詢計劃版本

      explain.queryPlanner.namespace

      數據庫 . 集合

      explain.queryPlanner.indexFilterSet

      是否使用到了索引來過濾

      explain.queryPlanner.parsedQuery

      解析查詢,即過濾條件是什么

      explain.queryPlanner.winningPlan

      顯示是否通過索引顯示文檔和索引信息

      explain.queryPlanner.winningPlan.Stage

      查詢時使用哪種方式查詢文檔 常見如下

      COLLSCAN 查詢的字段并沒有建立索引, 使用全表掃描

      IXSCAN??? 索引掃描

      FETCH???? 點查/ 查詢的字段建立了索引(根據索引去檢索指定的document)

      SHARD_MERGE? 將各個分片返回數據進行merge

      SORT?????????? 查詢時在內存中進行了排序 但沒有使用索引查詢

      LIMIT??? 限制顯示查詢結果的數量

      SKIP ????????查詢時使用了skip跳過幾個文檔

      IDHACK????? 查詢時針對特定的 “_id”進行查詢

      TEXT ??????查詢使用全文本索引

      COUNT? 利用db.coll.explain().count()之類進行count運算

      COUNTSCAN? 查詢計算總數時沒有使用索引

      COUNT_SCAN? 查詢計算總數時會使用索引

      SUBPLA??????? 使用$or操作符查詢時沒有使用索引

      PROJECTION?? 查詢時限制顯示特定字段

      explain.queryPlanner.winningPlan. inputStage

      explain.queryPlanner.winningPlan.stage的child stage,此處是IXSCAN,表示進行的是index scanning

      explain.queryPlanner.winningPlan.indexBounds

      winningplan所掃描的索引范圍

      Shards.rejectPlans

      拒絕執行計劃

      OperationTime

      執行計劃操作時間

      > db.inventory.find({item : "journal"}).sort({status:-1, qty:-1}).explain( "allPlansExecution") { "explainVersion" : "1", #queryPlanner是現版本explain的默認模式,并不會去真正進行query語句查詢,而是針對query語句進行執行計劃分析并選出winning plan "queryPlanner" : { "namespace" : "alex.inventory", # query所查詢的庫 表 "indexFilterSet" : false, # 是否使用到了索引來過濾 "parsedQuery" : { # 解析查詢,即過濾條件是什么 "item" : { "$eq" : "journal" } }, "maxIndexedOrSolutionsReached" : false, "maxIndexedAndSolutionsReached" : false, "maxScansToExplodeReached" : false, "winningPlan" : { # 查詢優化器針對該query所返回的最優執行計劃的詳細內容 "stage" : "SORT", # 最優執行計劃的stage "sortPattern" : { "status" : -1, "qty" : -1 }, "memLimit" : 104857600, "type" : "simple", "inputStage" : { # 一個工作單元,一個stage中可以有多個stage "stage" : "FETCH", "inputStage" : { "stage" : "IXSCAN", "keyPattern" : { "item" : 1 }, "indexName" : "item_1", "isMultiKey" : false, #是否是Multikey,此處返回是false,如果索引建立在array上,此處將是true。 "multiKeyPaths" : { "item" : [ ] }, "isUnique" : false, "isSparse" : false, "isPartial" : false, "indexVersion" : 2, "direction" : "forward", #此query的查詢順序,此處是forward,如果用了.sort({w:-1})將顯示backward "indexBounds" : { # 索引掃描范圍 "item" : [ "[\"journal\", \"journal\"]" ] } } } }, "rejectedPlans" : [ ] }, "executionStats" : { #是否執行成功 "executionSuccess" : true, "nReturned" : 1, #查詢的返回條數 "executionTimeMillis" : 0, #整體執行時間 "totalKeysExamined" : 1, #索引掃描次數 "totalDocsExamined" : 1, #document掃描次數 "executionStages" : { "stage" : "SORT", # 用哪種方式去查詢文檔 "nReturned" : 1, "executionTimeMillisEstimate" : 0, "works" : 4, "advanced" : 1, "needTime" : 2, "needYield" : 0, "saveState" : 0, "restoreState" : 0, "isEOF" : 1, "sortPattern" : { "status" : -1, "qty" : -1 }, "memLimit" : 104857600, "type" : "simple", "totalDataSizeSorted" : 325, "usedDisk" : false, "inputStage" : { "stage" : "FETCH", "nReturned" : 1, "executionTimeMillisEstimate" : 0, "works" : 2, "advanced" : 1, "needTime" : 0, "needYield" : 0, "saveState" : 0, "restoreState" : 0, "isEOF" : 1, "docsExamined" : 1, "alreadyHasObj" : 0, "inputStage" : { "stage" : "IXSCAN", "nReturned" : 1, "executionTimeMillisEstimate" : 0, "works" : 2, "advanced" : 1, "needTime" : 0, "needYield" : 0, "saveState" : 0, "restoreState" : 0, "isEOF" : 1, "keyPattern" : { "item" : 1 }, "indexName" : "item_1", "isMultiKey" : false, "multiKeyPaths" : { "item" : [ ] }, "isUnique" : false, "isSparse" : false, "isPartial" : false, "indexVersion" : 2, "direction" : "forward", "indexBounds" : { "item" : [ "[\"journal\", \"journal\"]" ] }, "keysExamined" : 1, "seeks" : 1, "dupsTested" : 0, "dupsDropped" : 0 } } }, "allPlansExecution" : [ ] }, "command" : { "find" : "inventory", "filter" : { "item" : "journal" }, "sort" : { "status" : -1, "qty" : -1 }, "$db" : "alex" }, "serverInfo" : { "host" : "SWX989839", "port" : 27017, "version" : "5.0.5", "gitVersion" : "d65fd89df3fc039b5c55933c0f71d647a54510ae" }, "serverParameters" : { "internalQueryFacetBufferSizeBytes" : 104857600, "internalQueryFacetMaxOutputDocSizeBytes" : 104857600, "internalLookupStageIntermediateDocumentMaxSizeBytes" : 104857600, "internalDocumentSourceGroupMaxMemoryBytes" : 104857600, "internalQueryMaxBlockingSortMemoryUsageBytes" : 104857600, "internalQueryProhibitBlockingMergeOnMongoS" : 0, "internalQueryMaxAddToSetBytes" : 104857600, "internalDocumentSourceSetWindowFieldsMaxMemoryBytes" : 104857600 }, "ok" : 1 }

      MongoDB

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:word怎么做目錄和頁碼(word怎么弄目錄和頁碼)
      下一篇:Word 2013為例來介紹快速打開常用文檔的操作技巧(以word格式發送到郵箱怎么發)
      相關文章
      亚洲国产日韩在线视频| 亚洲中文字幕无码一久久区| 亚洲国产一成人久久精品| 亚洲精品国产综合久久久久紧| 亚洲二区在线视频| 亚洲精彩视频在线观看| 亚洲VA中文字幕不卡无码| 亚洲人成人网站在线观看| mm1313亚洲国产精品美女| 亚洲精品无码不卡在线播放| 亚洲狠狠成人综合网| 亚洲五月丁香综合视频| 亚洲视频一区二区三区四区| 国产91在线|亚洲| 日韩亚洲国产综合高清| 亚洲精品无码专区在线| 亚洲AV成人精品一区二区三区| 亚洲精品无码高潮喷水A片软| 精品国产日韩亚洲一区91| 亚洲精品色在线网站| 亚洲av午夜精品一区二区三区| 国产亚洲人成在线影院| 亚洲av无码成人精品区| 亚洲精品无码av天堂| 亚洲第一网站男人都懂| 成人伊人亚洲人综合网站222| 亚洲人成电影网站色| 亚洲欧美中文日韩视频| 亚洲av成人一区二区三区观看在线| 亚洲精华国产精华精华液好用| 亚洲AV无码一区二区三区牲色| 青青青亚洲精品国产| 亚洲日本中文字幕一区二区三区| 久久亚洲国产成人精品无码区| 中文亚洲AV片不卡在线观看| 久久久久国产成人精品亚洲午夜 | 亚洲AV无码一区二区乱子伦| 久久亚洲中文字幕精品有坂深雪| 亚洲短视频在线观看| 亚洲欧洲日韩在线电影| 亚洲精品人成网在线播放影院|