Per rilevare e analizzare i colli di bottiglia delle prestazioni delle query, ispezionare i piani di query e tracciare le richieste ad alta latenza nelle istanze AlloyDB per PostgreSQL, puoi utilizzare la dashboard Query Insights. Per una panoramica di questa funzionalità, consulta Panoramica di Query Insights.
Puoi utilizzare Gemini Cloud Assist per monitorare e risolvere i problemi delle tue risorse AlloyDB. Per saperne di più, consulta Monitora e risolvi i problemi con l'assistenza di Gemini.
Prima di iniziare
Se tu o altri utenti dovete visualizzare il piano di query o eseguire il tracciamento end-to-end, sono necessarie autorizzazioni Identity and Access Management (IAM) specifiche. Puoi creare un ruolo personalizzato e aggiungervi le autorizzazioni IAM necessarie. Poi, puoi aggiungere questo ruolo a ogni account utente che utilizza Query Insights per risolvere un problema. Vedi Crea un ruolo personalizzato.
Il ruolo personalizzato deve disporre della seguente autorizzazione IAM: cloudtrace.traces.get.
Apri la dashboard di Query Insights
Per aprire la dashboard di Query Insights, segui questi passaggi:
- Nell'elenco di cluster e istanze, fai clic su un'istanza.
- Fai clic su Accedi a Query Insights per informazioni più approfondite su query e prestazioni sotto il grafico delle metriche nella pagina Panoramica del cluster oppure seleziona la scheda Query Insights nel pannello 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 connesse e i relativi nodi.
- Database. Filtra il carico delle query su un database specifico o su tutti i database.
- Utente. Filtra il carico di query da account utente specifici.
- 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 o un intervallo personalizzato.
Modifica 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 Query Insights nel pannello di navigazione a sinistra.
Seleziona Principale o Pool di lettura dall'elenco Query Insights, quindi fai clic su Modifica.
Modifica i campi di Query Insights:
Per modificare il limite predefinito di 1024 byte per la lunghezza delle query che AlloyDB deve analizzare, inserisci un numero compreso tra 256 e 4500 nel campo Lunghezze delle query.
L'istanza viene riavviata 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:
Campionamento del piano di query: seleziona questa casella di controllo per visualizzare le operazioni utilizzate per completare un esempio di query. La frequenza di campionamento determina il numero massimo di query che AlloyDB può campionare al minuto per l'istanza per nodo.
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 Campionamento del piano di query.
Archivia gli indirizzi IP client: seleziona questa casella di controllo per sapere da dove provengono le query e per raggruppare queste informazioni per generare le metriche.
Archivia i tag delle applicazioni: seleziona questa casella di controllo per sapere quali applicazioni con tag stanno effettuando richieste e per raggruppare queste informazioni per generare le metriche. Per saperne di più sui tag dell'applicazione, consulta la specifica.
Fai clic su Aggiorna istanza.
gcloud
Per abilitare Query Insights per un'istanza AlloyDB utilizzando i comandi di Google Cloud CLI, segui questi passaggi:
- Installa Google Cloud CLI.
- Per inizializzare gcloud CLI, esegui questo comando:
gcloud init
Se utilizzi una shell locale, crea le credenziali di autenticazione locali per il tuo account utente:
gcloud auth application-default login
Non è necessario farlo se utilizzi Cloud Shell.
Per saperne di più, consulta Configura 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-addressSostituisci quanto segue:
INSTANCE: l'ID dell'istanza da aggiornareCLUSTER: l'ID del cluster dell'istanzaPROJECT: l'ID del progetto del clusterREGION: la regione del cluster, ad esempious-central1QUERY_LENGTH: la lunghezza della query, che va da 256 a 4500QUERY_PLANS: il numero di piani di query da configurare al minuto.
Inoltre, utilizza uno o più dei seguenti flag facoltativi:
--insights-config-query-string-length: imposta il limite di lunghezza predefinito della query su un valore specificato compreso tra 256 e 4500 byte. La lunghezza predefinita della query è 1024 byte. Le query con una lunghezza maggiore sono più utili per le query analitiche, ma richiedono anche più memoria. La modifica della lunghezza delle query richiede il riavvio dell'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 l'overhead delle prestazioni.--insights-config-record-client-address: memorizza gli indirizzi IP client da cui provengono le query e ti aiuta a raggruppare i dati per generare le metriche corrispondenti. Le query provengono da più host. L'esame dei grafici per le query provenienti dagli indirizzi IP client può aiutare a identificare l'origine di un problema. Se non vuoi archiviare gli indirizzi IP client, utilizza--no-insights-config-record-client-address.--insights-config-record-application-tags: archivia i tag delle applicazioni che ti aiutano a determinare le API e i percorsi model-view-controller (MVC) che effettuano richieste e raggruppa i dati per eseguire metriche. Questa opzione richiede di commentare le query con un insieme specifico di tag. Se non vuoi archiviare i tag dell'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. Qualsiasi numero intero compreso tra 256 e 4500 è valido.RECORD_APPLICATION_TAG_VALUE: tag dell'applicazione di registrazione 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 Insights al minuto per tutte le query combinate. Il valore predefinito è5. Qualsiasi numero intero compreso tra 0 e 20 è valido.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 simile alla 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 di questa chiamata, consulta Metodo: projects.locations.clusters.instances.patch.
Per configurare le impostazioni di Query Insights, modifica i campi facoltativi in base alle tue esigenze. Per un elenco completo dei campi di 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 in cui 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/v1/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
}
Miglioramento delle prestazioni delle query
Query Insights risolve i problemi delle query AlloyDB per individuare problemi di prestazioni. La dashboard di Query Insights mostra il carico delle query in base ai fattori selezionati. Il carico di query è una misura del lavoro totale per tutte le query nell'istanza nell'intervallo di tempo selezionato.
Query Insights ti aiuta a rilevare e analizzare i problemi di prestazioni delle query. Per risolvere i problemi relativi alle query con Query Insights, segui questi passaggi:
- Visualizza il carico del database per tutte le query.
- Identifica una query o un tag problematico.
- Esamina la query o il tag per identificare i problemi.
- Esamina una traccia generata da una query di esempio.
Visualizza il carico del database per tutte le query
La dashboard di primo livello di Query Insights 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) che le query eseguite nel database selezionato svolgono nel tempo. Ogni query in esecuzione utilizza o è in attesa di risorse CPU, risorse IO o risorse di blocco. Il carico delle query del database è il rapporto tra il tempo impiegato da tutte le query completate in una determinata finestra temporale e il tempo reale.
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 uno stato attivo e il tempo di clock. Le attese di I/O e di blocco non bloccano le query che si trovano in uno stato attivo. Questa metrica potrebbe indicare che la query sta utilizzando la CPU o è in attesa che lo scheduler 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 runtime sia del tempo di attesa per lo scheduler Linux per pianificare il processo del server in esecuzione. Di conseguenza, il carico della CPU può superare la linea del numero massimo di core.
Attesa I/O: il rapporto tra il tempo impiegato dalle query in attesa di I/O e il tempo di esecuzione. L'attesa I/O include l'attesa I/O di lettura e l'attesa I/O di scrittura. Consulta la tabella degli eventi di PostgreSQL. Se vuoi un'analisi dettagliata delle informazioni per le attese di I/O, puoi visualizzarla in Cloud Monitoring. Per saperne di più, consulta Grafici delle metriche.
Attesa blocco: il rapporto tra il tempo impiegato dalle query in attesa di blocchi e il tempo di clock. Include attese di blocco, attese di blocco LwLock e attese di blocco del pin del buffer. Se vuoi una suddivisione delle informazioni per le attese di blocco, puoi visualizzarla in Cloud Monitoring. Per saperne di più, consulta Grafici delle metriche.
Poi, esamina il grafico e utilizza le opzioni di filtro per rispondere a queste domande:
- Il carico delle query è elevato? Il grafico mostra picchi o valori elevati nel tempo? Se non vedi un carico elevato, il problema non riguarda le query.
- Da quanto tempo il carico è elevato? È alta solo ora? O è alta da molto tempo? Utilizza la selezione dell'intervallo per selezionare vari periodi di tempo e scoprire da quanto tempo si verifica il problema. In alternativa, puoi aumentare lo zoom per visualizzare una finestra temporale in cui si osservano picchi di carico delle query. Puoi diminuire lo zoom per visualizzare fino a una settimana della cronologia.
- Qual è la causa del carico elevato? Puoi selezionare le opzioni per visualizzare la capacità della CPU, la CPU e l'attesa della CPU, l'attesa del blocco o l'attesa di I/O. Il grafico per ciascuna di queste opzioni ha un colore diverso, in modo da poter vedere quale ha il carico più elevato. La linea blu scuro nel grafico mostra la capacità massima della CPU del sistema. Ti consente di confrontare il carico delle query con la capacità massima della CPU del sistema. Questo confronto ti aiuta a capire se un'istanza sta esaurendo le risorse della CPU.
- Quale database sta riscontrando il carico? Seleziona database diversi dal menu a discesa Database per trovare quelli con i carichi più elevati.
- Ci sono utenti o indirizzi IP specifici che causano carichi più elevati? Seleziona utenti e indirizzi diversi dai menu a discesa per confrontare quelli che causano carichi più elevati.
Filtra il carico del database
La sezione Query e tag consente di filtrare o ordinare il carico delle query per una query selezionata o un tag di query SQL.
Filtra per query
La tabella QUERY fornisce una panoramica delle query che causano il carico di query più elevato. La tabella mostra tutte le query normalizzate per la finestra temporale e le opzioni selezionate nella dashboard di Query Insights.
Per impostazione predefinita, la tabella ordina le query in base al tempo di esecuzione totale all'interno della finestra temporale selezionata.
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 COMMANDdi solito includono i comandiBEGIN,COMMITeEXPLAINo i comandi wrapper.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 attività secondarie in tutti i worker paralleli per completare la query. Per saperne di più, consulta Tempo di esecuzione e durata medi.
Volte in cui è stato chiamato. Il numero di volte in cui la query è stata chiamata dall'applicazione.
Media righe recuperate. Il numero medio di righe recuperate per la query.
Query Insights mostra le query normalizzate, ovvero i valori costanti letterali vengono sostituiti da $1, $2 e così via. 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 Query Insights possa aggregare query simili e rimuovere eventuali informazioni PII che la costante potrebbe mostrare.
Filtra per tag di 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 visualizzazione dell'applicazione. Il tagging delle query ti aiuta a trovare i problemi nei costrutti di livello superiore, ad esempio utilizzando la logica di business, un microservizio o un altro costrutto. Puoi taggare le query in base alla logica di business, ad esempio utilizzando i tag di pagamento, inventario, analisi aziendale 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 analisi aziendale alle 13:00. Oppure potresti notare una crescita imprevista di un servizio di pagamento di tendenza rispetto alla settimana precedente.
I tag di carico delle query forniscono una suddivisione del carico delle query del tag selezionato nel tempo.
Per calcolare il carico del database per il tag, Query Insights utilizza il tempo impiegato da ogni query che utilizza il tag selezionato. Query Insights calcola il tempo di completamento al limite del minuto utilizzando l'ora dell'orologio.
Nella dashboard di Query Insights, seleziona TAG per visualizzare la tabella dei tag. La tabella TAGS ordina i tag in base al 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à:
- Action, Controller, Framework, Route, Application, DB Driver. Ogni proprietà aggiunta alle query viene visualizzata come colonna. Se vuoi filtrare in base ai 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 attività secondarie in tutti i worker paralleli per completare la query. Per saperne di più, consulta Tempo di esecuzione e durata medi.
- Volte in cui è stato chiamato. Il numero di volte in cui la query è stata chiamata dall'applicazione.
- Media righe recuperate. Il numero medio di righe recuperate per la query.
- Database. Il database su cui è stata eseguita la query.
Esamina una query o un tag specifico
Per determinare se una query o un tag è la causa principale del problema, procedi nel seguente modo dalla scheda Query o Tag, rispettivamente:
- Fai clic sull'intestazione Carico 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 che richiede più tempo rispetto agli altri.
Viene visualizzata una dashboard con i dettagli della query o del tag selezionati.
Se hai selezionato una query, viene visualizzata una panoramica della query selezionata:
Se hai selezionato un tag, viene visualizzata una panoramica del tag selezionato.
Esamina il carico per una query o un tag specifico
Il grafico Carico del database - query specifica mostra una misura del lavoro (in secondi CPU) che la query normalizzata selezionata ha eseguito nel tempo nella query selezionata. Per calcolare il carico, utilizza il tempo impiegato dalle query normalizzate completate al limite del minuto rispetto al tempo reale. 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à CPU, CPU e Attesa CPU, Attesa I/O e Attesa blocco.
Il grafico Carico del database - tag specifici mostra una misura del lavoro (espresso 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 per il completamento della query normalizzata, in tempo reale. La dashboard della latenza mostra la latenza del 50°, 95° e 99° percentile per trovare comportamenti anomali.
La latenza delle query parallele viene misurata in tempo reale, anche se il carico della query può essere più elevato a causa dell'utilizzo di più core per l'esecuzione di parte della query.
Prova a circoscrivere il problema esaminando quanto segue:
- Qual è la causa del carico elevato? Seleziona le opzioni per visualizzare la capacità della CPU, la CPU e l'attesa CPU, l'attesa di blocco o l'attesa IO.
- Da quanto tempo il carico è elevato? È alta solo ora? O è alta da molto tempo? Modifica gli intervalli di tempo per trovare la data e l'ora in cui il carico ha iniziato a registrare un peggioramento delle prestazioni.
- Si sono verificati picchi di latenza? Puoi modificare la finestra temporale per studiare la latenza storica della query normalizzata.
Una volta individuate le aree e gli orari con il carico più elevato, puoi eseguire un'analisi più approfondita.
Esamina 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.
Esamina le operazioni in un piano di query campionato
Un piano di query prende un campione della query e lo 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 impiegato per l'esecuzione di ciascun piano.
Per visualizzare i dettagli del piano di query di esempio, fai clic sui punti nel grafico Piani di query di esempio. È disponibile una visualizzazione dei piani di query di esempio eseguiti per la maggior parte delle query, ma non per tutte. Tieni presente che AlloyDB per PostgreSQL campiona le query automaticamente. Più una query viene eseguita, più è probabile che venga campionata. Se devi visualizzare altri piani di query di esempio, segui le istruzioni riportate in Modifica la configurazione di Query Insights per aumentare la Frequenza di campionamento massima.
Quando visualizzi i dettagli espansi di un piano di query, vedi un modello di tutte le operazioni all'interno del piano. Ogni operazione mostra la latenza, le righe restituite e il costo dell'operazione. Quando selezioni un'operazione, puoi visualizzare ulteriori dettagli, come i blocchi di hit condivisi, il tipo di schema, i loop effettivi, le righe del piano e altro ancora.
Prova a circoscrivere il problema esaminando le seguenti domande:
- Qual è il consumo di risorse?
- In che modo è correlata ad altre query?
- Il consumo cambia nel tempo?
Esamina una traccia generata da una query di esempio
Oltre a visualizzare il piano di query di esempio, puoi utilizzare Query Insights per visualizzare una traccia dell'applicazione end-to-end contestuale per una query di esempio. Questa traccia può aiutarti a identificare l'origine di una query problematica visualizzando l'attività del database per una richiesta specifica. Inoltre, le voci di log che l'applicazione invia a Cloud Logging durante la richiesta sono collegate alla traccia, il che ti aiuta nell'indagine.
Per visualizzare la traccia nel contesto:
Nel riquadro Query di esempio, fai clic sulla scheda Traccia end-to-end. Questa scheda mostra un grafico di Gantt che descrive in dettaglio gli intervalli, ovvero i record delle singole operazioni, per la traccia generata dalla query.
Per visualizzare ulteriori dettagli su ogni intervallo, ad esempio attributi e metadati, fai clic sull'intervallo.
Puoi anche visualizzare la traccia nella pagina Esplora tracce. Per farlo, fai clic su Visualizza in Cloud Trace. Per informazioni dettagliate su come utilizzare la pagina Esplora tracce per esplorare i dati di traccia, consulta Trova ed esplora le tracce.
Aggiungi tag alle query SQL
Il tagging delle query SQL semplifica la risoluzione dei problemi delle applicazioni. Puoi utilizzare sqlcommenter per aggiungere tag alle query SQL automaticamente utilizzando la mappatura relazionale degli oggetti (ORM) o manualmente.
Utilizza sqlcommenter con ORM
Quando si utilizza l'ORM anziché scrivere direttamente query SQL, potresti non trovare il codice dell'applicazione che causa problemi di prestazioni. Potresti anche avere difficoltà ad analizzare l'impatto del codice dell'applicazione sulle prestazioni delle query. Per risolvere questo pain point, Query Insights fornisce una libreria open source chiamata sqlcommenter, una libreria di strumentazione ORM. Questa libreria è utile per gli sviluppatori che utilizzano gli ORM e per gli amministratori per rilevare quale codice dell'applicazione causa problemi di prestazioni.
Se utilizzi ORM e sqlcommenter insieme, i tag vengono creati automaticamente senza che tu debba modificare o aggiungere codice personalizzato alla tua applicazione.
Puoi installare sqlcommenter sul server dell'applicazione. La libreria di strumentazione consente di propagare le informazioni dell'applicazione relative al framework MVC al database insieme alle query sotto forma di commento SQL. Il database rileva questi tag e inizia a registrare e aggregare le statistiche in base ai tag, che sono ortogonali alle statistiche aggregate in base alle query normalizzate. Query Insights mostra i tag in modo che tu possa sapere quale applicazione sta causando 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.
Il set di ORM in sqlcommenter è supportato per vari linguaggi di programmazione:
| Python |
|
| Java |
|
| Ruby |
|
| Node.js |
|
Per saperne di più su sqlcommenter e su come utilizzarlo nel tuo framework ORM, consulta la documentazione di sqlcommenter su GitHub.
Utilizza sqlcommenter per aggiungere i tag manualmente
Se non utilizzi l'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.
Ora e durata dell'esecuzione
Query Insights fornisce una metrica Tempo di esecuzione medio (ms), che indica il tempo totale impiegato da tutte le attività secondarie in tutti i worker paralleli per completare la query. Questa metrica può aiutarti a ottimizzare l'utilizzo aggregato delle risorse dei database trovando e ottimizzando le query che creano l'overhead della CPU più elevato.
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 a decidere se ottimizzarla per eseguirla più velocemente.
Se una query viene completata in un singolo thread da una singola attività, la durata e il tempo di esecuzione medio rimangono invariati.
Abilita le funzionalità avanzate di Query Insights per AlloyDB
La dashboard delle funzionalità avanzate di Query Insights per AlloyDB è integrata nella dashboard standard di Query Insights. Per saperne di più sull'attivazione delle funzionalità avanzate di Query Insights, consulta Migliora le prestazioni delle query utilizzando le funzionalità avanzate di Query Insights.
Passaggi successivi
- Panoramica di Query Insights
- Migliora le prestazioni delle query utilizzando le funzionalità avanzate di Query Insights per AlloyDB
- Metriche di AlloyDB
- Blog di SQL Commenter: Introduzione di Sqlcommenter: una libreria di strumentazione automatica ORM open source
- How-to blog: Enable query tagging with Sqlcommenter