Analyser l'exécution des requêtes avec Query Explain
Cette page explique comment récupérer des informations sur l'exécution d'une requête lorsque vous l'exécutez.Utiliser "Expliquer la requête"
Vous pouvez utiliser "Expliquer la requête" pour comprendre comment vos requêtes sont exécutées. Vous y trouverez des informations qui vous permettront d'optimiser vos requêtes. La prise en charge de l'explication des requêtes est actuellement limitée à la console Google Cloud .
Pour utiliser Query Explain, exécutez une requête dans l'éditeur de requête et ouvrez l'onglet Explication :
Console
-
Dans la console Google Cloud , accédez à la page Bases de données.
- Dans la liste des bases de données, sélectionnez une base de données Firestore compatible avec MongoDB. La console Google Cloud ouvre l'explorateur Firestore pour cette base de données.
- Saisissez une requête dans l'éditeur de requête, puis cliquez sur Exécuter.
-
Cliquez sur l'onglet Explication pour afficher le résultat de l'analyse de la requête.
Analyse
La sortie de l'explication de la requête contient deux composants principaux : les statistiques récapitulatives et l'arborescence d'exécution. Prenons la requête suivante comme exemple :
db.order.aggregate(
[
{ "$match": { "user_id": 1234 } },
{ "$sort": { "date_placed": 1 } }
]
)
Statistiques récapitulatives
Le haut de la sortie expliquée contient un récapitulatif des statistiques d'exécution. Utilisez ces statistiques pour déterminer si une requête présente une latence ou un coût élevés. Il contient également des statistiques sur la mémoire qui vous indiquent dans quelle mesure votre requête est proche des limites de mémoire.
Billing Metrics:
read units: 1
Execution Metrics:
request peak memory usage: 4.00 KiB (4,096 B)
results returned: 1
Arborescence d'exécution
L'arborescence d'exécution décrit l'exécution de la requête sous la forme d'une série de nœuds. Les nœuds inférieurs (nœuds feuilles) récupèrent les données de la couche de stockage, qui remonte l'arborescence pour générer une réponse à la requête.
Pour en savoir plus sur chaque nœud d'exécution, consultez la documentation de référence sur l'exécution.
Pour savoir comment utiliser ces informations afin d'optimiser vos requêtes, consultez Optimiser l'exécution des requêtes.
Voici un exemple d'arborescence d'exécution :
• Drop
| fields to drop: [__$3__]
| records returned: 0
|
└── • MajorSort
| fields: [__$3__ ASC]
| peak memory usage: 4.00 KiB (4,096 B)
| records returned: 0
|
└── • Extend
| expressions: [date_placed AS __$3__]
| records returned: 0
|
└── • Drop
| fields to drop: [__key__]
| records returned: 0
|
└── • Extend
| expressions: [_id(__key__) AS __id__]
| records returned: 0
|
└── • Filter
| expression: $eq(user, 1,234)
| records returned: 0
|
└── • TableScan
order: UNDEFINED
properties: * - { __create_time__, __update_time__ }
records returned: 0
records scanned: 0
source: (default)#/**/collection
Étapes suivantes
- Pour en savoir plus sur les nœuds de l'arborescence d'exécution, consultez la documentation de référence sur l'exécution des requêtes.
- Pour savoir comment optimiser vos requêtes, consultez Optimiser l'exécution des requêtes.