Questa pagina descrive i componenti chiave del visualizzatore del piano di query.
Il visualizzatore del piano di query nella console Google Cloud ti aiuta a comprendere la struttura del piano di esecuzione scelto da Spanner per valutare una query.
Il visualizzatore mostra il piano sotto forma di grafico visivo, semplificando l'analisi del modo in cui Spanner esegue le query e l'identificazione di potenziali colli di bottiglia delle prestazioni. Puoi utilizzare il visualizzatore del piano di query per eseguire una delle seguenti operazioni:
- Eseguire il debug delle query lente: individua la parte del piano di query che richiede più tempo o risorse.
- Convalida le ottimizzazioni: confronta i piani di query prima e dopo aver apportato modifiche (ad esempio l'aggiunta di un indice o la riscrittura di un join) per verificare i miglioramenti.
- Comprendere il comportamento delle query: scopri come Spanner elabora istruzioni SQL complesse, tra cui join, aggregazioni e operazioni distribuite.
Vantaggi dell'utilizzo del visualizzatore del piano di query
I piani di query possono essere complessi. Il visualizzatore semplifica l'analisi dei piani fornendo le seguenti funzionalità:
- Rappresentazione grafica: mostra il flusso di dati da tabelle e indici attraverso vari operatori fino al risultato finale.
- Insight sulle prestazioni: identifica gli operatori costosi con indicatori visivi per latenza e consumo di CPU elevati.
- Visualizzazione del conteggio delle righe: mostra il volume dei dati in ogni passaggio con indicatori di spessore delle linee.
- Statistiche dettagliate: fornisce statistiche di runtime specifiche per ogni operatore.
Accedi al visualizzatore del piano di query
Puoi accedere al visualizzatore del piano di query nella console Google Cloud tramite uno dei seguenti metodi:
- Spanner Studio: genera un piano di query on demand in tempo reale durante la scrittura e il test delle query.
- Query Insights: visualizza i piani di query storici e campionati acquisiti dai workload di produzione nel tempo.
Visualizza un piano on demand in Spanner Studio
Per visualizzare un piano di query on demand per una query in Spanner Studio:
Nella console Google Cloud , vai alla pagina Istanze di Spanner.
Fai clic sul nome dell'istanza contenente il database su cui vuoi eseguire la query.
Nell'elenco Database, fai clic sul nome del tuo database.
Nel menu di navigazione, fai clic su Spanner Studio.
Nel riquadro dell'editor, inserisci la query SQL.
Fai clic su Esegui.
Fai clic sulla scheda Spiegazione.
Visualizza un piano campionato in Query Insights
Per visualizzare un piano di query storico e campionato in Query Insights:
Nella console Google Cloud , vai alla pagina Istanze di Spanner.
Fai clic sul nome dell'istanza contenente il database che vuoi esaminare.
Nel menu di navigazione, fai clic su Query Insights.
Seleziona il database e l'intervallo di tempo che vuoi analizzare.
Nella tabella Query TopN, fai clic sulla query o sul tag di richiesta che vuoi esaminare.
Nel grafico Esempi di piani di query, fai clic su un punto di esempio che rappresenta l'esecuzione di una query.
Nella sezione Visualizzatore del piano di query, visualizza il piano di esecuzione visivo.
Naviga nel visualizzatore
Il visualizzatore mostra il piano di query come un grafo diretto aciclico (DAG).

La visualizzazione del piano di query potrebbe essere di grandi dimensioni, a seconda della query eseguita. Per nascondere o mostrare i dettagli, fai clic sul selettore di visualizzazione Espansa/Compatta. Per aumentare o diminuire lo zoom, utilizza il controllo dello zoom.
L'interfaccia del visualizzatore fornisce i seguenti riquadri di informazioni:
Per scaricare il piano di query visualizzato, fai clic su Scarica JSON. Per visualizzare il piano di query in un secondo momento, puoi importare nuovamente il profilo JSON scaricato in Spanner Studio. Se devi risolvere problemi di prestazioni, condividi il file JSON con il team di assistenza di Spanner.
Grafico aciclico del piano di query
La logica utilizzata da Spanner per eseguire la query viene visualizzata come DAG. Il grafico mostra il flusso di dati dal basso verso l'alto. Le tabelle e gli indici vengono visualizzati in basso, mentre l'output finale della query viene visualizzato in alto.
Ogni nodo del grafico è rappresentato da una scheda. Ogni scheda rappresenta un iteratore che utilizza le righe dei relativi input e produce righe per il relativo elemento padre.
Le linee che collegano le schede rappresentano il flusso di righe tra gli iteratori. Lo spessore della linea indica il numero relativo di righe passate. Le linee più spesse indicano più righe.
Ogni scheda del grafico contiene le seguenti informazioni:
- Nome iteratore: il nome dell'iteratore.
- Statistiche di runtime: il numero di righe restituite, la latenza e l'utilizzo della CPU.
Fai clic su una scheda per visualizzare ulteriori informazioni su latenza, utilizzo della CPU, righe restituite, numero di esecuzioni e numero di gruppi di macchine.
Per saperne di più sugli operatori, consulta Operatori di esecuzione delle query.
Le query Spanner spesso recuperano i dati da più suddivisioni del database. Un gruppo di macchine rappresenta un insieme di operatori di esecuzione delle query contigui che vengono eseguiti insieme per un insieme di suddivisioni. All'interno di un singolo gruppo di macchine, gli operatori vengono eseguiti in sequenza dal basso verso l'alto, mentre i diversi gruppi di macchine vengono eseguiti in parallelo. Quando i dati si spostano tra suddivisioni oltre i confini dei gruppi di macchine, viaggiano tramite chiamate di procedura remota (RPC).
Per saperne di più sulle suddivisioni, consulta Suddivisioni del database.
Il visualizzatore ti aiuta a distinguere tra distribuzione logica e fisica:
- Confini logici: le schede con l'etichetta Distribuito indicano dove il piano di query ha suddiviso la logica della query.
- Distribuzione fisica: i colori dei gruppi di macchine nel grafico rappresentano l'esecuzione fisica effettiva derivata dalle statistiche di runtime.
I confini fisici spesso coincidono con gli operatori distribuiti logici, ma possono variare a seconda di come vengono posizionate le suddivisioni tra i server.
Riepilogo query
Il riquadro Riepilogo query fornisce le seguenti metriche di esecuzione di alto livello ed evidenzia i potenziali colli di bottiglia nella query:
- Tempo totale trascorso: il tempo totale impiegato per eseguire la query dall'inizio alla fine.
- Tempo di CPU: il tempo di CPU cumulativo utilizzato in tutti i thread e i server che elaborano la query.
- Ora di creazione piano: il tempo impiegato dal compilatore e dall'ottimizzatore delle query per generare il piano di esecuzione.
- Ritardo della coda del server: il tempo trascorso dalla query in attesa nelle code del server prima dell'inizio dell'elaborazione.
- Righe restituite: il numero totale di righe restituite nel risultato finale della query.
- Righe analizzate: il numero totale di righe lette dallo spazio di archiviazione in tutte le tabelle e gli indici analizzati.
- Chiamate remote: il numero totale di RPC effettuate tra suddivisioni o gruppi di macchine.
- Versione dello strumento di ottimizzazione delle query: la versione dello strumento di ottimizzazione delle query di Spanner utilizzata per compilare il piano.
- Pacchetto statistiche: il pacchetto di statistiche dell'ottimizzatore utilizzato per l'ottimizzazione basata sui costi.
Operatori in evidenza
La sezione Operatori principali evidenzia gli iteratori che richiedono più risorse nel piano di query:
- Latenza massima: l'operatore con la durata di esecuzione più lunga.
- Tempo di CPU massimo: l'operatore che ha utilizzato più tempo di CPU.
- Numero massimo di righe: l'operatore che ha elaborato o restituito il maggior numero di righe.
Cronologia di esecuzione delle query
La scheda Cronologia di esecuzione delle query mostra un grafico basato sul tempo che indica per quanto tempo ogni gruppo di macchine esegue la propria parte della query. Un gruppo di macchine potrebbe non essere eseguito per l'intera durata della query o potrebbe essere eseguito più volte. Tuttavia, la cronologia mostra solo l'ora di inizio dell'esecuzione iniziale e l'ora di fine dell'esecuzione finale.
Segnali visivi per il rendimento
Il visualizzatore utilizza i seguenti colori e icone per aiutarti a individuare i problemi:
- Barre rosse: indicano la percentuale di latenza o tempo di CPU consumato dall'operatore rispetto alla query totale.
- Triangoli di avviso: indicano che è stata eseguita una scansione completa della tabella. Queste scansioni spesso suggeriscono un'opportunità per ottimizzare la query, ad esempio aggiungendo un indice secondario.
- Colori dei gruppi di macchine: differenziano i gruppi di macchine ed evidenziano le transizioni tra i gruppi. Queste transizioni richiedono l'esecuzione remota su macchine diverse, il che comporta un overhead di serializzazione e di rete. Anche la cronologia di esecuzione delle query mostra questi colori dei gruppi di macchine.
Passaggi successivi
- Scopri come ottimizzare una query utilizzando il visualizzatore del piano di query.
- Scopri di più sugli operatori di esecuzione delle query specifici.
- Scopri di più sui piani di esecuzione delle query.