Monitorare le query attive

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:

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:

  1. Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.

  3. 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.
  4. 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:

  1. Nella tabella Transazione in esecuzione da più tempo, seleziona una query.
  2. Nella colonna Azione, fai clic su Termina sessione.
  3. 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:

Per abilitare l'analisi delle query attive bloccate:

Console

  1. Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
  3. Fai clic su Modifica.
  4. Espandi la sezione Query Insights.
  5. Seleziona sia Abilita Query Insights sia Abilita le funzionalità Enterprise Plus. Entrambe le impostazioni sono obbligatorie.
  6. Seleziona Analisi delle query bloccate.
  7. 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

  1. Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
  3. Nel menu di navigazione SQL, fai clic su Approfondimenti sulle query.
  4. 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.

  5. 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.

  6. 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:

Passaggi successivi