Identifica le transazioni che potrebbero causare latenze elevate

Questa pagina descrive come utilizzare gli insight sui blocchi e sulle transazioni per identificare le transazioni che generano latenze elevate.

Panoramica

Per garantire la coerenza di più transazioni simultanee, Spanner utilizza i blocchi per controllare l'accesso ai dati. La contesa dei blocchi si verifica quando molte transazioni richiedono accesso frequente allo stesso blocco, con conseguente aumento delle latenze. Senza un'interfaccia visiva, può essere tedioso identificare le transazioni problematiche che generano un numero elevato di problemi di contesa dei blocchi.

Le operazioni Spanner acquisiscono i blocchi quando fanno parte di una transazione di lettura/scrittura. Le transazioni di sola lettura non acquisiscono i blocchi.

Spanner ti aiuta a identificare le transazioni che generano latenze elevate guidandoti attraverso i seguenti passaggi:

  1. Controlla se si verifica un picco di latenze utilizzando il monitoraggio di Spanner.
  2. Verifica la presenza di problemi di contesa dei blocchi utilizzando gli Approfondimenti sui blocchi.
  3. Identifica le transazioni problematiche utilizzando gli Approfondimenti sulle transazioni.

Prezzi

Non sono previsti costi aggiuntivi per Approfondimenti sui blocchi o Approfondimenti sulle transazioni.

Configurazioni per regione

Approfondimenti sui blocchi e Approfondimenti sulle transazioni sono disponibili sia nelle configurazioni regionali sia in quelle multiregionali.

Conservazione dei dati

La conservazione massima dei dati mostrati nelle dashboard Approfondimenti sui blocchi e Approfondimenti sulle transazioni è di 30 giorni. Per i grafici, i dati vengono recuperati dalle tabelle SPANNER_SYS.*, che hanno un periodo di conservazione massimo di 30 giorni.

Per ulteriori informazioni su queste tabelle e sulla conservazione dei dati, consulta Statistiche sui blocchi e Statistiche sulle transazioni.

Ruoli obbligatori

Sono necessari ruoli e autorizzazioni IAM diversi a seconda che tu sia un utente IAM o un utente con controllo dell'accesso granulare.

Utente Identity and Access Management (IAM)

Per ottenere le autorizzazioni necessarie per visualizzare la pagina Approfondimenti su blocchi e transazioni, chiedi all'amministratore di concederti i seguenti ruoli IAM nell'istanza:

Per visualizzare la pagina Approfondimenti su blocchi e transazioni, sono necessarie le seguenti autorizzazioni nel ruolo Cloud Spanner Database Reader (roles/spanner.databaseReader):

  • spanner.databases.beginReadOnlyTransaction
  • spanner.databases.select
  • spanner.sessions.create

Utente controllo dell'accesso granulare

Se sei un utente con controllo dell'accesso granulare, assicurati di:

  • Avere Cloud Spanner Viewer(roles/spanner.viewer)
  • Hanno solo privilegi di controllo dell'accesso granulare e a loro è stato assegnato il ruolo di sistema spanner_sys_reader o uno dei suoi ruoli di membro.
  • Seleziona spanner_sys_reader o un ruolo di membro come ruolo di sistema corrente nella pagina Panoramica del database.

Per ulteriori informazioni, consulta Informazioni sul controllo dell'accesso granulare e Ruoli di sistema per controllo dell'accesso dell'accesso granulare.

Verificare la presenza di un picco di latenze utilizzando il monitoraggio di Spanner

Puoi utilizzare Cloud Monitoring per impostare avvisi per le metriche che superano le soglie specificate per tutte le richieste.

Se ricevi un avviso che indica un picco nelle latenze di un'istanza, puoi confermarlo nella dashboard di monitoraggio di Spanner, che mostra i grafici per varie metriche importanti. Il grafico Latenza ti consente di visualizzare le latenze elevate al 50° e al 99° percentile.

Per confermare un picco nelle latenze di scrittura al 99° percentile:

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

    Vai alle istanze Spanner

  2. Fai clic sul nome dell'istanza.

    La console Google Cloud mostra una panoramica dell'istanza.

  3. Fai clic su Monitoraggio nel menu di navigazione.

    La console Google Cloud mostra i grafici dei dati per l'istanza.

  4. Nel grafico Latenza, imposta Funzione su Write e Percentile su 99th.

  5. Controlla il grafico aggiornato per verificare se sono presenti picchi.

Un grafico che mostra le latenze di scrittura al 99° percentile

Se noti che l'utilizzo della CPU non presenta picchi e che si verificano picchi di errori nelle operazioni al secondo, è probabile che i picchi di latenza siano dovuti alle contese per i lock.

Verificare la presenza di problemi di contesa dei blocchi utilizzando gli insight sui blocchi

La dashboard Approfondimenti sui blocchi ti consente di visualizzare il tempo di attesa per il blocco in un'istanza o in un database selezionato. Può aiutarti a verificare se le latenze elevate sono dovute a contese sui blocchi.

Controllare se il tempo di attesa per il blocco è elevato

Per verificare se il tempo di attesa del blocco è elevato:

  1. Fai clic su Blocca approfondimenti nel menu di navigazione.

    La console Google Cloud mostra il grafico Tempo di attesa del blocco totale, che indica il tempo di attesa del blocco per ogni database nell'istanza.

    Per impostazione predefinita, i dati mostrati si riferiscono al mese di 1 hour, come indicato dal selettore dell'ora nell'angolo in alto a destra della dashboard Approfondimenti sulla serratura. Per visualizzare i dati per un intervallo più ampio, seleziona un'altra opzione, ad esempio 1 day.

    Per ulteriori informazioni, vedi Utilizzare i grafici.

  2. Nel selettore Database in alto, seleziona il database che mostra il tempo di attesa del blocco più elevato.

    Il grafico Tempo di attesa per blocco totale viene aggiornato per mostrare i dati solo per il database selezionato.

    Inoltre, un altro grafico, Attesa blocco per intervallo di righe, mostra i grafici relativi al tempo di attesa del blocco per intervalli di righe.

  3. Fai clic sul grafico e trascina orizzontalmente per espandere l'ora in cui è visibile un picco di latenza.

La dashboard di Insight sui blocchi

Analizza i dati di attesa del blocco

La tabella Approfondimenti sui blocchi mostra le seguenti colonne delle tabelle di sistema SPANNER_SYS.LOCK_STATS:

  • Chiave iniziale intervallo di righe: la chiave di riga in cui si è verificato il conflitto di blocco. Quando il conflitto coinvolge un intervallo di righe, il valore rappresenta la chiave iniziale dell'intervallo. Un segno più (+) indica un intervallo.
  • Tempo di attesa per il blocco: il tempo di attesa totale per il blocco rappresentato visivamente in una barra orizzontale. Per impostazione predefinita, la tabella utilizza questa colonna per le ordinamento e mostra la chiave di inizio dell'intervallo di righe con il tempo di attesa del blocco più elevato in alto.
  • Tempo di attesa blocco (secondi): il tempo di attesa cumulativo per i conflitti di blocco registrato per tutte le colonne nell'intervallo della chiave di riga, in secondi.
  • Tempo di attesa per il blocco (%): il tempo di attesa dei conflitti di blocco registrati per tutte le colonne nell'intervallo della chiave di riga in percentuale del tempo di attesa per il blocco totale per tutti gli intervalli della chiave di riga nel database.

Per correlare i dati del grafico Tempo di attesa del blocco per intervallo di righe con i dati della tabella, seleziona una riga. La riga correlata viene evidenziata. Al contrario, seleziona la casella di controllo di una riga nella tabella per visualizzare la riga correlata sul grafico.

La tabella Insight sui blocchi

Per filtrare i dati nella tabella:

  1. Fai clic nella casella di testo accanto a Filtra.

  2. Seleziona una proprietà, un operatore e specifica un valore.

La tabella mostra i dati corrispondenti al filtro.

Visualizzare richieste di blocco di esempio

Il riquadro Richieste di blocco di esempio mostra i dettagli delle richieste di blocco di esempio provenienti dalle transazioni in concorrenza.

Per visualizzare informazioni di esempio sulla richiesta di blocco per una chiave di inizio dell'intervallo di righe, fai clic sul link correlato nella tabella.

La tabella mostra le seguenti colonne di informazioni:

  • Nome colonna di esempio: la colonna in cui è stato rilevato il conflitto di blocco nell'intervallo della chiave di riga.
  • Modalità di blocco: la modalità di blocco richiesta.
  • Visualizza transazioni: un link alla pagina Approfondimenti sulle transazioni, che mostra le transazioni che potrebbero essere in competizione per le chiavi.

