Analizza l'esecuzione delle query con Query Explain

Questa pagina descrive come recuperare le informazioni sull'esecuzione delle query quando esegui una query.

Utilizzare Spiegazione query

Puoi utilizzare Spiegazione query per capire come vengono eseguite le tue query. Fornisce dettagli che puoi utilizzare per ottimizzare le query.

Puoi utilizzare Spiegazione query nella console Firebase:

  • Nella console Firebase, vai a Database e archiviazione > Firestore > Dati > Editor di query.
  • Esegui la query per la quale vuoi visualizzare le informazioni sull'esecuzione.
  • Fai clic sulla scheda Spiegazione query per visualizzare l'output dell'analisi della query.

Modalità di spiegazione

A seconda di ciò che vuoi eseguire il debug, puoi eseguire una query con Spiegazione query in diverse modalità:

  • analyze: pianifica ed esegue la query. Restituisce informazioni sullo strumento di pianificazione, statistiche e metriche di esecuzione di runtime, insieme ai risultati regolari prodotti dalla query.

  • explain: pianifica la query, ma non la esegue. Restituisce le informazioni sullo strumento di pianificazione, ma non le statistiche, le metriche o i risultati di runtime. È utile per eseguire il debug del comportamento di una query senza eseguire operazioni costose.

Analisi

L'output di Spiegazione query contiene due componenti principali: le statistiche di riepilogo 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 una latenza o un costo elevato. Contiene anche statistiche sulla memoria che ti consentono di sapere quanto la query è vicina 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 ogni nodo di esecuzione, consulta le informazioni di riferimento sull'esecuzione.

Per informazioni dettagliate su come utilizzare queste informazioni per ottimizzare le query, consulta 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