Questa pagina descrive come monitorare e risolvere i problemi relativi alle query attive nel database. Il monitoraggio di queste query può aiutare a identificare le cause della latenza del sistema e dell'utilizzo elevato della CPU.
Nel pannello Query Insights, puoi visualizzare un riepilogo delle transazioni attive e un elenco di transazioni con query e statistiche associate. Le transazioni vengono visualizzate in base all'ora di inizio. Se è in esecuzione un numero elevato di query, i risultati potrebbero essere limitati a un sottoinsieme del totale delle query.
Prima di iniziare
Per monitorare le query attive, puoi utilizzare la versione Cloud SQL Enterprise o Cloud SQL Enterprise Plus.
Per terminare una sessione o una transazione a lunga esecuzione nelle query attive, devi utilizzare la versione Cloud SQL Enterprise Plus per l'istanza Cloud SQL.
Per saperne di più sulle versioni di Cloud SQL, consulta Introduzione alle versioni di Cloud SQL.
Ruoli e autorizzazioni richiesti
Per ottenere le autorizzazioni necessarie per visualizzare le query attive, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto che ospita l'istanza Cloud SQL:
-
Visualizza il riepilogo dell'attività dell'istanza:
Visualizzatore Cloud SQL (
roles/cloudsql.viewer) -
Visualizza il riepilogo dell'attività del database e le transazioni a esecuzione prolungata:
Database Insights Viewer (
roles/databaseinsights.viewer) -
Termina una sessione o una transazione a lunga esecuzione:
-
Cloud SQL Editor (
roles/cloudsql.editor) -
Database Insights Operations Admin (
roles/databaseinsights.operationsAdmin)
-
Cloud SQL Editor (
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questi ruoli predefiniti contengono le autorizzazioni necessarie per visualizzare le query attive. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per visualizzare le query attive sono necessarie le seguenti autorizzazioni:
-
Visualizza il riepilogo dell'attività del database e le transazioni di lunga durata:
-
databaseinsights.activeQueries.fetch -
databaseinsights.activitySummary.fetch
-
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Abilitare le query attive
Quando attivi Query Insights, le query attive vengono abilitate automaticamente. Per poter terminare una sessione o una transazione a esecuzione prolungata nelle query attive, devi utilizzare Query Insights per Cloud SQL Enterprise Plus.
Disabilitare le query attive
Non puoi disattivare le query attive senza disattivare Query Insights. Per disattivare le query attive e Query Insights, consulta Disattivare Query Insights.
Visualizza query attive
Per visualizzare le query attive, completa i seguenti 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.
Per visualizzare la dashboard Approfondimenti sulle query, esegui una delle seguenti operazioni:
- Seleziona la scheda Approfondimenti sulle query.
- Fai clic su Accedi a Query Insight per informazioni più approfondite su query e prestazioni. Si apre la dashboard Approfondimenti sulle query. Nella parte superiore vengono visualizzati i dettagli dell'istanza.
Fai clic sulla scheda Query attive.
Da qui puoi modificare le informazioni della query visualizzate nella tabella Transazioni con esecuzione più lunga:
- Database: filtra il carico delle query su un database specifico o su tutti i database.
- Utente: filtra il caricamento delle query da un account utente specifico.
Visualizza query attive normalizzate
Puoi visualizzare un elenco delle transazioni a esecuzione prolungata principali con query attive normalizzate nella dashboard Query Insights. Una query attiva normalizzata rimuove i dati sensibili e restituisce un digest. Il digest è lo stesso per i diversi valori utilizzati nell'esempio seguente:
Query regolari
select * from test_table where id=1;select * from test_table_where id=2;
Query riepilogativa o normalizzata
select * from test_table where id=?;
Una query eseguita in sessioni diverse viene visualizzata come voci diverse nella dashboard.
Visualizzare le transazioni in esecuzione da più tempo
La tabella Transazioni in esecuzione da più tempo nella dashboard Approfondimenti sulle query contiene le seguenti colonne:
| Nome colonna | Descrizione |
|---|---|
| ID sessione | Identificatore univoco della sessione. |
| Query | Testo della query SQL. |
| Stato sessione | Lo stato della sessione. |
| Durata query | Per quanto tempo è stata in esecuzione la query. |
| ID sessione di blocco | L'ID della sessione che blocca la sessione. |
| Tipo di evento di attesa | Il tipo di evento di attesa, se la richiesta è bloccata per l'esecuzione della query. |
| Risorsa in attesa | La risorsa per cui la richiesta è attualmente in attesa, se la richiesta è bloccata per l'esecuzione della query. |
| Durata attesa transazione | La durata dell'attesa attuale, se la sessione è bloccata. |
| Letture logiche | Il numero di letture logiche eseguite dalla richiesta. |
| Letture | Il numero di letture eseguite dalla richiesta. |
| Scritture | Il numero di scritture eseguite dalla richiesta. |
| Database | Database in cui è in esecuzione la sessione. |
| Utente | Nome dell'utente connesso al database. |
| Indirizzo client | L'indirizzo IP specifico del client che ha inviato una query. |
| Tempo di CPU (ms) | Il tempo CPU in millisecondi utilizzato dalla richiesta. |
| Nome applicazione | Nome dell'applicazione che ha avviato la sessione. |
| Righe transazione modificate | Numero di righe restituite al client da questa query. |
| % di completamento | Percentuale di lavoro completato, se la query segnala l'avanzamento. |
| Memoria query concessa | Il numero di pagine allocate all'esecuzione della richiesta. |
| Azione | Contiene un link per terminare una sessione. |
La visualizzazione viene aggiornata automaticamente ogni 60 secondi.
Puoi utilizzare il menu verticale Opzioni di visualizzazione dei contenuti… per filtrare le colonne che vuoi visualizzare.
Terminare una sessione
Per terminare una sessione o una transazione a esecuzione prolungata, devi utilizzare la versione Cloud SQL Enterprise Plus e attivare Query Insights per la versione Cloud SQL Enterprise Plus.
L'interruzione delle operazioni a lunga esecuzione può richiedere più tempo.
Per terminare una query o una transazione, completa i seguenti passaggi:
- Nella tabella Transazione in esecuzione da più tempo, seleziona una query.
- Nella colonna Azione, fai clic su Termina sessione.
- Nella finestra Termina sessione, fai clic su Conferma.
Query attive bloccate
Se una query attiva specifica è bloccata o viene eseguita molto più a lungo del previsto, può bloccare altre query dipendenti.
Cloud SQL ti offre la possibilità di terminare query attive specifiche a esecuzione prolungata o bloccate.
Attivare l'analisi delle query attive bloccate
Per impostazione predefinita, Google Cloud la console non mostra quali query attive sono bloccate.
Per analizzare le query attive bloccate, si applicano i seguenti requisiti:
- Devi utilizzare un'istanza di Cloud SQL Enterprise Plus.
- Devi abilitare le funzionalità di Enterprise Plus.
Per abilitare l'analisi delle query attive bloccate:
Console
-
Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.
- Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
- Fai clic su Modifica.
- Espandi la sezione Query Insights.
- Seleziona sia Abilita Query Insights sia Abilita le funzionalità Enterprise Plus. Entrambe le impostazioni sono obbligatorie.
- Seleziona Analisi delle query bloccate.
- Fai clic su Salva.
Identificare e terminare una query attiva bloccata
I seguenti passaggi mostrano come identificare e terminare una query attiva specifica che potrebbe bloccare altre query.
Console
-
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 menu di navigazione SQL, fai clic su Approfondimenti sulle query.
- Fai clic sulla scheda Query attive.
Se non hai già query attive in esecuzione, vai a Cloud SQL Studio ed esegui le query che vuoi esaminare.
- Vai alla sezione Transazioni in esecuzione da più tempo. Puoi
visualizzare fino a 50 delle query attive più lunghe in ogni categoria.
Ogni voce visualizzata contiene i dettagli della query attiva, tra cui:
- ID sessione: l'ID sessione della query. Fai clic su espandi
per visualizzare la voce. Puoi visualizzare una delle due icone:
- Icona a forma di clessidra: Questa icona indica che la query è 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 questa query.
- Icona a forma di simbolo di blocco: questa icona indica che la query non può essere completata e potrebbe bloccare altre query.
- Query: testo della query SQL.
- Stato sessione: lo stato della sessione.
- Durata della query (secondi): il tempo di esecuzione della query.
- Tempo di CPU(ms): il tempo di CPU in millisecondi utilizzato dalla richiesta.
- Tipo di evento di attesa: il tipo di evento di attesa, se la richiesta è bloccata per l'esecuzione della query.
- Risorsa di attesa: la risorsa per cui la richiesta è attualmente in attesa, se la richiesta è bloccata per l'esecuzione della query.
- Durata attesa transazione (secondi): la durata dell'attesa attuale, se la sessione è bloccata.
- Azione: le possibili azioni da intraprendere, ad esempio Termina sessione.
Fai clic per espandere l'ID sessione che vuoi esaminare. Puoi espandere i processi sottostanti fino a tre livelli di profondità nell'albero di indagine.
- ID sessione: l'ID sessione della query. Fai clic su espandi
per visualizzare la voce. Puoi visualizzare una delle due icone:
- Identifica la query specifica bloccata, quindi fai clic su Termina sessione. Dopo aver terminato la sessione, puoi andare su Cloud SQL Studio per eseguire nuovamente le query attive.
Visualizzare i dettagli del blocco delle sessioni inattive
La scheda Query attive mostra le sessioni che stanno attualmente elaborando una
richiesta. Le sessioni nello stato SLEEPING sono escluse da questa visualizzazione.
Per visualizzare l'ultimo comando eseguito per una sessione inattiva, utilizza questo script:
SELECT c.session_id, st.text,s.login_name, s.open_transaction_count, s.host_name, s.program_name
FROM sys.dm_exec_connections AS c JOIN sys.dm_exec_sessions AS S ON c.session_id=s.session_id
CROSS APPLY sys.dm_exec_sql_text(c.most_recent_sql_handle) AS st
WHERE s.session_id=BLOCKING_SESSION_ID
Sostituisci BLOCKING_SESSION_ID con l'ID della sessione che causa il blocco.
Per ulteriori informazioni per risolvere i problemi di blocco, consulta le seguenti risorse:
- Blocco causato da uno SPID inattivo con una transazione non confermata
- Comprendi e risolvi i problemi di blocco di SQL Server.