Pagina dei dettagli di Insight sui blocchi

Identificare le transazioni in concorrenza utilizzando gli insight sulle transazioni

La dashboard Approfondimenti sulle transazioni ti consente di visualizzare la latenza nelle transazioni su un'istanza o un database selezionato. Può aiutarti a identificare le transazioni che potrebbero causare latenze elevate a causa di conflitti di blocco.

Visualizzare le latenze delle transazioni

Per visualizzare la latenza delle transazioni:

  1. Fai clic su Approfondimenti sulle transazioni nel riquadro di navigazione a sinistra.

  2. Nel selettore Database in alto, seleziona il database che mostra il tempo di attesa del blocco più elevato.

    In alternativa, nella dashboard Approfondimenti su Lock, fai clic su Visualizza transazioni per filtrare le transazioni che leggono o scrivono in una colonna del campione specifica.

    Per impostazione predefinita, i dati mostrati si riferiscono al mese di 1 hour, come indicato dal selettore della data nell'angolo in alto a destra della dashboard Approfondimenti sulle transazioni.

La dashboard mostra i seguenti grafici:

  • Il grafico Latenza media (tutte le transazioni) mostra la latenza per tutte le transazioni nell'istanza.

  • Il grafico Latenza media (per transazione) mostra la latenza per ogni transazione per il database selezionato.

La dashboard Insight sulle transazioni

Analizza i dati sulle transazioni

Puoi visualizzare e analizzare i dati di ogni transazione nella tabella sotto i grafici. La tabella mostra i dati delle metriche delle tabelle di sistema SPANNER_SYS.TXN_STATS nelle seguenti colonne:

  • Impronta: l'hash del tag transazioni, se esistente. In caso contrario, l'hash viene calcolato in base alle operazioni coinvolte nella transazione. Il valore è un link che rimanda alla pagina Dettagli transazione.
  • Tag transazione: il tag transazione facoltativo per la transazione. I dati statistici relativi a più transazioni con la stessa stringa di tag vengono raggruppati in una singola riga con l'etichetta TRANSACTION_TAG corrispondente alla stringa di tag.
  • Tabelle interessate: le tabelle interessate dalla transazione.
  • Lettura Table.column: le colonne da cui la transazione legge.
  • Table.column Written: le colonne in cui la transazione ha eseguito la scrittura.
  • Latenza media (secondi): il numero medio di secondi necessari per eseguire la transazione. Per impostazione predefinita, la tabella è ordinata in base a questa colonna in ordine decrescente.

Per correlare i dati del grafico Latenza media (per transazione) con i dati della tabella, seleziona una linea nel grafico. La riga corrispondente nella tabella viene evidenziata.

Per filtrare i dati nella tabella:

  1. Fai clic accanto a Filtra.

  2. Seleziona una proprietà, un operatore e specifica un valore.

La tabella mostra i dati corrispondenti al filtro.

La tabella Insight sulle transazioni

Visualizzare informazioni dettagliate su una transazione

Per visualizzare informazioni dettagliate su una transazione, ad esempio quella che mostra la latenza più elevata, fai clic sul link Impronta nella rispettiva riga della tabella.

Viene visualizzata la pagina Dettagli transazione. Oltre alla tabella dei dettagli in alto, vengono mostrate le seguenti informazioni:

  • Una barra che mostra i valori numerici per ciascuna di queste metriche:

    • Byte medi: il numero medio di byte scritti dalla transazione.
    • Latenza media: il numero medio di secondi necessari dalla prima operazione della transazione al commit o all'interruzione.
    • Latenza media di commit: il numero medio di secondi necessari per eseguire l'operazione di commit.
    • Numero totale di tentativi: il numero totale di tentativi di transazione.
    • Conteggio totale degli aborti: il numero totale di tentativi di transazione che sono stati abbandonati, inclusi quelli abbandonati prima di chiamare il metodo commit della transazione.
  • Grafici che mostrano questi valori.

    Inoltre, il grafico Partecipanti medi mostra il numero medio di partecipanti in ogni tentativo di commit.

Pagina dei dettagli di Approfondimenti sulle transazioni

Verifica se la forma della transazione può essere ottimizzata per ridurre le latenze. Valuta la possibilità di applicare le best practice consigliate per ridurre la contesa dei blocchi.

Passaggi successivi