Mit „Abfrageerläuterung“ können Sie Abfragen im Datastore-Modus an das Backend senden und detaillierte Leistungsstatistiken zur Ausführung von Backendabfragen erhalten. Sie funktioniert in vielen Fällen wie die EXPLAIN ANALYZE
-Operation.
relationale Datenbanksysteme.
Sie können Anfragen zum Erläutern von Abfragen mithilfe der Clientbibliotheken im Datastore-Modus senden.
Die Ergebnisse von Query Explain zeigen, wie Ihre Abfragen ausgeführt werden, Ihnen Ineffizienzen und mögliche Engpässe auf Serverseite anzeigen.
Abfrageerläuterung:
- Bietet Einblicke in die Planungsphase, sodass Sie Ihre Abfrageindexe anpassen und die Effizienz steigern können.
- Hilft Ihnen, Ihre Kosten und Leistung pro Abfrage zu verstehen können Sie schnell verschiedene Abfragemuster durchlaufen, ihre Nutzung optimieren.
Optionen für die Abfrageerläuterung: Standard und analysieren
Abfrageerläuterungen können mit der Option standard oder analyze ausgeführt werden.
Bei der Standardoption plant Query Explain die Abfrage, überspringt aber der Ausführungsphase. Dadurch werden Informationen zur Planungsphase zurückgegeben. So können Sie prüfen, ob eine Abfrage die erforderlichen Indexe enthält, und sehen, welche Indexe verwendet werden. So können Sie beispielsweise prüfen, ob für eine bestimmte Abfrage ein zusammengesetzter Index verwendet wird, anstatt viele verschiedene Indexe zu überschneiden.
Mit der Option „Analysieren“ plant Query Explain und führt Abfrage. Dadurch werden alle zuvor genannten Informationen zum Planer sowie Statistiken zur Ausführungszeit der Abfrage zurückgegeben. Dies beinhaltet die Abrechnung Informationen sowie Einblicke auf Systemebene zur Ausführung der Abfrage. Mit diesen Tools können Sie verschiedene Abfrage- und Indexkonfigurationen testen, um Kosten und Latenz zu optimieren.
Was kostet die Funktion „Abfrageerläuterung“?
Wenn eine Abfrage mit der Standardoption erläutert wird, werden keine Index- oder Lesevorgänge ausgeführt. Unabhängig von der Komplexität der Abfrage ist ein Lesevorgang geladen wurde.
Wenn eine Abfrage mit der Option „Analysieren“ erklärt wird, durchgeführt werden, und wird Ihnen die Abfrage wie gewohnt in Rechnung gestellt. Es gibt keine zusätzliche Gebühr für die Analyseaktivität, nur die übliche Gebühr für die Abfrage ausgeführt wird.
Abfrage mit der Standardoption ausführen
Sie können eine Clientbibliothek verwenden, um eine Anfrage für die Standardoption zu senden.
Die Ergebnisse der Abfrageerläuterung werden mit Identity and Access Management authentifiziert. Dabei werden dieselben Berechtigungen wie für normale Abfragevorgänge verwendet.
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für den Datastore-Modus finden Sie unter Clientbibliotheken im Datastore-Modus. Weitere Informationen finden Sie in der Java API im Datastore-Modus Referenzdokumentation.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich im Datastore-Modus zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Weitere Informationen zu Indexen finden Sie im Feld indexes_used
in der Antwort.
im Abfrageplan verwendet:
"indexes_used": [ {"query_scope": "Collection Group", "properties": "(__name__ ASC)"}, ]
Weitere Informationen zum Bericht finden Sie in der Referenz.
Abfrage mit der Analyseoption ausführen
Sie können eine Clientbibliothek verwenden, um eine Standardoptionsanfrage zu senden.
Beachten Sie, dass die Ergebnisse der Abfrageanalyse mit Identity and Access Management (IAM) authentifiziert werden. mit denselben Berechtigungen für reguläre Abfragevorgänge.
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für den Datastore-Modus finden Sie hier. Weitere Informationen finden Sie in der Java API im Datastore-Modus Referenzdokumentation.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich beim Datastore-Modus zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Im executionStats
-Objekt finden Sie Informationen zum Abfrage-Profiling, z. B.:
{ "resultsReturned": "5", "executionDuration": "0.100718s", "readOperations": "5", "debugStats": { "index_entries_scanned": "95000", "documents_scanned": "5" "billing_details": { "documents_billable": "5", "index_entries_billable": "0", "small_ops": "0", "min_query_cost": "0", } } }
Weitere Informationen zum Bericht finden Sie unter Berichtsreferenz
Ergebnisse interpretieren und Anpassungen vornehmen
Im folgenden Beispielszenario werden Filme nach Genre und des Produktionslandes und zeigt, wie die Indizes optimiert werden können, Abfrage.
Weitere Informationen zum Bericht finden Sie in der Referenz zum Bericht „Erläuterung von Abfragen“.
Nehmen wir zur Veranschaulichung an, dass das Äquivalent zu dieser SQL-Abfrage verwendet wird.
SELECT * FROM movies WHERE category = 'Romantic' AND country = 'USA';
Mit der Option „Analysieren“ wird der folgende Bericht ausgegeben:
wird die Abfrage auf den Einzelfeldindexen (category ASC, __name__ ASC)
und
(country ASC, __name__ ASC)
. Dabei werden 16.500 Indexeinträge gescannt, aber nur 1.200 Dokumente zurückgegeben.
// Output query planning info "indexes_used": [ {"query_scope": "Collection Group", "properties": "(category ASC, __name__ ASC)"}, {"query_scope": "Collection Group", "properties": "(country ASC, __name__ ASC)"}, ] // Output query status { "resultsReturned": "1200", "executionDuration": "0.118882s", "readOperations": "1200", "debugStats": { "index_entries_scanned": "16500", "documents_scanned": "1200" "billing_details": { "documents_billable": "1200", "index_entries_billable": "0", "small_ops": "0", "min_query_cost": "0", } } }
Um die Leistung der Abfrageausführung zu optimieren, können Sie einen vollständig abgedeckten zusammengesetzten Index erstellen (Kategorie ASC, Land ASC, __name__ ASC).
Wenn wir die Abfrage erneut im Analysemodus ausführen, sehen wir, dass die neu erstellten Index für diese Abfrage ausgewählt, die Abfrage wird viel schneller und öfter ausgeführt effizient kommunizieren können.
// Output query planning info "indexes_used": [ {"query_scope": "Collection Group", "properties": "(category ASC, country ASC, __name__ ASC)"} ] // Output query stats { "resultsReturned": "1200", "executionDuration": "0.026139s", "readOperations": "1200", "debugStats": { "index_entries_scanned": "1200", "documents_scanned": "1200" "billing_details": { "documents_billable": "1200", "index_entries_billable": "0", "small_ops": "0", "min_query_cost": "0", } } }
Nächste Schritte
- Weitere Informationen zum Bericht „Abfrageerläuterung“
- Weitere Informationen zum Optimieren von Abfragen und Indexen