Analizza le prestazioni delle query

In questa pagina viene descritto come utilizzare la dashboard di Query Insights per rilevare e analizzare i problemi relativi alle 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 Spanner guidandoti attraverso i seguenti passaggi:

  1. Verifica se le query inefficienti sono responsabili di un elevato utilizzo della CPU.
  2. Identifica una query o un tag potenzialmente problematici.
  3. Analizza la query o il tag della richiesta per identificare i problemi.

Query Insights è disponibile sia in una singola regione che in più regioni configurazioni.

Prezzi

Non sono previsti costi aggiuntivi per Query Insights.

Conservazione dei dati

La conservazione massima dei dati per gli Approfondimenti sulle query è di 30 giorni. Per il grafico Utilizzo totale della CPU (per query o tag di richiesta), i dati sono: derivanti dalle tabelle SPANNER_SYS.QUERY_STATS_TOP_*, che hanno un limite massimo per un massimo 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 Query Insights: chiedi all'amministratore di concederti seguenti ruoli IAM sull'istanza:

Le seguenti autorizzazioni nella Lettore database Cloud Spanner(roles/spanner.databaseReader) sono necessari per visualizzare la pagina Query Insights:

  • spanner.databases.beginReadOnlyTransaction
  • spanner.databases.select
  • spanner.sessions.create

Utente del controllo degli accessi 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 il ruolo spanner_sys_reader o un membro come ruolo attuale di sistema nella pagina della panoramica del database.

Per ulteriori informazioni, vedi Informazioni sul controllo dell'accesso granulare e Ruoli di sistema di controllo dell'accesso granulari.

Dashboard di 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 consentono di visualizzare la query caricamento.

Per visualizzare la dashboard Query Insights per un database, segui questi passaggi:

  1. Seleziona Approfondimenti sulle query nel riquadro di navigazione a sinistra. La Si apre la dashboard di Query Insights.
  2. Seleziona un database dall'elenco Database. La dashboard mostra le informazioni sul carico delle query per il database.

Le aree della dashboard includono:

  1. Elenco di database: filtra il carico delle query su un database specifico o su tutti i database.
  2. Filtro intervallo di tempo: filtra il carico delle query in base a intervalli di tempo, ad esempio ore, giorni o un intervallo personalizzato.
  3. Grafico Utilizzo totale della CPU (tutte le query): mostra il carico aggregato di tutte le query.
  4. Grafico Utilizzo totale della CPU (per query o tag di richiesta): mostra la CPU. per ogni query o tag di richiesta.
  5. Tabella delle query e dei tag TopN: mostra l'elenco delle query e delle richieste principali. ordinati per utilizzo della CPU. Consulta: Identifica una query o un tag potenzialmente problematico.

Dashboard di Query Insights

Rendimento della dashboard

Utilizza i parametri di query o tagga le query per ottimizzare il rendimento di Query Insights. Se non parametrizzi query o tagghi, potrebbero essere restituiti troppi risultati, il che potrebbe che la tabella delle query e dei tag TopN non venga caricata correttamente.

Conferma se le query inefficienti sono responsabili di un elevato utilizzo della CPU

L'utilizzo totale della CPU è una misura del lavoro (in secondi della CPU) delle query eseguite nel database selezionato.

Utilizzo totale della CPU per tutte le query

Esamina il grafico per rispondere a queste domande:

  • Quale database è soggetto a questo 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 la Grafico Utilizzo CPU - totale per i database nel Console Google Cloud.

    Carico del database

  • L'utilizzo della CPU è elevato? Il grafico è aumenta o aumenta nel tempo? Se non noti un elevato utilizzo della CPU, il problema non riguarda le query.

  • Quanto tempo è stato elevato l'utilizzo della CPU? Ha registrato un picco di recente o è stato costantemente elevato da un po' di tempo? Utilizza il selettore di intervallo per selezionare in vari periodi di tempo per scoprire quanto è durato il problema. Aumenta lo zoom per visualizza una finestra temporale in cui si osservano picchi di carico delle query. Diminuisci lo zoom per fino a una settimana della sequenza temporale.

Se noti un picco o un'elevazione nel grafico corrispondente all'andamento complessivo di utilizzo della CPU da parte dell'istanza, molto probabilmente è dovuto a una o più query costose. Successivamente, puoi approfondire il percorso di debug identificando un tag query o richiesta potenzialmente problematico.

Identificare una query o un tag di richiesta potenzialmente problematico

Per identificare un tag di query o richiesta potenzialmente problematico, osserva la sezione Query TopN:

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 consente di individuare i problemi a livello superiore, come dalla logica di business o da un microservizio.

Tabella delle query TopN

