Maison  >  Article  >  Plan d'exécution de la vue MongoDB

Plan d'exécution de la vue MongoDB

小云云
小云云original
2017-12-09 16:12:382015parcourir

Dans cet article, nous partagerons avec vous les connaissances du plan d'exécution de visualisation de MongoDB, dans l'espoir d'aider tout le monde. La fonction explicative() de MongoDB peut nous aider à afficher les informations liées aux requêtes, ce qui nous aide à trouver rapidement les goulots d'étranglement de recherche et à les résoudre. Dans cet article, nous examinerons certaines utilisations d'explic() et la signification des résultats de requête.

1. Installez MongoDB sur Linux
2. Opérations de base de MongoDB
3. Types de données MongoDB
4. Opérations de mise à jour de documents MongoDB
5. 🎜>6.Opération de requête de document MongoDB (2)
7.Opération de requête de document MongoDB (3)


En général, l'utilisation d'explication() et l'utilisation de sort() et limit () C'est presque la même chose, la différence est que EXPLICATE() doit être placé à la fin.

Utilisation de base

Regardons d'abord une utilisation de base :

db.sang_collect.find({x:1}).explain()
suit directement la fonction find(), indiquant de visualiser le plan d'exécution de la recherche( ) et le résultat comme suit :

{
    "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
}
Le résultat renvoyé contient deux grandes informations, l'une est queryPlanner, qui est le plan de requête, et l'autre est serverInfo, qui contient des informations sur le Service MongoDB. Il y a donc de nombreux paramètres impliqués ici, examinons-les un par un :

参数 含义
plannerVersion 查询计划版本
namespace 要查询的集合
indexFilterSet 是否使用索引
parsedQuery 查询条件,此处为x=1
winningPlan 最佳执行计划
stage 查询方式,常见的有COLLSCAN/全表扫描、IXSCAN/索引扫描、FETCH/根据索引去检索文档、SHARD_MERGE/合并分片结果、IDHACK/针对_id进行查询
filter 过滤条件
direction 搜索方向
rejectedPlans 拒绝的执行计划
serverInfo MongoDB服务器信息
Ajouter différents paramètres

explain() reçoit également différents paramètres En définissant différents paramètres, nous pouvons. voir Plan de requête plus détaillé.

queryPlanner

queryPlanner est le paramètre par défaut. Le résultat de la requête après l'ajout du paramètre queryPlanner est le résultat de la requête que nous avons vu ci-dessus, nous n'entrerons donc pas dans les détails ici.

executionStats

executionStats renverra quelques statistiques du meilleur plan d'exécution, comme suit :

{
    "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
}
En plus de certains des paramètres que nous avons introduits ci-dessus, il existe également Il existe des paramètres d'exécution supplémentaires, avec les significations suivantes :

参数 含义
executionSuccess 是否执行成功
nReturned 返回的结果数
executionTimeMillis 执行耗时
totalKeysExamined 索引扫描次数
totalDocsExamined 文档扫描次数
executionStages 这个分类下描述执行的状态
stage 扫描方式,具体可选值与上文的相同
nReturned 查询结果数量
executionTimeMillisEstimate 预估耗时
works 工作单元数,一个查询会分解成小的工作单元
advanced 优先返回的结果数
docsExamined 文档检查数目,与totalDocsExamined一致
allPlansExecution

allPlansExecution est utilisé pour obtenir tous les plans d'exécution. Les paramètres résultants sont fondamentalement les mêmes que ci-dessus, donc je ne le ferai pas. Je n’entrerai pas dans les détails ici.

D'accord, arrêtons de parler d'explication() dans MongoDB. Si vous avez des questions, veuillez laisser un message pour en discuter.

Recommandations associées :

Un résumé des conseils et précautions de MongoDB

Explication détaillée des collections fixes de MongoDB

Tutoriel sur la façon d'utiliser la base de données MongoDB avec Laravel

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn