Analizzare l'esecuzione delle query con Query Explain
Questa pagina descrive come recuperare le informazioni sull'esecuzione di una query quando la esegui.
Utilizzare Query Explain
Puoi utilizzare Query Explain per capire come vengono eseguite le query. Fornisce dettagli che puoi utilizzare per ottimizzare le query.
Puoi utilizzare Query Explain tramite la console Google Cloud .
Console
Esegui una query nell'Editor query e apri la scheda Spiegazione:
-
Nella console Google Cloud , vai alla pagina Database.
- Dall'elenco dei database, seleziona un database Firestore. La console Google Cloud apre Firestore Explorer per il database.
- Inserisci una query nell'editor di query e fai clic su Esegui.
-
Fai clic sulla scheda Spiegazione per visualizzare l'output dell'analisi della query.
Analisi
L'output di Query Explain contiene due componenti principali: le statistiche riepilogative e l'albero di esecuzione. Considera questa query come esempio:
db.pipeline().collection('/users').sort(field("status").ascending()).limit(100)
Statistiche di riepilogo
La parte superiore dell'output spiegato contiene un riepilogo delle statistiche di esecuzione. Utilizza queste statistiche per determinare se una query ha latenza o costi elevati. Contiene anche statistiche sulla memoria che ti consentono di sapere quanto la query si avvicina ai limiti di memoria.
Execution:
results returned: 2
request peak memory usage: 20.25 KiB (20,736 B)
data bytes read: 148 B
entity row scanned: 2
Billing:
read units: 1
Albero di esecuzione
L'albero di esecuzione descrive l'esecuzione della query come una serie di nodi. I nodi inferiori (nodi foglia) recuperano i dati dal livello di archiviazione che attraversa l'albero per generare una risposta alla query.
Per informazioni dettagliate su ciascun nodo di esecuzione, consulta le informazioni di riferimento sull'esecuzione.
Per informazioni dettagliate su come utilizzare queste informazioni per ottimizzare le query, vedi Ottimizzare l'esecuzione delle query.
Di seguito è riportato un esempio di albero di esecuzione:
Tree:
• Compute
| $out_1: map_set($record_1, "__name__", $__name___1, "__key__", unset)
| is query result: true
|
| Execution:
| records returned: 2
| latency: 5.96 ms (local <1 ms)
|
└── • Compute
| $__name___1: map_get($record_1, "__key__")
|
| Execution:
| records returned: 2
| latency: 5.88 ms (local <1 ms)
|
└── • MajorSort
| fields: [$v_1 ASC]
| output: [$record_1]
| limit: 100
|
| Execution:
| records returned: 2
| latency: 5.86 ms (local <1 ms)
| peak memory usage: 20.25 KiB (20,736 B)
|
└── • Compute
| $v_1: map_get($record_1, "status")
|
| Execution:
| records returned: 2
| latency: 5.23 ms (local <1 ms)
|
└── • TableScan
source: /users
order: UNDEFINED
properties: *
row range: (-∞..+∞)
output record: $record_1
variables: [$record_1]
Execution:
records returned: 2
latency: 4.68 ms
records scanned: 2
data bytes read: 148 B
Passaggi successivi
- Per informazioni sui nodi dell'albero di esecuzione, consulta la documentazione di riferimento sull'esecuzione delle query.
- Per scoprire come ottimizzare le query, consulta Ottimizzare l'esecuzione delle query.