Questa pagina descrive come utilizzare la dashboard di Query Insights per rilevare e analizzare i problemi di prestazioni di Spanner.
Panoramica di Query Insights
Query Insights ti aiuta a rilevare e diagnosticare i problemi di prestazioni delle query e delle
istruzioni DML (INSERT
, UPDATE
e DELETE
)
per un database Spanner. Supporta il monitoraggio intuitivo e fornisce informazioni diagnostiche che non si limitano al rilevamento per identificare la causa principale dei problemi di prestazioni.
Query Insights ti aiuta a migliorare le prestazioni delle query di Spanner guidandoti attraverso i seguenti passaggi:
- Verifica se query inefficienti sono responsabili di un elevato utilizzo della CPU.
- Identifica una query o un tag potenzialmente problematici.
- Analizza il tag di query o richiesta per identificare i problemi.
Gli approfondimenti sulle query sono disponibili sia nelle configurazioni a regione singola sia in quelle a più regioni.
Prezzi
Non sono previsti costi aggiuntivi per gli Approfondimenti sulle query.
Conservazione dei dati
La conservazione massima dei dati per gli Approfondimenti sulle query è di 30 giorni.
Per il grafico Utilizzo totale della CPU (per tag di query o richiesta), i dati vengono ricavati dalle tabelle SPANNER_SYS.QUERY_STATS_TOP_*
, che hanno una conservazione massima di 30 giorni. Per scoprire di più, consulta la sezione Conservazione dei dati.
Ruoli obbligatori
Sono necessari ruoli e autorizzazioni IAM diversi a seconda che tu sia un utente IAM o un utente con controllo dell'accesso granulare.
Utente Identity and Access Management (IAM)
Per ottenere le autorizzazioni necessarie per visualizzare la pagina Approfondimenti sulle query, chiedi all'amministratore di concederti i seguenti ruoli IAM nell'istanza:
-
Visualizzatore Cloud Spanner (
roles/spanner.viewer
) -
Lettore database Cloud Spanner (
roles/spanner.databaseReader
)
Per visualizzare la pagina Approfondimenti sulle query, sono necessarie le seguenti autorizzazioni nel ruolo Cloud Spanner Database Reader(
roles/spanner.databaseReader
):
spanner.databases.beginReadOnlyTransaction
spanner.databases.select
spanner.sessions.create
Utente controllo dell'accesso granulare
Se sei un utente con controllo dell'accesso granulare, assicurati di:
- Avere Cloud Spanner Viewer(
roles/spanner.viewer
) - Disporre di privilegi di controllo dell'accesso granulare e aver ricevuto il
spanner_sys_reader
ruolo di sistema o uno dei suoi ruoli di membro. - Seleziona
spanner_sys_reader
o un ruolo di membro come ruolo di sistema corrente nella pagina Panoramica del database.
Per ulteriori informazioni, consulta Informazioni sul controllo dell'accesso granulare e Ruoli di sistema per controllo dell'accesso dell'accesso granulare.
La dashboard Query Insights
La dashboard Approfondimenti sulle query mostra il carico delle query in base al database e all'intervallo di tempo selezionati. Il carico delle query è una misura dell'utilizzo totale della CPU per tutte le query nell'istanza nell'intervallo di tempo selezionato. La dashboard fornisce una serie di filtri che ti aiutano a visualizzare il caricamento delle query.
Per visualizzare la dashboard Approfondimenti sulle query per un database:
- Seleziona Approfondimenti sulle query nel pannello di navigazione a sinistra. Viene visualizzata la dashboard Statistiche query.
- Seleziona un database dall'elenco Database. La dashboard mostra le informazioni sul carico delle query per il database.
Le aree della dashboard includono:
- Elenco di database: filtra il carico delle query su un database specifico o su tutti i database.
- Filtro intervallo di tempo: filtra il carico delle query in base a intervalli di tempo, ad esempio ore, giorni o un intervallo personalizzato.
- Grafico Utilizzo totale della CPU (tutte le query): mostra il carico aggregato di tutte le query.
- Grafico Utilizzo totale della CPU (per tag di query o richiesta): mostra l'utilizzo della CPU per ciascun tag di query o richiesta.
- Tabella Query e tag TopN: mostra l'elenco dei principali tag di query e richiesta ordinati in base all'utilizzo della CPU. Consulta Identificare una query o un tag potenzialmente problematici.
Rendimento della dashboard
Utilizza i parametri di query o tagga le query per ottimizzare il rendimento di Query Insights. Se non parametrizzi o tagghi le query, potrebbero essere restituiti troppi risultati, il che potrebbe causare il caricamento improprio della tabella Query e tag TopN.
Verificare se query inefficienti sono responsabili di un elevato utilizzo della CPU
L'utilizzo totale della CPU è una misura del lavoro (in secondi CPU) nel tempo per le query eseguite nel database selezionato.
Esamina il grafico per rispondere a queste domande:
Quale database sta riscontrando il carico? Seleziona diversi database dall'elenco Database per trovare quelli con i carichi più elevati. Per scoprire quale database ha il carico più elevato, puoi anche esaminare il grafico Utilizzo della CPU - totale per i database nella console Google Cloud.
L'utilizzo della CPU è elevato? Il grafico presenta picchi o è elevato nel tempo? Se non noti un utilizzo elevato della CPU, il problema non riguarda le query.
Da quanto tempo l'utilizzo della CPU è elevato? Si è verificato un picco di recente o il traffico è stato costantemente elevato da un po' di tempo? Utilizza il selettore di intervalli per selezionare diversi periodi di tempo per scoprire da quanto tempo si verifica il problema. Aumenta lo zoom per visualizzare una finestra temporale in cui vengono osservati picchi di carico delle query. Riduci lo zoom per visualizzare fino a una settimana della cronologia.
Se noti un picco o un aumento nel grafico corrispondente all'utilizzo complessivo della CPU dell'istanza, è molto probabile che sia dovuto a una o più query costose. Successivamente, puoi approfondire il percorso di debug identificando un tag query o richiesta potenzialmente problematico.
Identificare un tag di query o richiesta potenzialmente problematico
Per identificare un tag di query o richiesta potenzialmente problematico, osserva la sezione Query TopN:
Qui vediamo che la query con FPRINT 6815864236081503267
ha un utilizzo elevato della CPU e potrebbe essere problematica.
La tabella Query TopN fornisce una panoramica delle query che utilizzano più CPU durante la finestra temporale scelta, ordinate dal valore più alto al più basso. Il numero di query TopN è limitato a 100.
Per i grafici, recuperiamo i dati dalla tabella delle statistiche delle query TopN, che ha tre diverse granularità: 1 minuto, 10 minuti e 1 ora. Il valore di ciascun punto dati nei grafici rappresenta il valore medio in un intervallo di un minuto.
Come best practice consigliata, puoi aggiungere tag alle query SQL. Il tagging delle query ti aiuta a trovare problemi a livello di costrutti di livello superiore, ad esempio con la logica di business o un microservizio.
La tabella mostra le seguenti proprietà:
- FPRINT: hash del tag richiesta, se presente; in caso contrario, l'hash della query.
Tag di query o richiesta: se alla query è associato un tag, viene visualizzato il tag richiesta. Le statistiche relative a più query con la stessa stringa di tag vengono raggruppate in un'unica riga con il valore
REQUEST_TAG
corrispondente alla stringa di tag. Per scoprire di più sull'utilizzo dei tag di richiesta, consulta Risoluzione dei problemi relativi ai tag di richiesta e di transazione.Se alla query non è associato un tag, viene visualizzata la query SQL troncata a circa 64 KB. Per la DML batch, le istruzioni SQL vengono appiattite in una singola riga e concatenate utilizzando un delimitatore di punto e virgola. I testi SQL identici consecutivi vengono deduplicati prima della troncatura.
Tipo di query: indica se una query è
PARTITIONED_QUERY
oQUERY
. UnPARTITIONED_QUERY
è una query con unpartitionToken
ottenuto dall'API PartitionQuery. Tutte le altre query e istruzioni DML sono indicate dal tipo di queryQUERY
.Utilizzo della CPU: il consumo di risorse della CPU da parte di una query, espresso in percentuale delle risorse della CPU totali utilizzate da tutte le query in esecuzione sui database nell'intervallo di tempo in questione, mostrato in una barra orizzontale con un intervallo da 0 a 100.
CPU (%): consumo di risorse della CPU da parte di una query, espresso in percentuale delle risorse della CPU totali utilizzate da tutte le query in esecuzione sui database nell'intervallo di tempo in questione.
Conteggio esecuzioni: il numero di volte in cui Spanner ha visto la query durante l'intervallo.
Latenza media (ms): durata media, in microsecondi, di ogni esecuzione di query all'interno del database. Questa media esclude il tempo di codifica e trasmissione del set di risultati, nonché il sovraccarico.
Media righe scansionate: numero medio di righe scansionate dalla query, esclusi i valori eliminati.
Numero medio di righe restituite: il numero medio di righe restituite dalla query.
Byte restituiti: il numero di byte di dati restituiti dalla query, escluso il sovraccarico della codifica di trasmissione.
Possibile varianza tra i grafici
Potresti notare alcune differenze tra il grafico Utilizzo totale della CPU (tutte le query) e il grafico Utilizzo totale della CPU (per tag di query o richiesta). Esistono due elementi che possono portare a questo scenario:
Origini dati diverse: i dati di Cloud Monitoring, che alimentano il grafico Utilizzo CPU totale (tutte le query), sono in genere più accurati perché vengono inviati ogni minuto e hanno un periodo di conservazione di 45 giorni. D'altra parte, i dati della tabella di sistema che alimentano il grafico Utilizzo totale della CPU (per tag di query o richiesta) potrebbero essere calcolati in media su 10 minuti (o 1 ora), nel qual caso potremmo perdere i dati ad alta granularità visualizzati nel grafico Utilizzo totale della CPU (tutte le query).
Finestre di aggregazione diverse: entrambi i grafici hanno finestre di aggregazione diverse. Ad esempio, quando esaminiamo un evento precedente a 6 ore, eseguiremo una query sulla tabella
SPANNER_SYS.QUERY_STATS_TOTAL_10MINUTE
. In questo caso, un evento che si verifica alle 10:01 verrà aggregato in 10 minuti e sarà presente nella tabella di sistema corrispondente al timestamp 10:10.
Lo screenshot seguente mostra un esempio di questa varianza.
Analizzare un tag di query o richiesta specifico
Per determinare se un tag query o richiesta è la causa principale del problema, fai clic sul tag query o richiesta che sembra avere il carico più elevato o richiede più tempo rispetto agli altri. Puoi selezionare più query e tag di richiesta contemporaneamente.
Puoi tenere premuto il cursore del mouse sul grafico delle query lungo la cronologia per conoscere il relativo utilizzo della CPU (in secondi).
Prova a restringere il problema esaminando quanto segue:
- Da quanto tempo il carico è elevato? È alto solo ora? Oppure è alta da molto tempo? Modifica gli intervalli di tempo per trovare la data e l'ora in cui il rendimento della query ha iniziato a peggiorare.
- Ci sono stati picchi di utilizzo della CPU? Puoi modificare l'intervallo di tempo per studiare l'utilizzo storico della CPU per la query.
- Qual è il consumo di risorse? Qual è la relazione con altre query? Esamina la tabella e confronta i dati di altre query con quella selezionata. C'è una differenza significativa?
Per verificare che la query selezionata contribuisca all'elevato utilizzo della CPU, puoi visualizzare i dettagli della forma della query (o del tag richiesta) specifica e analizzarla ulteriormente nella pagina Dettagli query.
Visualizza la pagina Dettagli query
Per visualizzare i dettagli di una forma di query o di un tag richiesta specifico in un formato grafico, fai clic su FPRINT associato alla query o al tag richiesta. Viene visualizzata la pagina Dettagli query.
La pagina Dettagli query mostra le seguenti informazioni:
- Testo dei dettagli della query: testo della query SQL, troncato a circa 64 KB. Le statistiche relative a più query con la stessa stringa di tag vengono raggruppate in una singola riga con REQUEST_TAG corrispondente a quella stringa di tag. In questo campo viene mostrato solo il testo di una di queste query. Per la DML batch, l'insieme di istruzioni SQL viene appiattito in una singola riga, concatenata utilizzando un delimitatore di punto e virgola. I testi SQL identici consecutivi vengono deduplicati prima della troncatura.
- I valori dei seguenti campi:
- Conteggio esecuzioni: il numero di volte in cui Spanner ha visto la query durante l'intervallo.
- CPU media (ms): consumo medio delle risorse della CPU, in millisecondi, da parte di una query delle risorse della CPU dell'istanza in un intervallo di tempo.
- Latenza media (ms): durata media in millisecondi di ogni esecuzione di query all'interno del database. Questa media esclude il tempo di codifica e trasmissione per l'overhead e il set di risultati.
- Numero medio di righe restituite: il numero medio di righe restituite dalla query.
- Media righe scansionate: numero medio di righe scansionate dalla query, escludendo i valori eliminati.
- Byte medi: numero di byte di dati restituiti dalla query, escluso il sovraccarico della codifica di trasmissione.
- Grafico dei campioni dei piani di query: ogni punto sul grafico rappresenta un piano di query campionato in un momento specifico e la relativa latenza della query. Fai clic su uno dei punti nel grafico per visualizzare il piano di query e i passaggi eseguiti durante l'esecuzione della query. Nota: i piani di query non sono supportati per le query con partitionToken ottenuti dall'API PartitionQuery e dalle query DML partizionato.
- Visualizzatore del piano di query: mostra il piano di query campionato selezionato. Ogni nodo o scheda del grafo rappresenta un iteratore che consuma righe dai suoi input e produce righe per il relativo elemento principale. Puoi fare clic su ogni iteratore per visualizzare informazioni dettagliate.
- Grafico della latenza delle query: mostra il valore della latenza delle query per una query selezionata in un determinato periodo di tempo. Mostra anche la latenza media.
- Grafico Utilizzo CPU: mostra l'utilizzo della CPU da parte di una query, in percentuale, in un periodo di tempo. Mostra anche l'utilizzo medio della CPU.
- Grafico Conteggio esecuzioni/errori: mostra il conteggio delle esecuzioni di una query in un periodo di tempo e il numero di volte in cui l'esecuzione della query non è riuscita.
- Grafico Righe analizzate: mostra il numero di righe analizzate dalla query in un periodo di tempo.
- Grafico delle righe restituite: mostra il numero di righe che la query ha restituito in un determinato periodo di tempo.
- Filtro intervallo di tempo: filtra i dettagli della query in base a intervalli di tempo, ad esempio ora, giorno o un intervallo personalizzato.
Per i grafici, recuperiamo i dati dalla tabella delle statistiche delle query TopN, che ha tre diverse granularità: 1 minuto, 10 minuti e 1 ora. Il valore di ciascun punto dati nei grafici rappresenta il valore medio in un intervallo di un minuto.
Cercare tutte le esecuzioni di una query nell'audit log
Per cercare tutte le esecuzioni di un determinato'impronta di query in
Cloud Audit Logs,
esegui una query sull'audit log e cerca eventuali
query_fingerprint
corrispondenti al campo FPRINT
nella tabella delle statistiche delle query TopN. Per ulteriori informazioni, consulta la Panoramica delle query e della visualizzazione dei log. Utilizza questo metodo per identificare l'utente che ha avviato la query.