La tabella mostra le seguenti proprietà:

  • FPRINT: hash del tag della richiesta, se presente; altrimenti l'hash del query.
  • Tag di query o richiesta: se alla query è associato un tag, viene visualizzato il tag richiesta. Statistiche relative a più query con lo stesso tag sono raggruppate in una singola riga con il valore REQUEST_TAG corrispondente alla la stringa taggata. Per ulteriori informazioni sull'uso 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 DML batch, le istruzioni SQL sono suddivise in una singola riga e concatenata, utilizzando un delimitatore del punto e virgola. I testi SQL identici consecutivi vengono deduplicati prima della troncatura.

  • Tipo di query: indica se una query è PARTITIONED_QUERY o QUERY. Un PARTITIONED_QUERY è una query con un partitionToken ottenuto dall'API PartitionQuery. Tutte le altre query e le istruzioni DML sono indicate dalla query QUERY di testo.

  • Utilizzo CPU: consumo di risorse della CPU da parte di una query, sotto forma di percentuale le risorse totali della CPU utilizzate da tutte le query in esecuzione sui database tale intervallo di tempo, mostrato su una barra orizzontale con un intervallo compreso tra 0 e 100.

  • CPU (%): consumo di risorse della CPU da parte di una query, come percentuale del risorse totali della CPU utilizzate da tutte le query in esecuzione sui database in intervallo di tempo.

  • Conteggio esecuzioni: il numero di volte in cui Spanner ha visto la query durante l'intervallo.

  • Latenza media (ms): tempo medio, in microsecondi, per ogni query. dell'esecuzione 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, esclusi l'overhead della codifica della trasmissione.

Possibile varianza tra i grafici

Potresti notare una certa variazione tra Grafico Utilizzo totale della CPU (tutte le query) e Grafico Utilizzo totale della CPU (per tag di query o richiesta). Ci sono due cose che potrebbe determinare il seguente 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. Dall'altra parte mano, i dati della tabella di sistema, che alimentano l'utilizzo totale della CPU (per query o Tag richiesta) potrebbe essere calcolata su una media di 10 minuti (o un'ora), nel qual caso potremmo perdere i dati ad alta granularità che vediamo nell'utilizzo totale della CPU (tutte le query).

  • Finestre di aggregazione diverse: entrambi i grafici hanno aggregazioni diverse finestre. Ad esempio, quando si esamina un evento risalente a più di 6 ore prima della data corrente, esegui una query sulla tabella SPANNER_SYS.QUERY_STATS_TOTAL_10MINUTE. In questo caso, che si verifica alle 10:01 viene aggregato nell'arco di 10 minuti e presente nella tabella di sistema corrispondente al timestamp delle 10:10.

Lo screenshot seguente mostra un esempio di questa varianza.

Varianza tra i grafici

Analizzare un tag di query o richiesta specifico

Per determinare se una query o un tag di richiesta è la causa principale del problema, fai clic su il tag di query o richiesta che sembra avere il carico più elevato o e richiede più tempo rispetto alle altre. 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:

  • Quanto tempo è stato elevato? È alto solo ora? Oppure è stato alto per molto tempo? Modifica gli intervalli di tempo per trovare la data e l'ora in cui la query ha iniziato a funzionare in modo scarso.
  • Ci sono stati picchi di utilizzo della CPU? Puoi modificare l'intervallo di tempo in studia l'utilizzo storico della CPU per la query.
  • Qual è il consumo delle 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 confermare che la query selezionata contribuisce all'utilizzo elevato della CPU, puoi visualizzare in dettaglio i dettagli della forma specifica della query (o del tag di richiesta) e analizzarlo 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.

Pagina dei dettagli della query

La pagina Dettagli query mostra le seguenti informazioni:

  1. Testo dei dettagli della query: testo della query SQL, troncato a circa 64 KB. Le statistiche per più query che hanno la stessa stringa tag sono raggruppate in una singola riga con REQUEST_TAG corrispondente alla stringa del tag. Solo il testo di una di queste query viene mostrata in questo campo. Per DML batch, l'insieme di SQL le istruzioni sono suddivise in una singola riga, concatenate da un punto e virgola delimitatore. I testi SQL identici consecutivi vengono deduplicati prima il troncamento.
  2. 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: il numero medio di righe analizzate dalla query, esclusi i valori eliminati.
    • Media byte: il numero di byte di dati restituiti dalla query, esclusi l'overhead della codifica della trasmissione.
  3. Grafico di esempio dei piani di query: ogni punto sul grafico rappresenta un campione in un determinato momento e la latenza specifica delle query. Fai clic su una delle i punti del grafico per visualizzare il piano di query e i passaggi seguiti durante l'esecuzione della query. Nota: i piani di query non sono supportati per le query con PartitionToken ottenuti dall'API PartitionQuery e Query DML partizionate.
  4. Visualizzatore del piano di query: mostra il piano di query campionato selezionato. Ogni nodo o scheda del grafico rappresenta un iteratore che consuma righe dai suoi input e produce righe per l'elemento padre. Puoi fare clic su ogni iteratore maggiori informazioni.
  5. 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.
  6. Grafico sull'utilizzo della CPU: mostra l'utilizzo della CPU per una query, in percentuale per un periodo di tempo. Mostra anche l'utilizzo medio della CPU.
  7. Grafico Conteggio esecuzioni/Esecuzioni non riuscite: 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.
  8. Grafico Righe analizzate: mostra il numero di righe analizzate dalla query in un periodo di tempo.
  9. Grafico delle righe restituite: mostra il numero di righe che la query ha restituito in un determinato periodo di tempo.
  10. 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 ogni il punto dati nei grafici rappresenta il valore medio su un intervallo di minuto.

Cerca 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 delle visualizzazioni dei log. Utilizza questo metodo per identificare l'utente che ha avviato la query.