Heim  >  Artikel  >  Ausführungsplan für MongoDB-Ansicht

Ausführungsplan für MongoDB-Ansicht

小云云
小云云Original
2017-12-09 16:12:382043Durchsuche

In diesem Artikel teilen wir Ihnen das Wissen über den MongoDB-Anzeigeausführungsplan mit und hoffen, allen zu helfen. Die Funktion „explain()“ in MongoDB kann uns dabei helfen, abfragebezogene Informationen anzuzeigen, wodurch wir Suchengpässe schnell finden und beheben können. In diesem Artikel werfen wir einen Blick auf einige Verwendungsmöglichkeiten von „explain()“ und die Bedeutung von Abfrageergebnissen.

1. Installieren Sie MongoDB unter Linux
3. MongoDB-Dokumentaktualisierungsoperationen (1)
6.MongoDB-Dokumentabfragevorgang (2)
7.MongoDB-Dokumentabfragevorgang (3)


Im Allgemeinen ist die Verwendung von EXPLAIN() und die Verwendung von sort() und limit () Fast das Gleiche, der Unterschied besteht darin, dass EXPLAIN() am Ende platziert werden muss.


Grundlegende Verwendung

Sehen wir uns zunächst eine grundlegende Verwendung an:

folgt direkt nach der Funktion find() und zeigt an, dass der Ausführungsplan von find( angezeigt werden soll). )-Funktion und das Ergebnis wie folgt:

db.sang_collect.find({x:1}).explain()

Das zurückgegebene Ergebnis enthält zwei große Informationen, eines ist queryPlanner, der der Abfrageplan ist, und das andere ist serverInfo, bei dem es sich um einige Informationen über handelt MongoDB-Dienst. Hier sind also viele Parameter beteiligt, schauen wir sie uns einzeln an:

{
    "queryPlanner" : {
        "plannerVersion" : 1,
        "namespace" : "sang.sang_collect",
        "indexFilterSet" : false,
        "parsedQuery" : {
            "x" : {
                "$eq" : 1.0
            }
        },
        "winningPlan" : {
            "stage" : "COLLSCAN",
            "filter" : {
                "x" : {
                    "$eq" : 1.0
                }
            },
            "direction" : "forward"
        },
        "rejectedPlans" : []
    },
    "serverInfo" : {
        "host" : "localhost.localdomain",
        "port" : 27017,
        "version" : "3.4.9",
        "gitVersion" : "876ebee8c7dd0e2d992f36a848ff4dc50ee6603e"
    },
    "ok" : 1.0
}

Verschiedene Parameter hinzufügen

参数 含义
plannerVersion 查询计划版本
namespace 要查询的集合
indexFilterSet 是否使用索引
parsedQuery 查询条件,此处为x=1
winningPlan 最佳执行计划
stage 查询方式,常见的有COLLSCAN/全表扫描、IXSCAN/索引扫描、FETCH/根据索引去检索文档、SHARD_MERGE/合并分片结果、IDHACK/针对_id进行查询
filter 过滤条件
direction 搜索方向
rejectedPlans 拒绝的执行计划
serverInfo MongoDB服务器信息
explain() empfängt auch verschiedene Parameter, indem wir verschiedene Parameter festlegen Detaillierteren Abfrageplan anzeigen.

queryPlanner

queryPlanner ist der Standardparameter. Das Abfrageergebnis nach dem Hinzufügen des queryPlanner-Parameters ist das Abfrageergebnis, das wir oben gesehen haben, daher werden wir hier nicht auf Details eingehen.

executionStats

executionStats gibt einige statistische Informationen über den besten Ausführungsplan zurück, wie folgt:

Zusätzlich zu einigen der oben eingeführten Parameter gibt es folgende Außerdem gibt es zusätzliche ExecutionStats-Parameter mit der folgenden Bedeutung:

{
    "queryPlanner" : {
        "plannerVersion" : 1,
        "namespace" : "sang.sang_collect",
        "indexFilterSet" : false,
        "parsedQuery" : {},
        "winningPlan" : {
            "stage" : "COLLSCAN",
            "direction" : "forward"
        },
        "rejectedPlans" : []
    },
    "executionStats" : {
        "executionSuccess" : true,
        "nReturned" : 10000,
        "executionTimeMillis" : 4,
        "totalKeysExamined" : 0,
        "totalDocsExamined" : 10000,
        "executionStages" : {
            "stage" : "COLLSCAN",
            "nReturned" : 10000,
            "executionTimeMillisEstimate" : 0,
            "works" : 10002,
            "advanced" : 10000,
            "needTime" : 1,
            "needYield" : 0,
            "saveState" : 78,
            "restoreState" : 78,
            "isEOF" : 1,
            "invalidates" : 0,
            "direction" : "forward",
            "docsExamined" : 10000
        }
    },
    "serverInfo" : {
        "host" : "localhost.localdomain",
        "port" : 27017,
        "version" : "3.4.9",
        "gitVersion" : "876ebee8c7dd0e2d992f36a848ff4dc50ee6603e"
    },
    "ok" : 1.0
}

allPlansExecution

参数 含义
executionSuccess 是否执行成功
nReturned 返回的结果数
executionTimeMillis 执行耗时
totalKeysExamined 索引扫描次数
totalDocsExamined 文档扫描次数
executionStages 这个分类下描述执行的状态
stage 扫描方式,具体可选值与上文的相同
nReturned 查询结果数量
executionTimeMillisEstimate 预估耗时
works 工作单元数,一个查询会分解成小的工作单元
advanced 优先返回的结果数
docsExamined 文档检查数目,与totalDocsExamined一致
allPlansExecution wird verwendet, um alle Ausführungspläne abzurufen. Die resultierenden Parameter sind im Grunde die gleichen wie oben, also habe ich gewonnen Ich gehe hier nicht auf Details ein.

Okay, lasst uns aufhören, über EXPLAIN() in MongoDB zu reden. Wenn Sie Fragen haben, hinterlassen Sie bitte eine Nachricht zur Diskussion.

Verwandte Empfehlungen:

Eine Zusammenfassung der MongoDB-Tipps und Vorsichtsmaßnahmen

Detaillierte Erläuterung der festen MongoDB-Sammlungen

Tutorial zur Verwendung der Mongodb-Datenbank mit Laravel

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn