Questa pagina descrive come utilizzare la dashboard di Query Insights per rilevare e analizzare i problemi di prestazioni. Per una panoramica di questa funzionalità, consulta la panoramica di Query Insights.
Puoi utilizzare l'assistenza di Gemini in Databases per monitorare e risolvere i problemi delle tue risorse AlloyDB. Per ulteriori informazioni, consulta Monitorare e risolvere i problemi con l'assistenza di Gemini.
Prima di iniziare
Se tu o altri utenti dovete visualizzare il piano di query o eseguire il monitoraggio end-to-end, per farlo sono necessarie autorizzazioni IAM (Identity and Access Management) specifiche. Puoi creare un ruolo personalizzato e aggiungervi le autorizzazioni IAM necessarie. Poi, puoi aggiungere questo ruolo a ogni account dell'utente che utilizzerà Query Insights per risolvere un problema. Vedi Creare un ruolo personalizzato.
Il ruolo personalizzato deve disporre della seguente autorizzazione IAM: cloudtrace.traces.get
.
Aprire la dashboard Query Insights
Per aprire la dashboard Approfondimenti sulle query:
- Nell'elenco di cluster e istanze, fai clic su un'istanza.
- Fai clic su Vai a Query Insight per informazioni più approfondite su query e rendimento sotto il grafico delle metriche nella pagina Panoramica del cluster oppure seleziona la scheda Query Insight nel riquadro di navigazione a sinistra.
Nella pagina successiva, puoi utilizzare le seguenti opzioni per filtrare i risultati:
- Selettore di istanze. Consente di selezionare l'istanza principale o le istanze del pool di lettura nel cluster. Per impostazione predefinita, è selezionata l'istanza principale. I dettagli mostrati sono aggregati per tutte le istanze del pool di lettura collegate e per i relativi nodi.
- Database. Filtra il carico delle query su un database specifico o su tutti i database.
- Utente. Filtra il carico delle query da account utente specifici.
- Indirizzo del cliente. 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 o un intervallo personalizzato.

Modificare la configurazione di Query Insights
Query Insights è abilitato per impostazione predefinita nelle istanze AlloyDB. Puoi modificare la configurazione predefinita di Query Insights.
Per modificare la configurazione di Query Insights per un'istanza AlloyDB, segui questi passaggi:
Console
Nella console Google Cloud, vai alla pagina Cluster.
Fai clic su un cluster nella colonna Nome risorsa.
Fai clic su Approfondimenti sulle query nel riquadro di navigazione a sinistra.
Seleziona Principale o Pool di lettura dall'elenco Approfondimenti sulle query e poi fai clic su Modifica.
Modifica i campi Query Insights:
Per modificare il limite predefinito di 1024 byte per la lunghezza delle query da analizzare in AlloyDB, inserisci un numero compreso tra 256 e 4500 nel campo Personalizza la lunghezza delle query.
L'istanza si riavvia dopo la modifica di questo campo.
Nota: limiti di lunghezza delle query più elevati richiedono più memoria.
Per personalizzare i set di funzionalità di Query Insights, modifica le seguenti opzioni:
- Abilita i piani di query.Imposta questa casella di controllo per conoscere le operazioni utilizzate per eseguire un esempio di query.
Nel campo Frequenza di campionamento massima, inserisci un numero compreso tra 1 e 20. Per impostazione predefinita, la frequenza di campionamento è impostata su 5. Per disattivare il campionamento, deseleziona la casella di controllo Abilita i piani di query.
La frequenza di campionamento determina il numero massimo di query che AlloyDB può campionare al minuto per l'istanza per nodo. - Archivia gli indirizzi IP dei clienti. Imposta questa casella di controllo per sapere da dove provengono le query e raggruppare queste informazioni per generare le metriche.
- Archivia i tag delle applicazioni. Imposta questa casella di controllo per sapere quali applicazioni con tag stanno effettuando richieste e raggruppa queste informazioni per eseguire le metriche. Per ulteriori informazioni sui tag di applicazione, consulta la specifica.
- Abilita i piani di query.Imposta questa casella di controllo per conoscere le operazioni utilizzate per eseguire un esempio di query.
Fai clic su Aggiorna istanza.
gcloud
Per attivare gli insight sulle query per un'istanza AlloyDB utilizzando i comandi Google Cloud CLI, segui questi passaggi:
- Installa Google Cloud CLI.
- Per inizializzare gcloud CLI, esegui il seguente comando:
gcloud init
Se utilizzi una shell locale, crea le credenziali di autenticazione locale per il tuo account utente:
gcloud auth application-default login
Non devi eseguire questa operazione se utilizzi Cloud Shell.
Per ulteriori informazioni, vedi Configurare l'autenticazione per un ambiente di sviluppo locale.
Ecco un esempio:
gcloud alloydb instances update INSTANCE \
--cluster=CLUSTER \
--project=PROJECT \
--region=REGION \
--insights-config-query-string-length=QUERY_LENGTH \
--insights-config-query-plans-per-minute=QUERY_PLANS \
--insights-config-record-application-tags \
--insights-config-record-client-address
Sostituisci quanto segue:
<var>CLUSTER</var>
: l'ID dell'istanza da aggiornare<var>CLUSTER</var>
: l'ID del cluster dell'istanza<var>PROJECT</var>
: l'ID del progetto del cluster<var>REGION</var>
: la regione del cluster, ad esempious-central1
<var>QUERY_LENGTH</var>
: la lunghezza della query che va da 256 a 4500<var>QUERY_PLANS</var>
: il numero di piani di query da configurare ogni minuto
Utilizza anche uno o più dei seguenti flag facoltativi:
--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. Le query più lunghe sono più utili per le query di analisi, ma richiedono anche più memoria. Per modificare la lunghezza delle query, devi riavviare l'istanza. Puoi comunque aggiungere tag alle query che superano il limite di lunghezza.--insights-config-query-plans-per-minute
: per impostazione predefinita, vengono acquisiti un massimo di cinque campioni di piano di query eseguiti al minuto su tutti i database dell'istanza. Modifica questo valore scegliendo un numero compreso tra 1 e 20. Per disattivare il campionamento, inserisci 0. È probabile che l'aumento della frequenza di campionamento fornisca più punti dati, ma potrebbe incrementare il sovraccarico delle prestazioni.--insights-config-record-client-address
: memorizza gli indirizzi IP dei client da cui provengono le query e ti aiuta a raggruppare questi dati per generare le metriche corrispondenti. Le query provengono da più host. La revisione dei grafici per le query provenienti dagli indirizzi IP dei clienti può aiutarti a identificare la fonte di un problema. Se non vuoi archiviare gli indirizzi IP dei client, utilizza--no-insights-config-record-client-address
.--insights-config-record-application-tags
: memorizza i tag delle applicazioni che ti aiutano a determinare le API e i route modello-visualizzazione-controller (MVC) che effettuano richieste e raggruppa i dati su cui eseguire le metriche. Questa opzione richiede di commentare le query con un insieme specifico di tag. Se non vuoi memorizzare i tag di applicazione, utilizza--no-insights-config-record-application-tags
.
Terraform
Per utilizzare Terraform per configurare Query Insights, utilizza la risorsa google_alloydb_instance
.
Ecco un esempio:
query_insights_config { query_string_length = QUERY_STRING_LENGTH_VALUE record_application_tags = RECORD_APPLICATION_TAG_VALUE record_client_address = RECORD_CLIENT_ADDRESS_VALUE query_plans_per_minute = QUERY_PLANS_PER_MINUTE_VALUE5 }
Sostituisci quanto segue:
QUERY_STRING_LENGTH_VALUE
: lunghezza della stringa di query. Il valore predefinito è1024
. È valido qualsiasi numero intero compreso tra 256 e 4500.RECORD_APPLICATION_TAG_VALUE
: registra il tag di applicazione per un'istanza. Il valore predefinito ètrue
.RECORD_CLIENT_ADDRESS_VALUE
: registra l'indirizzo client per un'istanza. Il valore predefinito ètrue
.QUERY_PLANS_PER_MINUTE_VALUE
: il numero di piani di esecuzione delle query acquisiti da Approfondimenti al minuto per tutte le query combinate. Il valore predefinito è5
. È valido qualsiasi numero intero compreso tra 0 e 20.Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
La configurazione dell'istanza di esempio con la configurazione di Query Insights aggiunta dovrebbe essere la seguente:
resource "google_alloydb_instance" "instance_name" { provider = "google-beta" cluster = google_alloydb_cluster.default.name instance_id = "instance_id" instance_type = "PRIMARY" machine_config { cpu_count = 8 } query_insights_config { query_string_length = 1024 record_application_tags = false record_client_address = false query_plans_per_minute = 5 } depends_on = [google_alloydb_instance.default] }
REST v1
Questo esempio configura le impostazioni di osservabilità nell'istanza AlloyDB. Per un elenco completo dei parametri per questa chiamata, consulta Metodo: projects.locations.clusters.instances.patch.
Per configurare le impostazioni di Query Insights, modifica i campi facoltativi in base alle esigenze. Per un elenco completo dei campi per questa chiamata, consulta QueryInsightsInstanceConfig.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
CLUSTER_ID
: l'ID del cluster che crei. Deve iniziare con una lettera minuscola e può contenere lettere minuscole, numeri e trattini.PROJECT_ID
: l'ID del progetto dove vuoi posizionare il cluster.LOCATION_ID
: l'ID della regione del cluster.INSTANCE_ID
: il nome dell'istanza principale che vuoi creare.
Per modificare la configurazione dell'istanza, utilizza la seguente richiesta PATCH
:
PATCH https://alloydb.googleapis.com/v1beta/{instance.name=projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID?updateMask=observabilityConfig.enabled}
Il corpo JSON della richiesta che configura tutti i campi di osservabilità è il seguente:
{
"queryStringLength": integer,
"recordApplicationTags": boolean,
"recordClientAddress": boolean,
"queryPlansPerMinute": integer
}
Passaggi per migliorare le prestazioni delle query
Query Insights risolve i problemi delle query AlloyDB per rilevare eventuali problemi di prestazioni. La dashboard Approfondimenti sulle query mostra il carico delle query in base ai fattori selezionati. Il carico delle query è una misura del lavoro totale per tutte le query nell'istanza nell'intervallo di tempo selezionato.
Query Insights consente di rilevare e analizzare i problemi di prestazioni delle query. Puoi utilizzare Query Insights per risolvere i problemi relativi alle query in quattro passaggi:
- Visualizza il carico del database per tutte le query.
- Identifica una query o un tag potenzialmente problematici.
- Esamina la query o il tag per identificare i problemi.
- Rintraccia l'origine del problema.
Visualizza il carico del database per tutte le query
La dashboard Approfondimenti sulle query di primo livello mostra il grafico Carico del database: tutte le query principali utilizzando i dati filtrati. Il carico delle query del database è una misura del lavoro (in secondi CPU) nel tempo per le query eseguite nel database selezionato. Ogni query in esecuzione utilizza o è in attesa di risorse CPU, risorse I/O o risorse di blocco. Il carico delle query del database è il rapporto tra il tempo impiegato da tutte le query completate in un determinato intervallo di tempo e le ore effettive.

Le linee colorate nel grafico mostrano il carico delle query, suddiviso 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. Le attese I/O e di blocco non bloccano le query in stato attivo. Questa metrica potrebbe indicare che la query utilizza la CPU o è in attesa che lo scheduler di Linux pianifichi il processo del server che esegue la query mentre altri processi utilizzano la CPU.
Nota: il carico della CPU tiene conto sia del tempo di esecuzione sia del tempo di attesa per la pianificazione del processo del server in esecuzione da parte dello scheduler di Linux. Di conseguenza, il carico della CPU può superare la linea del core massimo.
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. Consulta la tabella degli eventi di PostgreSQL. Se vuoi una suddivisione delle informazioni sulle attese IO, puoi visualizzarla in Cloud Monitoring. Per ulteriori informazioni, consulta i grafici delle metriche.
Attesa blocco: il rapporto tra il tempo impiegato dalle query in attesa di blocchi e le ore effettive. Include le attese per blocchi di tipo Lock, LwLock e BufferPin Lock. Se vuoi una suddivisione delle informazioni relative alle attese dei blocchi, puoi visualizzarla in Cloud Monitoring. Per ulteriori informazioni, consulta i grafici delle metriche.
Successivamente, esamina il grafico e utilizza le opzioni di filtro per rispondere a queste domande:
- Il carico delle query è elevato? Il grafico presenta picchi o è elevato nel tempo? Se non noti un carico elevato, il problema non riguarda le query.
- Da quanto tempo il carico è elevato? È alto solo ora? Oppure è stata alta per molto tempo? Utilizza la selezione dell'intervallo per selezionare vari periodi di tempo per scoprire da quanto tempo si verifica il problema. In alternativa, puoi aumentare lo zoom per visualizzare un intervallo di tempo in cui vengono osservati picchi di carico delle query. Puoi diminuire 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 di queste opzioni è di un colore diverso, in modo da poter vedere quale ha il carico più elevato. La linea blu scuro sul grafico mostra la capacità massima della CPU del sistema. Ti consente di confrontare il carico delle query con la capacità massima del sistema CPU. Questo confronto ti aiuta a capire se un'istanza sta esaurendo le risorse della CPU.
- Quale database sta riscontrando il 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 diversi utenti e indirizzi dai menu a discesa per confrontare quelli che causano carichi più elevati.
Filtrare il carico del database
Le sezioni Query e tag ti consentono di filtrare o ordinare il carico delle query per una query selezionata o un tag di query SQL.
Filtra per query
La tabella QUERIES fornisce una panoramica delle query che causano il maggior carico di query. La tabella mostra tutte le query normalizzate per la finestra temporale e le opzioni selezionate nella dashboard Approfondimenti sulle query.
Per impostazione predefinita, la tabella ordina le query in base al tempo di esecuzione totale nell'intervallo di tempo selezionato.

Per filtrare la tabella, seleziona una proprietà da Filtra query. Per ordinare la tabella, seleziona un'intestazione di colonna. La tabella mostra le seguenti proprietà:
Stringa di query. La stringa di query normalizzata. Per impostazione predefinita, Query Insights mostra 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. Queste opzioni ti consentono di filtrare query specifiche per trovare il carico maggiore per ogni opzione.
Tempo di esecuzione medio (ms). Il tempo totale impiegato da tutte le sottoattività su tutti i worker paralleli per completare la query. Per ulteriori informazioni, vedi Tempo di esecuzione e durata medi.
Numero di volte in cui è stato chiamato. Il numero di volte in cui la query è stata chiamata dall'applicazione.
Rigorose righe recuperate. Il numero medio di righe recuperate per la query.
Approfondimenti sulle query mostra le query normalizzate, ovvero $1, $2 e così via sostituiscono i valori costanti litterali. Ad esempio:
UPDATE
"demo_customer"
SET
"customer_id" = $1::uuid,
"name" = $2,
"address" = $3,
"rating" = $4,
"balance" = $5,
"current_city" = $6,
"current_location" = $7
WHERE
"demo_customer"."id" = $8
Il valore della costante viene ignorato in modo che gli Approfondimenti sulle query possano aggregare query simili e rimuovere eventuali informazioni PII che la costante potrebbe mostrare.
Filtra per tag query
Per risolvere i problemi di un'applicazione, devi prima aggiungere tag alle query SQL.
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 ti aiuta a trovare i problemi nei costrutti di livello superiore, ad esempio l'utilizzo della logica di business, di un microservice o di qualche altro costrutto. Puoi taggare le query in base alla logica aziendale, ad esempio utilizzando i tag di pagamento, inventario, business analytics o spedizione. Puoi quindi trovare il carico delle query creato dai vari tipi di logica di business. Ad esempio, potresti trovare eventi imprevisti, come picchi per un tag di Dati aziendali alle 13:00. In alternativa, potresti notare una crescita imprevista per un servizio di pagamento di tendenza nella settimana precedente.
I tag di carico delle query forniscono un'analisi dettagliata del carico delle query del tag selezionato nel tempo.
Per calcolare il carico del database per tag, Query Insights utilizza il tempo impiegato da ogni query che utilizza il tag selezionato. Query Insights calcola il tempo di completamento al confine del minuto utilizzando il tempo effettivo.
Nella dashboard Approfondimenti sulle query, seleziona TAG per visualizzare la tabella dei tag. La tabella TAG ordina i tag in base al loro carico totale per tempo totale.

Puoi ordinare la tabella selezionando una proprietà da Filtra query o facendo clic sull'intestazione di una colonna. La tabella mostra le seguenti proprietà:
- Azione, 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. Queste opzioni ti consentono di filtrare query specifiche per trovare il carico maggiore per ogni opzione.
- Tempo di esecuzione medio (ms). Il tempo totale impiegato da tutte le sottoattività su tutti i worker paralleli per completare la query. Per ulteriori informazioni, vedi Tempo di esecuzione e durata medi.
- Numero di volte in cui è stato chiamato. Il numero di volte in cui la query è stata chiamata dall'applicazione.
- Rigorose righe recuperate. Il numero medio di righe recuperate per 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:
- Fai clic sull'intestazione Carica per tempo totale per ordinare l'elenco in ordine decrescente.
- Fai clic sulla query o sul tag che sembra avere 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.
Se hai selezionato una query, viene visualizzata una panoramica della query selezionata:

Se hai selezionato un tag, viene visualizzata una panoramica del tag selezionato.
Esaminare il carico per una query o un tag specifici
Il grafico Carico del database - query specifica mostra una misura del lavoro (in secondi CPU) nel tempo per la query normalizzata selezionata nella query selezionata. Per calcolare il carico, viene utilizzata la quantità di tempo impiegata dalle query normalizzate completate al confine del minuto rispetto al tempo effettivo. Nella parte superiore della tabella vengono visualizzati i primi 1024 caratteri della query normalizzata (in cui i valori letterali vengono rimossi per motivi di aggregazione e 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 capacità della CPU, CPU e attesa CPU, attesa I/O e attesa blocco.

Il grafico Carico del database: tag specifici mostra una misura del lavoro (in secondi CPU) che le query corrispondenti ai tag selezionati hanno eseguito nel tempo all'interno del database selezionato. Come per il grafico delle query totali, puoi filtrare il carico per un tag specifico in base a Database, Utente e Indirizzo client.

Esamina la latenza
Utilizza il grafico Latenza per esaminare la latenza della query o del tag. La latenza è il tempo impiegato dalla query normalizzata per il completamento nelle ore effettive. La dashboard della latenza mostra la latenza al 50°, 95° e 99° percentile per trovare comportamenti anomali.

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 quanto segue:
- Qual è la causa del carico elevato? Seleziona le opzioni per esaminare la capacità della CPU, la CPU e l'attesa della CPU, l'attesa del blocco o l'attesa IO.
- 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 caricamento ha iniziato a funzionare in modo insoddisfacente.
- Ci sono stati picchi di latenza? Puoi modificare la finestra temporale per studiare la latenza storica per la query normalizzata.
Una volta individuate le aree e i periodi di tempo con il carico più elevato, puoi visualizzare ulteriori dettagli.
Esaminare la latenza in un cluster
Utilizza il grafico Latenza P99 per la stessa query all'interno del cluster per esaminare la latenza P99 per la query o il tag nelle istanze del cluster.

Esaminare le operazioni in un piano di query campionato
Un piano di query prende un esempio della query e la suddivide in singole operazioni. Spiega e analizza ogni operazione nella query. Il grafico Esempi di piano di query mostra tutti i piani di query in esecuzione in determinati momenti e il tempo necessario per l'esecuzione di ciascun piano.

Per visualizzare i dettagli del piano di query di esempio, fai clic sui puntini nel grafico Piani di query di esempio. Esiste una visualizzazione dei piani di query di esempio eseguiti per la maggior parte, ma non per tutte, le query. I dettagli espansi mostrano un modello di tutte le operazioni nel piano di query. Per ogni operazione vengono mostrati la latenza, le righe restituite e il costo. Quando selezioni un'operazione, puoi visualizzare ulteriori dettagli, ad esempio i blocchi di hit condivisi, il tipo di schema, i loop effettivi, le righe del piano e altro ancora.

Prova a restringere il problema ponendoti le seguenti domande:
- Qual è il consumo di risorse?
- Qual è la sua relazione con altre query?
- Il consumo cambia nel tempo?
Individuare la fonte del problema
Per aiutarti a identificare la fonte specifica del problema, ad esempio un modello, una vista, un controller, un percorso, un host o un utente specifico, Query Insights fornisce una vista della traccia dell'applicazione end-to-end in contesto per comprendere cosa sta succedendo a livello di livello di database per una richiesta specifica e per trovare la fonte di una query problematica in base a modello, vista, controller e percorso. 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 identificare la fonte del problema. Puoi fare clic sulla scheda END to END nella schermata Query di esempio per esaminare la traccia in contesto.

Per determinare il client e l'utente che causano il problema, utilizza le tabelle Client principali e Utenti principali per trovare i carichi più elevati. Puoi aggiungere un utente o un indirizzo IP al filtro per analizzare ulteriormente un indirizzo utente o client specifico.

Per le query, 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.

Per informazioni dettagliate su come utilizzare gli strumenti in Cloud Trace, vedi Trovare e visualizzare le 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 utilizzando la mappatura oggetto-relazionale (ORM) o manualmente.
Utilizzare sqlcommenter con ORM
Quando viene utilizzato ORM anziché scrivere direttamente query SQL, potresti non trovare il codice dell'applicazione che causa problemi di prestazioni. Potresti anche riscontrare difficoltà ad analizzare l'impatto del codice dell'applicazione sul rendimento delle query. Per risolvere questo problema, Query Insights fornisce una libreria open source chiamata sqlcommenter, una libreria di strumenti ORM. Questa biblioteca è utile per gli sviluppatori che utilizzano ORM e per gli amministratori per rilevare il codice dell'applicazione che causa problemi di prestazioni.
Se utilizzi ORM e sqlcommenter insieme, i tag vengono creati automaticamente senza dover modificare o aggiungere codice personalizzato all'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 inizia a registrare e aggregare le statistiche per tag, che sono ortogonali alle statistiche aggregate per query normalizzate. Query Insights mostra i tag in modo da sapere quale applicazione causa il carico delle query. Queste informazioni ti aiutano a individuare 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.
L'insieme di ORM in sqlcommenter è supportato per vari linguaggi di programmazione:
Python |
|
Java |
|
Ruby |
|
Node.js |
|
Per ulteriori informazioni su sqlcommenter e su come utilizzarlo nel tuo framework ORM, consulta la documentazione di sqlcommenter su GitHub.
Utilizzare sqlcommenter per aggiungere i tag manualmente
Se non utilizzi ORM, devi aggiungere manualmente i tag sqlcommenter alle query SQL. Nella query, 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. Consulta la documentazione di sqlcommenter per il formato corretto dei commenti SQL.
Tempo e durata di esecuzione
Query Insights fornisce la metrica Tempo di esecuzione medio (ms), che indica il tempo totale impiegato da tutte le sottoattività su tutti i worker paralleli per completare la query. Questa metrica può aiutarti a ottimizzare l'utilizzo aggregato delle risorse del database trovando e ottimizzando le query che generano il maggiore overhead della CPU.
Per visualizzare il tempo trascorso, puoi misurare la durata di una query eseguendo il comando \timing
sul client psql
. Misura il tempo che intercorre tra la ricezione della query e l'invio di una risposta da parte del server PostgreSQL. Questa metrica può aiutarti ad analizzare il motivo per cui una determinata query richiede troppo tempo e decidere se ottimizzarla per eseguirla più velocemente.
Se una query viene completata in modalità a thread singolo da una singola attività, la durata e il tempo di esecuzione medio rimangono invariati.
Passaggi successivi
- Panoramica di Query Insights
- Migliorare le prestazioni delle query utilizzando Query Insights avanzato per AlloyDB
- Metriche AlloyDB
- Blog di SQL Commenter: presentazione di Sqlcommenter, una libreria di automazione dell'instrumentazione ORM open source
- Post del blog: attivare il tagging delle query con Sqlcommenter