Identifica le transazioni che potrebbero causare latenze elevate

Questa pagina descrive come utilizzare Lock Insights e Transaction Insights 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 del blocco si verifica quando molte transazioni richiedono l'accesso frequente allo stesso blocco, causando latenze elevate. Senza un'interfaccia visiva, può essere noioso identificare le transazioni problematiche che generano un numero elevato di problemi di conflitti dei blocchi.

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

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

  1. Verifica la presenza di un picco di latenze utilizzando Spanner Monitoring.
  2. Verifica la presenza di problemi di contesa del blocco utilizzando gli approfondimenti sui blocchi.
  3. Identifica le transazioni problematiche utilizzando le informazioni sulle transazioni.

Prezzi

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

Configurazioni per regione

Gli insight sui blocchi e gli insight sulle transazioni sono disponibili nelle configurazioni per una o più regioni.

Conservazione dei dati

La conservazione massima dei dati visualizzati nelle dashboard degli insight sui blocchi e degli insight 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 di blocco e Statistiche sulle transazioni.

Ruoli obbligatori

Hai bisogno di autorizzazioni e ruoli IAM diversi, a seconda che tu sia un utente IAM o un utente con controllo dell'accesso granulare.

Utente IAM (Identity and Access Management)

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

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

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

Utente con controllo dell'accesso granulare

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

  • Avere il visualizzatore Cloud Spanner(roles/spanner.viewer)
  • Hanno solo privilegi di controllo dell'accesso granulari e hanno il ruolo di sistema spanner_sys_reader o uno dei relativi ruoli membro.
  • Seleziona il ruolo spanner_sys_reader o di membro come ruolo di sistema attuale nella pagina di riepilogo del database.

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

Verifica la presenza di un picco di latenze utilizzando Spanner Monitoring

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 di latenze per un'istanza, puoi verificarlo nella dashboard di Spanner Monitoring, che mostra i grafici relativi a varie metriche importanti. Il grafico Latenza consente di visualizzare le alte latenza al 50° e 99° percentile.

Per confermare un picco nelle latenze di scrittura al 99° percentile, segui questi passaggi:

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

    Vai a Istanze Spanner

  2. Fai clic sul nome dell'istanza.

    Nella console Google Cloud viene visualizzata una panoramica dell'istanza.

  3. Fai clic su Monitoring nel menu di navigazione.

    Nella console Google Cloud vengono visualizzati 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 mostra picchi.

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

Se noti che l'utilizzo della CPU non è elevato e che gli errori aumentano le operazioni al secondo, è probabile che i picchi di latenza siano dovuti alle contese dei blocchi.

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

La dashboard degli insight sui blocchi consente di visualizzare il tempo di attesa per il blocco in un'istanza o in un database selezionato. Aiuta a verificare se latenze elevate sono dovute a contese del blocco.

Verifica l'eventuale tempo di attesa per il blocco elevato

Per verificare se sono presenti tempi di attesa per il blocco elevati:

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

    Nella console Google Cloud viene visualizzato il grafico Attesa totale per il blocco, che mostra il tempo di attesa per il blocco per ogni database nell'istanza.

    Per impostazione predefinita, i dati mostrati sono relativi a 1 hour, come è visibile il selettore del periodo di tempo nell'angolo in alto a destra della dashboard degli approfondimenti sui blocchi. Per visualizzare i dati per un intervallo più ampio, seleziona un'altra opzione, ad esempio 1 day.

    Per ulteriori informazioni, vedi Utilizzo dei grafici.

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

    Il grafico Attesa totale per il blocco si aggiorna per mostrare solo i dati relativi al database selezionato.

    Inoltre, un altro grafico, Blocca attesa 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.

Dashboard degli approfondimenti sui blocchi

Analizzare i dati dell'attesa per il blocco

La tabella Blocca insight mostra le seguenti colonne delle tabelle di sistema SPANNER_SYS.LOCK_STATS:

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

Per correlare i dati nel grafico Blocca attesa per intervallo di righe con i dati nella tabella, seleziona una riga. La riga correlata viene evidenziata. Seleziona invece la casella di controllo per una riga della tabella per visualizzare la linea correlata nel grafico.

Tabella degli insight sui blocchi

Per filtrare i dati nella tabella:

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

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

La tabella mostra i dati corrispondenti al filtro.

Visualizza richieste di blocco di esempio

Il riquadro Richieste di blocco di esempio mostra i dettagli delle richieste di blocco di esempio di transazioni concorrenti.

Per visualizzare informazioni sulla richiesta di blocco di esempio per una chiave iniziale 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 che ha riscontrato il conflitto di blocco nell'intervallo di chiave di riga.
  • Modalità di blocco: la modalità di blocco richiesta.
  • Visualizza transazioni: un link alla pagina Informazioni sulle transazioni, in cui vengono mostrate le transazioni che potrebbero essere in concorrenza per i blocchi.

Pagina dei dettagli degli insight sui blocchi

Identificare le transazioni concorrenti utilizzando le informazioni sulle transazioni

La dashboard di Transaction Insights consente di visualizzare la latenza nelle transazioni su un'istanza o un database selezionato. Aiuta a identificare le transazioni che potrebbero generare latenze elevate a causa di contese del blocco.

Visualizzare le latenze delle transazioni

Per visualizzare la latenza delle transazioni:

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

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

    In alternativa, nella dashboard degli approfondimenti sui blocchi, fai clic su Visualizza transazioni per filtrare le transazioni in lettura o scrittura in una colonna di esempio specifica.

    Per impostazione predefinita, i dati mostrati sono relativi a 1 hour, come è visibile il selettore dell'ora nell'angolo in alto a destra della dashboard delle informazioni 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.

Dashboard degli insight sulle transazioni

Analizzare i dati delle transazioni

Puoi visualizzare e analizzare i dati per 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:

  • Fingerprint: l'hash del tag transazione, se esistente. In caso contrario, l'hash viene calcolato in base alle operazioni coinvolte nella transazione. Il valore è un link che indirizza alla pagina Dettagli transazione.
  • Tag Transaction: il tag di 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.
  • Table.column Read: le colonne da cui ha letto la transazione.
  • Table.column Scritt: le colonne in cui è stata scritta la transazione.
  • Latenza media (secondi): la media dei secondi impiegati per eseguire la transazione. Per impostazione predefinita, la tabella viene ordinata in base a questa colonna in ordine decrescente.

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

Per filtrare i dati nella tabella:

  1. Fai clic accanto a Filtro.

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

La tabella mostra i dati corrispondenti al filtro.

Tabella Transaction Insights

Visualizzare informazioni dettagliate su una transazione

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

Viene visualizzata la pagina Dettagli transazione. Oltre alla tabella dei dettagli in alto, contiene 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: la media in secondi trascorsi dalla prima operazione della transazione al commit o all'interruzione.
    • Latenza media di commit: la media dei secondi impiegati per eseguire l'operazione di commit.
    • Conteggio totale tentativi: il numero totale di tentativi di transazione.
    • Conteggio totale interruzioni: il numero totale di tentativi di transazione interrotti, inclusi quelli interrotti prima della chiamata del 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 Transaction Insights

Verifica se la forma della transazione può essere ottimizzata per ridurre le latenze. Valuta la possibilità di applicare le pratiche consigliate per ridurre i conflitti dei blocchi.

Passaggi successivi