Per identificare le cause della latenza del sistema e dell'utilizzo elevato della CPU in AlloyDB per PostgreSQL, puoi monitorare e risolvere i problemi delle query attive e a lunga esecuzione nel tuo database.
Puoi visualizzare le query attive nella pagina Query Insights della consoleGoogle Cloud , ordinate per ora di inizio della transazione. Se sono in esecuzione molte query, la pagina potrebbe visualizzare un sottoinsieme delle query totali a causa dei limiti di memoria per la raccolta dei dati.
Prima di iniziare
Per iniziare a visualizzare le query attive, devi abilitare le funzionalità avanzate di Query Insights e attivare l'analisi delle query attive per la tua istanza nel seguente modo:
Nella console Google Cloud , vai alla pagina Cluster.
Nell'elenco di cluster e istanze, fai clic su un'istanza principale o su un'istanza del pool di lettura.
Fai clic su Query Insights.
Fai clic su Edit Settings (Modifica impostazioni).
Nella finestra Modifica le impostazioni di Query Insights, seleziona Abilita le funzionalità avanzate di Query Insights per AlloyDB > Analisi delle query attive.
Fai clic su Salva modifiche.
(Facoltativo) Se richiesto, per PostgreSQL 17 o versioni precedenti, nella finestra Le modifiche richiedono il riavvio, fai clic su Conferma e riavvia.
Puoi utilizzare l'assistenza di 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 AI.
Visualizza query attive
Per visualizzare le query attive:
Chiedi all'amministratore di concederti il ruolo Visualizzatore monitoraggio insight sui database (
roles/databaseinsights.monitoringViewer) o crea un ruolo personalizzato con l'autorizzazione IAMdatabaseinsights.activeQueries.fetch.Concedi questo ruolo a ogni utente che visualizza le query attive.
Nella console Google Cloud , apri la pagina AlloyDB.
Fai clic sul nome di un cluster per aprire la relativa pagina Panoramica.
Seleziona la scheda Query Insights. La dashboard di Query Insights mostra i dettagli del cluster selezionato.
Fai clic sulla scheda Visualizzazione delle query attive. La scheda contiene un riepilogo delle query attive in esecuzione insieme alle 50 transazioni in esecuzione da più tempo.
Puoi filtrare le informazioni in uno dei seguenti modi:
- Database: filtra il carico delle query su un database specifico o su tutti i database.
- Utente: filtra il carico delle query di un utente del database specifico o di tutti gli utenti.
- ID nodo: viene visualizzato solo per le istanze del pool di lettura; filtra il carico delle query su un nodo specifico dell'istanza del pool di lettura o su tutti i nodi.
Prospetto di riepilogo di tutte le query attive normalizzate: fornisce una panoramica di tutte le query attive mostrando le connessioni totali in base ai seguenti parametri:
- Distribuzione delle connessioni attive classificate in base allo stato della connessione.
- Distribuzione delle connessioni attive in base ai diversi tipi di eventi di attesa.
- Distribuzione delle durate delle transazioni per le query che non sono in stato di inattività.
Transazioni in esecuzione da più tempo: fornisce una panoramica delle prime 50 query in esecuzione nello stato
activeeidle in transactionin base al tempo di esecuzione decrescente.
Nella dashboard di Query Insights puoi visualizzare un elenco delle prime cinquanta query attive normalizzate.
Una query attiva normalizzata rimuove i dati sensibili e restituisce un digest. Due query identiche, ad eccezione dei valori della clausola WHERE, hanno lo stesso digest. Ad esempio, considera le seguenti tre query di esempio:
select * from my_table where id = 1;select * from my_table where id = 2;select * from my_table where id = 100;
La versione normalizzata di queste query è il seguente digest:
select * from my_table where id = ?;
Una query eseguita in sessioni diverse viene visualizzata come voci diverse nella dashboard.
Visualizza le transazioni in esecuzione da più tempo
La tabella seguente descrive le colonne della tabella Transazioni con il tempo di esecuzione più lungo nella dashboard di Query Insights:
| Nome colonna | Descrizione |
|---|---|
| ID di processo | L'ID di processo è l'identificatore univoco della connessione di database. |
| ID nodo | L'ID nodo è l'identificatore univoco del nodo dell'istanza del pool di lettura su cui viene eseguita una query. |
| Query | Testo della query SQL normalizzato. |
| Stato | Stato attuale della connessione. I valori di stato includono active e idle in transaction. |
| Durata della sessione (secondi) | La durata della sessione corrente. |
| Durata della transazione (secondi) | La durata della transazione corrente. |
| Durata della query (secondi) | La durata della query attiva attuale. La durata delle query nello stato idle in transaction è 0 perché non sono in esecuzione attiva. |
| Tipo di evento di attesa | Tipo di evento di attesa in corso durante l'esecuzione della query. |
| Evento di attesa | L'evento di attesa che si verifica durante l'esecuzione della query. |
| Database | Il nome del database su cui è in esecuzione questa connessione. |
| Nome applicazione | Nome dell'applicazione su cui è in esecuzione questa connessione. |
| Nome utente | Nome dell'utente del database connesso al database. |
| Indirizzo client | Indirizzo IP specifico del client che ha inviato una query. |
| Azione | Contiene un link per terminare una transazione. |
Il display viene aggiornato automaticamente ogni 60 secondi.
L'utilizzo dei campi Database e Utente per il filtro aggiorna i dati nella pagina.
Per analizzare i dati statici, disattiva l'aggiornamento automatico e utilizza il campo Filtro della tabella Transazioni con esecuzione più lunga in base alle tue esigenze.
Termina una query o una transazione
Per terminare una query o una transazione, devi disporre del ruolo roles/databaseinsights.operationsAdmin. Per saperne di più, consulta il riferimento ai ruoli di base e predefiniti di IAM.
Una transazione può contenere più query. Per identificare quali query sono attive al momento, consulta la colonna Query nella tabella Transazione con esecuzione più lunga.
Per terminare una query o una transazione, completa i seguenti passaggi:
- Seleziona la query nella tabella Transazione in esecuzione da più tempo.
- Scorri verso destra fino alla colonna Azione.
- Fai clic su Termina connessione.
Nella finestra Termina connessione, fai clic su Conferma.
La pagina viene aggiornata dopo l'avvio della terminazione. Se la terminazione non va a buon fine, non viene visualizzato alcun messaggio e la query continua a essere visualizzata nell'elenco delle query attive. Se l'interruzione ha esito positivo, la query non viene più visualizzata nell'elenco.
Analisi delle query bloccate
Se una query attiva specifica è bloccata o viene eseguita per un tempo molto più lungo del previsto, può bloccare altre query dipendenti.
Puoi utilizzare l'analisi delle query bloccate per identificare e terminare le query che hanno un'esecuzione lunga o che mantengono i blocchi più a lungo del necessario e bloccano altre query.
Identifica e termina una query attiva bloccata
Per identificare e terminare una query attiva specifica che potrebbe bloccare altre query, completa i seguenti passaggi:
Nella console Google Cloud , apri la pagina AlloyDB.
Fai clic sul nome di un cluster per aprire la relativa pagina Panoramica.
Seleziona la scheda Query Insights.
Fai clic sulla scheda Query attive. Se non hai già query attive in esecuzione, vai ad AlloyDB Studio ed esegui le query che vuoi esaminare.
Vai alla sezione Transazioni in esecuzione da più tempo. Puoi visualizzare fino alle prime 50 query attive con esecuzione prolungata in ogni categoria. Ogni voce visualizzata contiene i dettagli della query attiva, tra cui:
- ID di processo: l'ID di processo della query. Fai clic su espandi per visualizzare la voce. Puoi visualizzare una delle due icone:
- Icona clessidra: questa icona indica che il processo è in attesa del completamento di un'altra query. Se accanto all'icona è presente un numero, questo indica quante query dipendenti sono in attesa del completamento di questo processo.
- Icona di blocco: questa icona indica che il processo sta bloccando altre query.
- Query: la query in esecuzione, ad esempio
SELECT ...oUPDATE .... - Stato: lo stato della query attiva, ad esempio
ACTIVE. - Durata della sessione (secondi): la durata della sessione corrente.
- Durata della transazione (secondi): la durata della transazione attiva attuale.
- Durata della query (secondi): la durata della query attiva attuale.
- Tipo di evento di attesa: il tipo di evento di attesa corrente durante l'esecuzione della query, ad esempio Timeout o Blocco.
- Evento di attesa: l'evento di attesa corrente durante l'esecuzione della query.
- Database: il nome del database su cui è in esecuzione la connessione.
- Nome applicazione: il nome dell'applicazione su cui è in esecuzione la connessione.
- Nome utente: il nome dell'utente del database connesso al database.
- Indirizzo client: l'indirizzo IP del client che ha inviato la query.
- Azione: possibili azioni da intraprendere, ad esempio Termina connessione.
Fai clic per espandere l'ID di processo che vuoi esaminare. Puoi espandere i processi sottostanti fino a tre livelli nell'albero di indagine.
- ID di processo: l'ID di processo della query. Fai clic su espandi per visualizzare la voce. Puoi visualizzare una delle due icone:
Identifica la query specifica bloccata e fai clic su Termina connessione. Dopo aver terminato la connessione, puoi andare ad AlloyDB Studio per eseguire nuovamente le query attive.