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.
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服务器信息 |
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一致 |
Eine Zusammenfassung der MongoDB-Tipps und Vorsichtsmaßnahmen
Detaillierte Erläuterung der festen MongoDB-Sammlungen