Identifica le transazioni che potrebbero causare latenze elevate

Questa pagina descrive come utilizzare gli insight sui blocchi e gli insight sulle transazioni per identificare le transazioni che comportano 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 un accesso frequente allo stesso blocco, causando latenze elevate. Senza un'interfaccia visiva, può essere difficile identificare le transazioni problematiche che comportano 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 blocchi.

Spanner ti aiuta a identificare le transazioni che comportano latenze elevate guidandoti nei seguenti passaggi:

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

Prezzi

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

Configurazioni regionali

Gli insight sui blocchi e gli insight sulle transazioni sono disponibili sia nelle configurazioni regionali sia in quelle per più regioni.

Conservazione dei dati

Il periodo massimo di conservazione 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 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 degli insight sui blocchi e sulle transazioni, chiedi all'amministratore di concederti i seguenti ruoli IAM sull'istanza:

Per visualizzare la pagina degli insight sui blocchi e sulle 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 controllo dell'accesso granulare:

  • Devi avere il ruolo Cloud Spanner Visualizzatore(roles/spanner.viewer)
      .
    • Devi disporre solo dei privilegi di controllo dell'accesso granulare e ti deve essere stato concesso il ruolo di sistema spanner_sys_reader o uno dei suoi ruoli membri.
  • Seleziona spanner_sys_reader o un ruolo membro come ruolo di sistema corrente nella pagina di panoramica del database.

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

Verificare 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 confermarlo nella dashboard di Spanner Monitoring, che mostra i grafici per varie metriche importanti. Il grafico Latenza ti aiuta a visualizzare le latenze elevate al 50° e 99° percentile.

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

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

    Vai alle istanze Spanner

  2. Fai clic sul nome dell'istanza.

    La Google Cloud console mostra una panoramica dell'istanza.

  3. Fai clic su Monitoring nel menu di navigazione.

    La Google Cloud console 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 mostra eventuali picchi.

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

Se noti che l'utilizzo della CPU non aumenta e gli errori aumentano nelle 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 insight sui blocchi

La dashboard degli insight sui blocchi ti aiuta a 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 dei blocchi.

Verificare la presenza di un tempo di attesa per il blocco elevato

Per verificare la presenza di un tempo di attesa per il blocco elevato:

  1. Fai clic su Insight sui blocchi nel menu di navigazione.

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

    Per impostazione predefinita, i dati visualizzati sono relativi a 1 hour, come indicato dal selettore del tempo nell'angolo in alto a destra della dashboard degli insight sui blocchi. Per visualizzare i dati per un intervallo più ampio, seleziona un'altra opzione, ad esempio 1 day.

    Per ulteriori informazioni, consulta Utilizzare i grafici.

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

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

    Inoltre, un altro grafico, Tempo di attesa per il blocco per intervallo di righe, mostra i grafici del tempo di attesa per il 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 degli insight sui blocchi

Analizzare i dati del tempo di attesa per il blocco

La tabella Insight 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 riguarda 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 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ù elevato in alto.
  • Tempo di attesa per il blocco (secondi): il tempo di attesa cumulativo per il blocco dei conflitti di blocco registrati per tutte le colonne nell'intervallo di 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 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 del grafico Tempo di attesa per il 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 per una riga nella tabella per visualizzare la riga correlata nel grafico.

Tabella degli insight sui blocchi

Per filtrare i dati nella tabella:

  1. Fai clic nel campo accanto a Filtro.

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

La tabella mostra i dati che corrispondono al filtro.

Visualizzare le richieste di blocco di esempio

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

Per visualizzare le informazioni sulle richieste 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 in cui si è verificato il conflitto di blocco nell' intervallo di chiave di riga.
  • Modalità di blocco: la modalità di blocco richiesta.
  • Visualizza transazioni: un link alla pagina Insight sulle transazioni, che mostra le transazioni che potrebbero essere in contesa per i blocchi.

La pagina dei dettagli degli insight sui blocchi

Identificare le transazioni in contesa utilizzando gli insight sulle transazioni

La dashboard degli insight sulle transazioni ti aiuta a 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 contese dei blocchi.

Visualizzare le latenze delle transazioni

Per visualizzare la latenza delle transazioni:

  1. Fai clic su Insight sulle transazioni nella navigazione a sinistra.

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

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

    Per impostazione predefinita, i dati visualizzati sono relativi a 1 hour, come indicato dal selettore del tempo nell'angolo in alto a destra della dashboard degli insight 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 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 SPANNER_SYS.TXN_STATS tabelle di sistema nelle seguenti colonne:

  • Impronta: l'hash del tag della transazione, se esiste. 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 della transazione facoltativo per la transazione. I dati statistici per 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 ha letto.
  • Scrittura Table.Column: le colonne in cui la transazione ha scritto.
  • Latenza media (secondi): i secondi medi 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 riga nel grafico. La riga corrispondente nella tabella viene evidenziata.

Per filtrare i dati nella tabella:

  1. Fai clic su accanto a Filtro.

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

La tabella mostra i dati che corrispondono al filtro.

Tabella degli approfondimenti 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 riga corrispondente della tabella.

Viene visualizzata la pagina Dettagli della transazione. Oltre alla tabella dei dettagli in alto, mostra 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: i secondi medi necessari dalla prima operazione della transazione al commit o all'interruzione.
    • Latenza media di commit: i secondi medi necessari per eseguire l' operazione di commit.
    • Numero totale di tentativi: il numero totale di tentativi di transazione. Questo conteggio rappresenta una frequenza al minuto. Per ulteriori informazioni sugli intervalli, consulta Statistiche sulle transazioni.
    • Numero totale di interruzioni: il numero totale di tentativi di transazione che vengono interrotti, inclusi i tentativi che vengono interrotti prima di chiamare il metodo di commit della transazione. Questo conteggio rappresenta una frequenza al minuto. Per ulteriori informazioni sugli intervalli, consulta Statistiche sulle transazioni.
  • Grafici che rappresentano questi valori. Il grafico Tentativi e interruzioni totali mostra il conteggio al minuto, o la frequenza, dei tentativi di transazione e delle interruzioni. Per visualizzare i tentativi di transazione e le interruzioni al minuto, la Google Cloud console esegue una query sulla tabella SPANNER_SYS.TXN_STATS_TOP_* che copre al meglio l'intervallo di tempo selezionato (_MINUTE, _10MINUTE o _HOUR). La Google Cloud console divide quindi i valori nelle colonne ATTEMPT_COUNT e COMMIT_ABORT_COUNT della tabella scelta per la durata dell'intervallo in minuti (1, 10 o 60) per presentare una frequenza al minuto. Per ulteriori informazioni sugli intervalli, consulta Statistiche sulle transazioni.

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

La pagina dei dettagli degli insight sulle transazioni

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

Passaggi successivi