In questa pagina viene descritto come utilizzare la dashboard di Query Insights per: rilevare e analizzare problemi di prestazioni.
Puoi utilizzare l'assistenza di Gemini in Databases per osservare e risolvere i problemi del tuo di Cloud SQL per MySQL. Per ulteriori informazioni, consulta Osservare e risolvere i problemi con l'assistenza di Gemini.Introduzione
Query Insights consente di rilevare, diagnosticare e prevenire i problemi di prestazioni delle query per i database Cloud SQL. Supporta un monitoraggio intuitivo e fornisce informazioni diagnostiche che ti aiutano ad andare oltre il rilevamento per identificare la causa principale dei problemi di prestazioni.
Con Query Insights puoi monitorare le prestazioni a livello di applicazione e risalire all'origine di una query problematica nello stack dell'applicazione in base a modello, vista, controller, route, utente e host. Lo strumento Query Insights può integrare con gli strumenti di monitoraggio delle applicazioni (APM) esistenti e con Google Cloud e i servizi cloud usando standard aperti e API. In questo modo, puoi monitorare e risolvere i problemi di query utilizzando il tuo strumento preferito.
Query Insights ti aiuta a migliorare le prestazioni delle query Cloud SQL guidandoti tramite i seguenti passaggi:
- Visualizza il carico del database per le query principali.
- Identifica una query o un tag potenzialmente problematico.
- Esamina la query o il tag per identificare i problemi.
- Individua l'origine del problema.
Query Insights è supportato su tutti i tipi di macchine Cloud SQL e disponibile in tutte le regioni Google Cloud.
Query Insights è disponibile per MySQL 5.7 e versioni successive.
Prezzi
Non sono previsti costi aggiuntivi per Query Insights. Puoi accedere ai dati di una settimana su la dashboard di Query Insights.
Query Insights non occupa spazio di archiviazione nell'istanza Cloud SQL di archiviazione. Le metriche vengono archiviate in Cloud Monitoring. Per le richieste API, consulta la pagina Prezzi di Cloud Monitoring. Cloud Monitoring dispone di un livello che puoi utilizzare senza costi aggiuntivi.
Prima di iniziare
Per visualizzare un piano di query o eseguire il tracciamento end-to-end,
devi disporre di autorizzazioni IAM specifiche. Crea un ruolo personalizzato a cui aggiungi l'autorizzazione IAM cloudtrace.traces.get
. Quindi, aggiungi questo ruolo a ciascun utente
che deve utilizzare Query Insights.
Per visualizzare i piani di query e le relative visualizzazioni end-to-end, nel progetto Google Cloud deve essere attivata l'API Trace. Questa impostazione consente al progetto Google Cloud di ricevere dati di traccia da origini autenticate senza costi aggiuntivi. Questi dati possono aiutarti a rilevare e diagnosticare problemi di prestazioni nell'istanza.
Per verificare che l'API Trace sia abilitata, segui questi passaggi:
- Nella console Google Cloud, vai ad API e servizi:
- Fai clic su Abilita API e servizi.
- Nella barra di ricerca, inserisci
Trace API
. - Se è visualizzato API abilitata, questa API è abilitata e non devi fare nulla. In caso contrario, fai clic su Attiva.
Abilita Query Insights
Le metriche di Query Insights vengono criptate in stato di riposo. Gli utenti che hanno accesso alla dashboard Cloud SQL possono accedere alle metriche di Query Insights nella dashboard Query Insights. Se disponi dell'autorizzazione per eseguire l'aggiornamento puoi configurare Query Insights. Per un elenco delle autorizzazioni richieste per le istanze Cloud SQL, consulta Controllo dell'accesso ai progetti Cloud SQL. Se non disponi di queste autorizzazioni e vuoi attivare Query Insights nelle tue istanza, contatta l'amministratore.
Console
Abilita Query Insights per un'istanza
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
- Nel riquadro Configurazione, fai clic su Modifica configurazione.
- Nella sezione Opzioni di configurazione, espandi Approfondimenti sulle query.
- Seleziona la casella di controllo Attiva Query Insights.
- (Facoltativo) Seleziona una o più delle seguenti opzioni Query Insights:
- Fai clic su Salva.
Archiviare gli indirizzi IP dei clienti
Valore predefinito: false
Archivia gli indirizzi IP dei client da cui provengono le query e ti aiuta raggrupparli per eseguire le metriche. Le query provengono da più di un host. La revisione dei grafici per le query provenienti dagli indirizzi IP dei client può aiutarti a identificare la fonte di un problema.
Archivia i tag delle applicazioni
Valore predefinito: false
Archivia i tag dell'applicazione che consentono di determinare le API route modello-vista-controller (MVC) che effettuano richieste e raggruppano i dati per eseguire le metriche corrispondenti. Questa opzione richiede di commentare le query con un insieme specifico di tag utilizzando la libreria di automazione dell'object-relational mapping (ORM) open source sqlcommenter. Queste informazioni consentono a Query Insights di identificare l'origine di un problema e MVC da cui proviene il problema. I percorsi delle applicazioni consentono di monitorare le applicazioni.
Personalizzare la lunghezza delle query
Valore predefinito: 1024
Imposta il limite di lunghezza della query su un valore specificato compreso tra 256 e 4500 byte. Le query con una lunghezza maggiore sono più utili per le query di analisi, ma richiedono anche più memoria. Modifica della query richiede il riavvio dell'istanza. Puoi comunque aggiungere tag alle query che superano il limite di lunghezza.
Impostare la frequenza di campionamento massima
Valore predefinito: 5
Imposta la frequenza di campionamento massima. La frequenza di campionamento è il numero di esempi di piano di query eseguiti che vengono acquisiti al minuto in tutti i database dell'istanza. Modifica questo valore scegliendo un numero compreso tra 0 (per disattivare il campionamento) e 20. È probabile che l'aumento della frequenza di campionamento fornisca più punti dati, ma potrebbe aumentare il sovraccarico delle prestazioni.
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Fai clic su Altre azioni Menu su qualsiasi riga.
- Seleziona Attiva Query Insights.
- Nella finestra di dialogo, seleziona la casella di controllo Attiva Query Insights per più istanze.
- Fai clic su Attiva.
- Nella finestra di dialogo successiva, seleziona le istanze per cui vuoi attivare Query Insights.
- Fai clic su Attiva Query Insights.
gcloud
Per attivare Query Insights per un'istanza Cloud SQL utilizzando gcloud
,
esegui gcloud sql instances patch
con
il flag --insights-config-query-insights-enabled
come segue dopo aver sostituito INSTANCE_ID con l'ID dell'istanza.
gcloud sql instances patch INSTANCE_ID \ --insights-config-query-insights-enabled
Utilizza anche uno o più dei seguenti flag facoltativi:
--insights-config-record-client-address
Archivia gli indirizzi IP dei client da cui provengono le query e ti aiuta raggrupparli per eseguire le metriche. Le query provengono da più di una . L'analisi dei grafici per le query dagli indirizzi IP dei client può essere utile per identificare l'origine di un problema.
--insights-config-record-application-tags
Archivia i tag dell'applicazione che consentono di determinare le API route modello-vista-controller (MVC) che effettuano richieste e raggruppano i dati per eseguire le metriche corrispondenti. Questa opzione richiede di aggiungere commenti alle query con un insieme specifico di tag. Puoi farlo utilizzando la libreria di automazione dell'analisi ORM (Object Relational Mapping) open source sqlcommenter. Queste informazioni aiutano Query Insights a identificare la fonte di un problema e il MVC da cui proviene. I percorsi delle applicazioni consentono di monitorare le applicazioni.
--insights-config-query-string-length
Imposta il limite predefinito per la lunghezza delle query su un valore specificato compreso tra 256 e 4500 byte. La lunghezza predefinita delle query è 1024 byte. Se le query hanno una lunghezza maggiore, analitiche, ma richiedono anche più memoria. Modifica della query di lunghezza richiede il riavvio dell'istanza. Puoi comunque aggiungere tag alle query che superano il limite di lunghezza.
--query_plans_per_minute
Per impostazione predefinita, vengono acquisiti un massimo di 5 esempi di piano di query eseguiti al minuto in tutti i database dell'istanza. Modifica questo valore scegliendo un numero compreso tra 0 (per disattivare il campionamento) e 20. È probabile che l'aumento della frequenza di campionamento fornisca più punti dati, ma potrebbe incrementare il sovraccarico delle prestazioni.
Sostituisci quanto segue:
- INSIGHTS_CONFIG_QUERY_STRING_LENGTH: la stringa di query da memorizzare, in byte.
- API_TIER_STRING: il configurazione di istanze personalizzate da utilizzare per l'istanza.
- REGION: la regione dell'istanza.
gcloud sql instances patch INSTANCE_ID \ --insights-config-query-insights-enabled \ --insights-config-query-string-length=INSIGHTS_CONFIG_QUERY_STRING_LENGTH \ --query_plans_per_minute=QUERY_PLANS_PER_MINUTE \ --insights-config-record-application-tags \ --insights-config-record-client-address \ --tier=API_TIER_STRING \ --region=REGION
REST v1
Per attivare Query Insights per un'istanza Cloud SQL utilizzando l'API REST, chiama il metodo instances.patch
con le impostazioni insightsConfig
.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- project-id: l'ID progetto.
- instance-id: l'ID istanza.
Metodo HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
Corpo JSON della richiesta:
{ "settings" : { "insightsConfig" : { "queryInsightsEnabled" : true } } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "PENDING", "user": "user@example.com", "insertTime": "2021-01-28T22:43:40.009Z", "operationType": "UPDATE", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
Terraform
Per utilizzare Terraform per abilitare Query Insights per un'istanza Cloud SQL, imposta la classe
query_insights_enabled
flag per true
.
Inoltre, puoi utilizzare uno o più dei seguenti flag facoltativi:
query_string_length
: il valore predefinito è 1024
e puoi
e lo configuri con un valore compreso tra 256
e 4500
in byte.record_application_tags
: imposta il valore su true
se vuoi
per registrare i tag dell'applicazione dalla query.record_client_address
: imposta il valore su true
se vuoi
registrare l'indirizzo IP del client.query_plans_per_minute
: il valore predefinito è 5
e puoi configurarlo
in un valore compreso tra 5
e 20
. resource "google_sql_database_instance" "INSTANCE_NAME" { name = "INSTANCE_NAME" database_version = "MYSQL_VERSION" region = "REGION" root_password = "PASSWORD" deletion_protection = false # set to true to prevent destruction of the resource settings { tier = "DB_TIER" insights_config { query_insights_enabled = true query_string_length = 2048 # Optional record_application_tags = true # Optional record_client_address = true # Optional query_plans_per_minute = 10 # Optional } } }
Per applicare la configurazione Terraform a un progetto Google Cloud, completa i passaggi nella le sezioni seguenti.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito in cui vuoi applicare le configurazioni Terraform.
Devi eseguire questo comando una sola volta per progetto e puoi farlo in qualsiasi directory.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Le variabili di ambiente vengono sostituite se imposti valori espliciti nel file di configurazione di Terraform.
Prepara la directory
Ogni file di configurazione Terraform deve avere una directory dedicata (inoltre chiamato modulo principale).
-
In Cloud Shell, crea una directory e un nuovo
file al suo interno. Il nome file deve contenere
.tf
, ad esempiomain.tf
. In questo tutorial, il file è denominatomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.
Copia il codice di esempio nel file
main.tf
appena creato.Se vuoi, copia il codice da GitHub. Questa opzione è consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.
- Esamina e modifica i parametri di esempio da applicare al tuo ambiente.
- Salva le modifiche.
-
Inizializza Terraform. Devi eseguire questa operazione una sola volta per directory.
terraform init
Facoltativamente, per utilizzare la versione più recente del provider Google, includi
-upgrade
:terraform init -upgrade
Applica le modifiche
-
Rivedi la configurazione e verifica che le risorse che Terraform sta per creare o
aggiornare corrispondano alle tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione di Terraform eseguendo il seguente comando e inserendo
yes
al prompt:terraform apply
Attendi finché Terraform non visualizzi il messaggio "Applicazione completata!". per creare un nuovo messaggio email.
- Apri il tuo progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nella UI per assicurarti create o aggiornate da Terraform.
Le metriche dovrebbero essere disponibili in Query Insights entro pochi minuti dal completamento della query. Esamina il criterio di conservazione dei dati di Cloud Monitoring. Le tracce Query Insights vengono archiviate in Cloud Trace. Esamina le norme sulla conservazione dei dati di Cloud Trace.
Visualizza la dashboard di Query Insights
La dashboard di Query Insights mostra il carico delle query in base a fattori. che selezioni. Il carico di query è una misurazione del lavoro totale per tutte le nell'istanza nell'intervallo di tempo selezionato. La dashboard fornisce una serie di filtri che ti aiutano a visualizzare il carico delle query.
Per aprire la dashboard Approfondimenti sulle query:
- Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
- Seleziona la scheda Query Insight nel pannello di navigazione a sinistra o fai clic sul link Vai a Query Insight per informazioni più approfondite su query e prestazioni.
Si apre la dashboard Approfondimenti sulle query. Mostra le seguenti informazioni sull'istanza:
- Database: filtra il carico delle query su un database specifico o su tutti o Microsoft SQL Server.
- Utente: filtra il carico delle query da un account utente specifico.
- Indirizzo client: filtra il carico delle query da un indirizzo IP specifico.
- Intervallo di tempo: filtra il carico delle query in base a intervalli di tempo, ad esempio ora, giorno, settimana, mese o un intervallo personalizzato.
- Grafico del carico del database: mostra il grafico del carico delle query in base ai dati filtrati.
- Capacità CPU, CPU e attesa CPU, attesa IO e attesa blocco: filtra i carichi in base alle opzioni selezionate. Consulta: Visualizza il carico del database per le query principali per i dettagli su ciascuno di questi filtri.
- Query e tag. Filtra il carico delle query in base a una query selezionata o a un tag di query SQL selezionato. Consulta: Filtra il carico del database.
Visualizza il carico del database per tutte le query
Il carico delle query del database è una misura del lavoro (in secondi CPU) nel tempo per le query eseguite nel database selezionato. Ciascuna in esecuzione la query sta utilizzando o in attesa di risorse CPU, risorse IO o Google Cloud. Il carico delle query nel database è il rapporto tra la quantità di tempo impiegato da tutti le query completate in un determinato intervallo di tempo fino all'ora reale.
La dashboard Approfondimenti sulle query di primo livello mostra il grafico Carico del database: tutte le query principali. I menu a discesa nella dashboard ti consentono di filtrare il grafico in base a un database, un utente o un indirizzo client specifico.
Le linee colorate nel grafico mostrano il carico delle query, suddivise in quattro categorie:
- Capacità CPU: il numero di CPU disponibili nell'istanza.
CPU e attesa CPU: il rapporto tra il tempo impiegato dalle query in stato attivo e le ore effettive. I tempi di attesa per IO e blocco non bloccano le query in attivo. Questa metrica potrebbe significare che la query utilizza la CPU o in attesa che lo scheduler Linux pianifica il server processo che esegue la query mentre altri processi utilizzano la CPU.
Attesa I/O: il rapporto tra il tempo impiegato dalle query in attesa di I/O e le ore effettive. L'attesa I/O include attesa di lettura I/O e attesa di scrittura I/O.
Se vuoi un'analisi dettagliata delle informazioni sulle attese IO, puoi visualizzarle in e configurazione in Cloud Monitoring. Per ulteriori informazioni, consulta le metriche di Cloud SQL.
Attesa blocco: il rapporto di tempo impiegato dalle query in attesa di blocchi alle ore reali. Include Lock waits, LwLock waits e pin del buffer La serratura attende. Per visualizzare una suddivisione delle informazioni relative alle attese dei blocchi, utilizza Cloud Monitoring. Per ulteriori informazioni, consulta le metriche di Cloud SQL.
Esamina il grafico e utilizza le opzioni di filtro per rispondere a queste domande:
- Il carico di query è elevato? Il grafico è aumenta o aumenta nel tempo? Se non noti un carico elevato, non riguarda la tua query.
- Quanto tempo è stato elevato? È alto solo ora o lo è da molto tempo? Utilizza il selettore di intervallo per selezionare vari periodi di tempo per scoprire quanto è durato il problema. Aumenta lo zoom per visualizzare una finestra temporale in cui vengono osservati picchi di carico delle query. Diminuisci lo zoom per visualizzare fino a una settimana della sequenza temporale.
- Qual è la causa del carico elevato? Puoi selezionare le opzioni per esaminare la capacità della CPU, la CPU e l'attesa della CPU, l'attesa del blocco o l'attesa IO. Il grafico di ciascuna delle queste opzioni sono di un colore diverso in modo da poter individuare facilmente quella con carico massimo. La linea blu scuro sul grafico mostra la capacità massima della CPU del sistema. Consente di confrontare il carico delle query con il numero massimo di CPU e la capacità di archiviazione. Questo confronto ti aiuta a determinare se le risorse della CPU di un'istanza stanno per esaurirsi.
- Quale database è soggetto a questo carico? Seleziona diversi database dal menu a discesa Database per trovare quelli con i carichi più elevati.
- Utenti o indirizzi IP specifici causano carichi più elevati? Seleziona i diversi utenti e indirizzi dai menu a discesa per identificare quelli che causano carichi più elevati.
Filtrare il carico del database
Puoi filtrare il carico del database per query o tag.
Filtra per query
La tabella Query fornisce una panoramica delle query che causano il la maggior parte del carico di query. La tabella mostra tutte le query normalizzate per la finestra temporale e le opzioni selezionate nella dashboard di Query Insights. Ordina le query in base al tempo di esecuzione totale durante l'intervallo di tempo selezionato.
Per ordinare la tabella, seleziona un'intestazione di colonna o una proprietà da Filtra query. La tabella mostra le seguenti proprietà:
Query: la stringa di query normalizzata. Per impostazione predefinita, gli Approfondimenti sulle query mostrano solo 1024 caratteri nella stringa di query.
Le query etichettate come
UTILITY COMMAND
in genere includono comandi o comandi wrapperBEGIN
,COMMIT
eEXPLAIN
.Database: il database su cui è stata eseguita la query.
Carico per tempo totale/Carico per CPU/Carico per attesa IO/Carico per attesa blocco: le opzioni che ti consentono di filtrare query specifiche per trovare il carico maggiore.
Tempo di esecuzione medio (ms): il tempo medio di esecuzione della query.
Numero di chiamate: il numero di volte in cui l'applicazione ha chiamato la query.
Media righe restituite: il numero medio di righe restituite per la query.
Media righe scansionate: il numero medio di righe scansionate per la query.
Query Insights archivia e mostra solo le query normalizzate. Per impostazione predefinita, Query Insights non raccoglie indirizzi IP o informazioni sui tag. Puoi abilitare le query Insight per raccogliere queste informazioni e, se necessario, disattivarne la raccolta. Le tracce del piano di query non raccolgono né archiviano valori costanti e rimuove qualsiasi PII che la costante potrebbe mostrare.
Query Insights mostra le query normalizzate, ovvero
?
sostituisce il valore della costante letterale. Nell'esempio seguente, la costante del nome
viene rimosso e ?
lo sostituisce.
UPDATE
"demo_customer"
SET
"customer_id" = ?::uuid,
"name" = ?,
"address" = ?,
"rating" = ?,
"balance" = ?,
"current_city" = ?,
"current_location" = ?
WHERE
"demo_customer"."id" = ?
Filtra per tag query
Per risolvere i problemi di un'applicazione, devi prima aggiungere tag alle query SQL. I tag di caricamento query forniscono una suddivisione del carico di query del tag selezionato su nel tempo.
Query Insights fornisce un monitoraggio incentrato sulle applicazioni per diagnosticare i problemi di prestazioni delle applicazioni create utilizzando gli ORM. Se sei responsabile dell'intero stack di applicazioni, Query Insights fornisce il monitoraggio delle query da una vista dell'applicazione. Il tagging delle query consente di individuare problemi a costrutti di livello superiore, come con la logica di business o un microservizio.
Potresti taggare le query in base alla logica di business, ad esempio i dati di pagamento, inventario, analisi aziendali o tag di spedizione. Puoi quindi per trovare il carico della query creato dalle varie logiche di business. Ad esempio, potrebbero osservare eventi imprevisti, come i picchi per un tag di analisi dell'attività a 1 PM o una crescita anomala per un servizio di pagamento di tendenza nella settimana precedente.
Per calcolare il Carico del database per il tag, Query Insights utilizza la quantità di tempo impiegato da ogni query che utilizza il tag selezionato. Lo strumento calcola il tempo di completamento al confine del minuto utilizzando l'ora del sistema.
Nella dashboard Approfondimenti sulle query, seleziona Tag per visualizzare la tabella dei tag. La che ordina i tag in base al loro carico totale per tempo totale.
Puoi ordinare la tabella selezionando una proprietà in Filtra tag oppure per facendo clic su un'intestazione di colonna. La tabella mostra le seguenti proprietà:
- Action, Controller, Framework, Route, Application, DB driver: ogni proprietà aggiunta alle query viene visualizzata come colonna. Se vuoi filtrare per tag, devi aggiungere almeno una di queste proprietà.
- Carico per tempo totale/Carico per CPU/Carico per attesa IO/Carico per attesa blocco: opzioni per filtrare query specifiche al fine di trovare il carico maggiore per ogni opzione.
- Tempo medio di esecuzione (ms). Il tempo medio per l'esecuzione della query.
- Numero medio di righe restituite: il numero medio di righe restituite per la query.
- Media righe scansionate: il numero medio di righe scansionate per la query.
- Numero di chiamate: il numero di volte in cui l'applicazione ha chiamato la query.
- Database: il database su cui è stata eseguita la query.
Esaminare una query o un tag specifico
Per determinare se una query o un tag è la causa principale del problema, esegui le seguenti operazioni rispettivamente dalla scheda Query o Tag:
- Per ordinare l'elenco in ordine decrescente, fai clic sull'intestazione Carica per tempo totale.
- Fai clic sulla query o sul tag nella parte superiore dell'elenco. Ha il carico più elevato e richiede più tempo rispetto agli altri.
Si apre una dashboard che mostra i dettagli della query o del tag selezionato.
Esaminare un carico di query specifico
La dashboard per una query selezionata viene visualizzata come segue:
Il grafico Carico database - query specifica mostra una misura del lavoro (in secondi CPU) che la query normalizzata ha eseguito nel query selezionata nel tempo. Per calcolare il carico, utilizza la quantità di tempo impiegato le query normalizzate completate al limite minuto per alle ore tradizionali. Nella parte superiore della tabella, vengono visualizzati i primi 1024 caratteri della query normalizzata, vengono visualizzati i valori letterali rimossi per l'aggregazione e per motivi relativi alle PII.
Come per il grafico delle query totali, puoi filtrare il carico per una query specifica in base a Database, Utente e Indirizzo client. Il carico delle query è suddiviso in CPU capacità massima, Attesa CPU e CPU, Attesa I/O e Attesa blocco.
Esaminare un carico di query con tag specifico
La dashboard per un tag selezionato viene visualizzata come segue. Ad esempio, se tutte le query di un pagamento di microservizi sono contrassegnate come payment
, puoi vedere la quantità di query in tendenza visualizzando il tag payment
.
Il grafico Carico del database: tag specifici mostra una misura del lavoro (in secondi CPU) nel tempo per le query corrispondenti ai tag selezionati nel database selezionato. Come per il grafico delle query totali, puoi filtrare il carico per un tag specifico in base a Database, Utente, e Indirizzo cliente.
Esaminare le operazioni in un piano di query campionato
Un piano di query prende un campione dei tuoi e la suddivide in singole operazioni. Illustra e analizza a ogni operazione nella query.
MySQL 5.7 fornisce un piano di query stimato con la vista EXPLAIN, mentre MySQL La versione 8.0 e le versioni successive forniscono un piano di query eseguito con la vista EXPLAIN ANALYZE. Stima di query fornisce il tempo di esecuzione stimato di una query, mentre un piano di query eseguito fornisce informazioni in tempo reale su ogni passaggio di esecuzione di una determinata query.
I piani di query in MySQL 5.7 sono supportati per le seguenti query supportate dall'istruzione EXPLAIN:
Per singole tabelle: INSERT, SELECT, UPDATE e DELETE.
Per più tabelle: SELECT, UPDATE e DELETE.
Puoi generare piani di query in MySQL 8.0 e versioni successive per tutte le query supportate da EXPLAIN ANALYZE. Questo strumento mostra dove MySQL trascorre il tempo sulle query SELECT per tabelle singole e più tabelle. Cloud SQL supporta la generazione di piani di query DML (Data Manipulation Language) con più tabelle, poiché queste query non sono supportate da EXPLAIN ANALYZE.
Il piano di query di esempio fornisce una vista EXPLAIN ANALYZE per gli esempi di piani di query che sono correlate alla query normalizzata. Si tratta di piani di query eseguiti che offrono un'analisi dettagliata del tempo attivo impiegato da ogni operazione nel piano di query.
Il grafico Esempi di piani di query mostra tutti i piani di query in esecuzione in una determinata e la quantità di tempo impiegata da ciascun piano. Puoi modificare la frequenza con cui vengono acquisiti i campioni di piano di query al minuto. Consulta Attivare Query Insights.
Per impostazione predefinita, il riquadro a destra mostra i dettagli del piano di query di esempio che richiede più tempo, come mostrato nel grafico Campioni di piano di query. Per visualizzare i dettagli di un altro piano di query di esempio, fai clic sul cerchio pertinente sul grafico. I dettagli espansi mostrano un modello di tutte le operazioni nel piano di query. Ogni operazione mostra la latenza, le righe restituite e il costo dell'operazione. Quando selezioni un'operazione, puoi vedere ulteriori dettagli, ad esempio blocchi di hit condivisi, il tipo di schema, i loop e le righe del piano.
Prova a restringere il problema esaminando le seguenti domande:
- Qual è il consumo di risorse?
- Qual è la relazione con altre query?
- Il consumo cambia nel tempo?
Esamina la latenza
La latenza è il tempo impiegato per la generazione la query da completare, in tempo reale. Utilizzi il grafico Latenza per esaminare la latenza sulla query o sul tag. La dashboard della latenza mostra le latenze al 50°, 95° e 99° percentile per trovare comportamenti anomali.
L'immagine seguente mostra il grafico di carico del database al 50° percentile per per una query specifica con filtri selezionati per capacità della CPU, CPU e attesa CPU, Attesa IO e attesa blocco.
La latenza delle query parallele si misura nelle ore effettive, anche se il carico delle query può essere superiore per la query a causa dell'utilizzo di più core per l'esecuzione di parte della query.
Prova a restringere il problema esaminando le seguenti domande:
- Qual è la causa del carico elevato? Seleziona le opzioni per esaminare la capacità della CPU, la CPU e l'attesa CPU, l'attesa I/O o l'attesa blocco.
- Da quanto tempo il carico è elevato? È alto solo ora? Oppure è alta da molto tempo? Modifica l'intervallo di tempo per trovare la data e l'ora in cui il caricamento ha iniziato a funzionare in modo insoddisfacente.
- Ci sono stati picchi di latenza? Modifica l'intervallo di tempo per studiare la latenza storica per la query normalizzata.
Individuare la fonte del problema
Quando trovi le aree e gli orari in cui il carico è stato più elevato, identifica l'origine del problema usando il tracciamento per andare più in dettaglio.
Per aiutarti a identificare l'origine specifica del problema, ad esempio una modello, vista, controller, route, host o utente, Query Insights fornisce visualizzazione della traccia dell'applicazione end-to-end nel contesto. Questa visualizzazione ti aiuta a capire cosa succede nel livello del database per una richiesta specifica e a trovare l'origine di una query problematica in base a modello, visualizzazione, controller e route.
Se attivi OpenCensus o OpenTelemetry, le informazioni relative agli span di OpenCensus vengono inviate al database insieme alle informazioni sui tag all'interno dei commenti SQL. Eventuali tracce dall'applicazione a Cloud Logging sono collegate alle tracce del piano di query del database per contribuire a identificare la fonte del problema.
Fai clic sulla scheda End-to-end nella schermata Query di esempio per esaminare la traccia nel contesto.
Per determinare il client e l'utente che causano il problema, utilizza le tabelle Indirizzi client principali e Utenti principali per trovare i carichi più elevati. Puoi aggiungere un utente o Indirizzo IP al filtro per analizzare ulteriormente l'indirizzo di un utente o di un client specifico. I dettagli nelle tabelle includono la percentuale del carico delle query, il tempo di esecuzione medio in millisecondi e le volte chiamate.
Puoi utilizzare Cloud Trace per visualizzare il monitoraggio end-to-end per ogni passaggio del piano di query. Nella dashboard Approfondimenti sulle query, fai clic sul link Visualizza nel tracciato per aprire lo strumento Cloud Trace. Il grafico delle tracce mostra tutte le tracce che sono state eseguite per il periodo selezionato.
Per maggiori dettagli, vedi Trovare e visualizzare tracce.
Aggiungere tag alle query SQL
Il tagging delle query SQL semplifica la risoluzione dei problemi relativi alle applicazioni. Puoi utilizzare sqlcommenter per aggiungere tag alle query SQL automaticamente o manualmente.
Utilizzare sqlcommenter con ORM
Quando utilizzi ORM anziché scrivere direttamente query SQL, potresti non trovare il codice dell'applicazione che causano problemi di prestazioni. Potresti anche riscontrare difficoltà nell'analizzare in che modo il codice dell'applicazione influisce sulle prestazioni delle query. Per risolvere il problema, Query Insights fornisce una libreria open source chiamata sqlcommenter. Questo è utile per sviluppatori e amministratori che utilizzano gli strumenti ORM per rilevare quale codice dell'applicazione causa problemi di prestazioni.
Se usi ORM e sqlcommenter insieme, i tag vengono è stato creato. Non è necessario aggiungere o modificare il codice nell'applicazione.
Puoi installare sqlcommenter sul server delle applicazioni. La libreria di instrumentazione consente di propagare le informazioni dell'applicazione relative al framework MVC al database insieme alle query come commento SQL. Il database rileva questi tag e avvia la registrazione e l'aggregazione per tag, che sono ortogonali alle statistiche aggregate per le query normalizzate. Query Insights mostra i tag in modo che tu possa causa il carico della query e riesce a trovare il codice dell'applicazione che causa problemi di prestazioni.
Quando esamini i risultati nei log del database SQL, vengono visualizzati come segue:
SELECT * from USERS /*action='run+this',
controller='foo%3',
traceparent='00-01',
tracestate='rojo%2'*/
I tag supportati includono il nome del controller, il percorso, il framework e l'azione.
Il set di strumenti ORM in sqlcommenter è supportato per i seguenti linguaggi di programmazione:
Python |
|
Java |
|
Ruby |
|
Node.js |
|
Per ulteriori informazioni su sqlcommenter e su come utilizzarlo nel tuo mapper ORM consulta la documentazione di sqlcommenter.
Usa sqlcommenter per aggiungere tag
Se non utilizzi il metodo ORM, devi aggiungere manualmente i tag o i commenti sqlcommenter nel formato dei commenti SQL corretto per la query SQL. Inoltre, devi integrare ogni istruzione SQL con un commento contenente una coppia chiave-valore serializzata. Utilizza almeno una delle seguenti chiavi:
action=''
controller=''
framework=''
route=''
application=''
db driver=''
Query Insights elimina tutte le altre chiavi.
Disattivare Query Insights
Console
Per disabilitare Query Insights per un'istanza Cloud SQL utilizzando la console Google Cloud, segui questi passaggi:
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
- Nel riquadro Configurazione, fai clic su Modifica configurazione.
- Nella sezione Opzioni di configurazione, espandi Approfondimenti sulle query.
- Deseleziona la casella di controllo Abilita Query Insights.
- Fai clic su Salva.
gcloud
Per disattivare Query Insights per un'istanza Cloud SQL utilizzando gcloud
,
esegui gcloud sql instances patch
con
il flag --no-insights-config-query-insights-enabled
come segue, dopo aver sostituito INSTANCE_ID con l'ID dell'istanza.
gcloud sql instances patch INSTANCE_ID \ --no-insights-config-query-insights-enabled
REST
Per disattivare Query Insights per un'istanza Cloud SQL utilizzando l'API REST, chiama il metodo instances.patch
con queryInsightsEnabled
impostato su false
come segue.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- project-id: l'ID progetto.
- instance-id: l'ID istanza.
Metodo HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
Corpo JSON della richiesta:
{ "settings" : { "insightsConfig" : { "queryInsightsEnabled" : false } } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "PENDING", "user": "user@example.com", "insertTime": "2021-01-28T22:43:40.009Z", "operationType": "UPDATE", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
Passaggi successivi
- Blog di lancio: Osservabilità del database per gli sviluppatori: presentazione di Cloud SQL Insights
- Consulta le metriche di Google Cloud.
- Blog: Migliora le tue competenze di risoluzione dei problemi relativi alle prestazioni delle query con Cloud SQL Insights
- Video: Introduzione a Cloud SQL Insights
- Podcast: Cloud SQL Insights
- Codelab di Approfondimenti
- Post del blog: Introduzione a Sqlcommenter: una libreria di automazione dell'ORM open source
- Blog: Attivare il tagging delle query con Sqlcommenter