Analizza le prestazioni delle query

In questa pagina viene descritto come utilizzare la dashboard di Query Insights per rilevare e analizzare problemi di prestazioni.

Panoramica di Query Insights

Query Insights consente di rilevare e diagnosticare query e istruzione DML di prestazioni per un database Spanner. Supporta le funzionalità intuitive il monitoraggio, e fornisce informazioni diagnostiche che ti aiutano ad andare oltre il rilevamento automatico per identificare la causa principale dei problemi di prestazioni.

Query Insights consente di migliorare le prestazioni delle query di 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 problematico.
  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 Query Insights è 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. Consulta Conservazione dei dati per saperne di più.

Ruoli obbligatori

Hai bisogno di ruoli e autorizzazioni IAM diversi a seconda che si tratti di se sei un utente IAM o un utente con controllo granulare degli accessi.

Utente IAM (Identity and Access Management)

Per ottenere le autorizzazioni necessarie per visualizzare la pagina Query Insights: chiedi all'amministratore di concederti seguenti ruoli IAM sull'istanza:

Per visualizzare la pagina Insight sulle query sono necessarie le seguenti autorizzazioni nel ruolo Lettore database Cloud Spanner (roles/spanner.databaseReader):

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

Utente con controllo dell'accesso granulare

Se sei un utente con controllo dell'accesso granulare, assicurati di:

  • Disporre del visualizzatore Cloud Spanner(roles/spanner.viewer)
  • Disporre di privilegi di controllo dell'accesso granulari e disporre del spanner_sys_reader ruolo di sistema o uno dei suoi ruoli membri.
  • 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 di Query Insights mostra il carico query in base alla e l'intervallo di tempo selezionato. Il carico di query è una misurazione del totale Utilizzo 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 il carico delle query.

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

  1. Seleziona Query Insights nel pannello 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 o Microsoft SQL Server.
  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 CPU (tutte le query): mostra il carico aggregato di tutte le query.
  4. Grafico sull'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 oppure taggare le query per ottimizzare le prestazioni 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 database diversi da l'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 vedi un utilizzo elevato della CPU, che il problema non dipende dalle query.

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

Se vedi un picco o un'elevazione nel grafico corrispondente all'istanza complessiva CPU, molto probabilmente è dovuto a una o più query costose. Poi, possiamo approfondire il processo di debug identificando una query o un tag di richiesta potenzialmente problematico.

Identificare una query o un tag di richiesta potenzialmente problematico

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

Query TopN

Qui vediamo che la query con FPRINT 6815864236081503267 ha un elevato utilizzo della CPU e potrebbe essere problematica.

La tabella Query TopN fornisce una panoramica delle query che utilizzano il metodo la maggior parte della CPU durante l'intervallo di tempo selezionato, ordinata dal più alto al più basso. Il numero delle query TopN è limitato a 100.

Per i grafici, recuperiamo i dati dalla tabella delle statistiche delle query TopN, che ha tre diverse granularità: 1 min, 10 min 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 query o richiesta. Se alla query è associato un tag, verrà specificato Il tag della richiesta è visualizzato. Statistiche per più query che hanno 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, la query SQL, troncata a di circa 64 kB. Per DML batch, le istruzioni SQL sono suddivise in una singola riga e concatenata, utilizzando un delimitatore del punto e virgola. Consecutiva testi SQL identici vengono deduplicati prima del troncamento.

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

  • 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: 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 la codifica e il tempo di trasmissione per il set di risultati e l'overhead.

  • Media di righe scansionate: il numero medio di righe analizzate dalla query, escluse i valori eliminati.

  • Media 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 variazione tra l'utilizzo totale della CPU (tutte le query) e Utilizzo totale della CPU (per tag di query o richiesta). Là due cose che potrebbero portare a questo scenario:

  • Varie origini dati: i dati di Cloud Monitoring, che alimentano Il grafico Utilizzo totale della CPU (tutte le query) è in genere più preciso perché viene inviato ogni minuto e ha 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.

Il seguente screenshot mostra un esempio di questa varianza.

Varianza tra grafici

Analizzare una query o un tag di richiesta specifici

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 più richieste alla volta.

Puoi tenere premuto il puntatore del mouse sul grafico per le query nella sequenza temporale per l'utilizzo della CPU (in secondi).

Prova a individuare il problema osservando quanto segue:

  • Quanto tempo è stato elevato? È solo alto 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.
  • Si sono verificati picchi di utilizzo della CPU? Puoi modificare l'intervallo di tempo in analizza l'utilizzo storico della CPU per la query.
  • Qual è il consumo delle risorse? Qual è la relazione con altre query? Osserva 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.

Visualizzare la pagina Dettagli query

Per visualizzare i dettagli di una specifica forma di query o di un tag di richiesta in formato grafico, fare clic sul pulsante FPRINT associato alla query o al tag di richiesta. Viene visualizzata la pagina Dettagli query.

Pagina dei dettagli della query

La pagina Dettagli query mostra le seguenti informazioni:

  1. Testo dettagli 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: numero di volte in cui Spanner ha visto la query durante l'intervallo.
    • Media CPU (ms): consumo medio di risorse della CPU, in millisecondi, per un una query sulle risorse della CPU dell'istanza in un intervallo di tempo.
    • Media Latenza (ms): durata media, in millisecondi, per ogni dell'esecuzione di una query all'interno del database. Questa media esclude la codifica e tempo di trasmissione per il set di risultati e l'overhead.
    • Media 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 una scheda, nel grafico rappresenta un iteratore che consuma righe dal suo 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 della query per un per 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/non riuscite: mostra il numero di esecuzioni di un in un periodo di tempo e il numero di volte in cui l'esecuzione della query non è riuscita.
  8. Grafico righe scansionate: mostra il numero di righe scansionate. la query analizzata in un determinato periodo di tempo.
  9. Grafico righe restituite: mostra il numero di righe restituite dalla query restituita in un determinato periodo di tempo.
  10. Filtro intervallo di tempo: filtra i dettagli delle 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 min, 10 min e 1 ora. Il valore di ogni il punto dati nei grafici rappresenta il valore medio su un intervallo di minuto.