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.

Nella dashboard di 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 della transazione. Se è in esecuzione un numero elevato di query, i risultati potrebbero essere limitati a un sottoinsieme delle query totali.

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 a lunga esecuzione:
    • databaseinsights.activeQueries.fetch
    • databaseinsights.activitySummary.fetch

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Abilita le query attive

Quando abiliti Query Insights, abiliti automaticamente le query attive. Per poter terminare una sessione o una transazione a lunga esecuzione nelle query attive, devi utilizzare Query Insights per la versione Cloud SQL Enterprise Plus.

Disabilita le query attive

Non puoi disabilitare le query attive senza disabilitare Query Insights. Per disabilitare le query attive e Query Insights, consulta Disabilita Query Insights.

Visualizza le query attive

Per visualizzare le query attive:

  1. Nella Google Cloud console, 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. Esegui una delle seguenti operazioni per visualizzare la dashboard Query Insights:

    • Seleziona la scheda Query Insights.
    • Fai clic su Accedi a Query Insights per informazioni più approfondite su query e prestazioni. Viene visualizzata la dashboard Query Insights. Nella parte superiore vengono visualizzati i dettagli dell'istanza.
  4. Fai clic sulla scheda Query attive.

    Da qui, puoi modificare le informazioni sulle query visualizzate nella tabella Transazioni in esecuzione da più tempo:

    • Database: filtra il carico delle query su un database specifico o su tutti i database.
    • Utente: filtra il carico delle query da un account utente specifico.

Visualizza le query attive normalizzate

Puoi visualizzare un elenco delle principali transazioni a lunga esecuzione 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 nel seguente esempio:

  • Query regolari

    • select * from test_table where id=1;
    • select * from test_table_where id=2;
  • Digest o query normalizzata

    • select * from test_table where id=?;

Una query eseguita in sessioni diverse viene visualizzata come voci diverse nella dashboard.

Visualizza le principali transazioni in esecuzione da più tempo

La tabella Transazioni in esecuzione da più tempo nella dashboard Query Insights 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 Il tempo di esecuzione della 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 di 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 Opzioni di visualizzazione dei contenuti... menu verticale per filtrare le colonne che vuoi visualizzare.

Termina una sessione

Per terminare una sessione o una transazione a lunga esecuzione, devi utilizzare la versione Cloud SQL Enterprise Plus e abilitare Query Insights per la versione Cloud SQL Enterprise Plus.

Le operazioni a lunga esecuzione possono richiedere più tempo per essere terminate.

Per terminare una query o una transazione:

  1. Nella tabella Transazioni 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 lunga esecuzione o bloccate.

Abilita 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 Google Cloud console, 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à di Enterprise Plus. Entrambe le impostazioni sono obbligatorie.
  6. Seleziona Analisi delle query bloccate.
  7. Fai clic su Salva.

Identifica e termina una query attiva bloccata

I seguenti passaggi mostrano come identificare e terminare una query attiva specifica che potrebbe bloccare altre query.

Console

  1. Nella Google Cloud console, 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 Query Insights.
  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 in esecuzione da più tempo 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 è incluso un numero, questo numero indica il numero di query dipendenti 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 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 in 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: possibili azioni da intraprendere, ad esempio Termina sessione.

    Fai clic per espandere l'ID sessione che vuoi esaminare. Puoi espandere le sessioni 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 a Cloud SQL Studio per eseguire di nuovo le query attive.

Visualizza i dettagli delle sessioni inattive di blocco

La scheda Query attive mostra le sessioni che stanno elaborando una richiesta. Le sessioni nello stato SLEEPING sono escluse da questa visualizzazione.

Per visualizzare l'ultimo comando eseguito per una sessione inattiva, utilizza il seguente 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 che ti aiutano a risolvere i problemi di blocco, consulta le seguenti risorse:

Passaggi successivi