Questa pagina descrive come utilizzare gli insight sui blocchi e sulle transazioni per identificare le transazioni che comportano latenze elevate.
Panoramica
Per garantire la coerenza di più transazioni simultanee, Spanner utilizza blocchi per controllare l'accesso ai dati. La contesa dei blocchi si verifica quando molte transazioni richiedono un accesso frequente allo stesso blocco, il che comporta latenze elevate. Senza un'interfaccia visiva, può essere difficile identificare le transazioni problematiche che portano a un numero elevato di problemi di contesa dei blocchi.
Le operazioni Spanner acquisiscono 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 causano latenze elevate guidandoti attraverso i seguenti passaggi:
- Verifica la presenza di un picco di latenze utilizzando Spanner Monitoring.
- Controlla i problemi di conflitto di blocchi utilizzando Lock Insights.
- Identifica le transazioni problematiche utilizzando gli approfondimenti sulle transazioni.
Prezzi
Non sono previsti costi aggiuntivi per gli approfondimenti sui blocchi o sulle transazioni.
Configurazioni delle regioni
Gli approfondimenti sui blocchi e sulle transazioni sono disponibili nelle configurazioni regionali e multiregionali.
Conservazione dei dati
La conservazione massima dei dati mostrati nelle dashboard Lock insights e Transaction insights è 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 saperne di più su queste tabelle e sulla conservazione dei dati, consulta Statistiche di blocco e Statistiche delle transazioni.
Ruoli obbligatori
A seconda che tu sia un utente IAM o un utente con controllo dell'accesso dell'accesso granulare, hai bisogno di ruoli e autorizzazioni IAM diversi.
Utente Identity and Access Management (IAM)
Per ottenere le autorizzazioni necessarie per visualizzare la pagina Insight su blocchi e transazioni, chiedi all'amministratore di concederti i seguenti ruoli IAM nell'istanza:
-
Tutti:
- Cloud Spanner Viewer (
roles/spanner.viewer) - Cloud Spanner Database Reader (
roles/spanner.databaseReader)
- Cloud Spanner Viewer (
Per visualizzare la pagina degli insight su blocchi e transazioni, sono necessarie le seguenti autorizzazioni nel ruolo Cloud Spanner Database Reader (
roles/spanner.databaseReader):
spanner.databases.beginReadOnlyTransactionspanner.databases.selectspanner.sessions.create
Utente con controllo dell'accesso granulare
Se utilizzi il controllo dell'accesso granulare, assicurati di:
- Disporre del ruolo Visualizzatore Cloud Spanner(
roles/spanner.viewer)- Disporre solo di privilegi di controllo dell'accesso granulare e a cui è stato concesso il ruolo di sistema
spanner_sys_readero uno dei suoi ruoli membro.
- Disporre solo di privilegi di controllo dell'accesso granulare e a cui è stato concesso il ruolo di sistema
- Seleziona
spanner_sys_readero un ruolo di membro come ruolo di sistema attuale nella pagina di riepilogo del database.
Per saperne di più, consulta Informazioni sul controllo dell'accesso granulare e Ruoli di sistema per controllo dell'accesso dell'accesso granulare.
Controlla se si è verificato 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 monitoraggio di Spanner, che mostra grafici per varie metriche importanti. Il grafico Latenza ti aiuta a visualizzare le latenze elevate al 50° e 99° percentile.
Per confermare un picco delle latenze di scrittura al 99° percentile, segui questi passaggi:
Nella console Google Cloud , vai alla pagina Istanze Spanner.
Fai clic sul nome dell'istanza.
La console Google Cloud mostra una panoramica dell'istanza.
Fai clic su Monitoring nel menu di navigazione.
La console Google Cloud mostra i grafici dei dati per l'istanza.
Nel grafico Latenza, imposta Funzione su
Writee Percentile su99th.Controlla il grafico aggiornato per verificare se mostra picchi.

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 a contese di blocco.
Controllare 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 di blocchi.
Controllare se il tempo di attesa per il blocco è elevato
Per verificare se il tempo di attesa del blocco è elevato, segui questi passaggi:
Fai clic su Blocca approfondimenti nel menu di navigazione.
La console Google Cloud mostra il grafico Attesa totale per il blocco, che mostra il tempo di attesa per il blocco per ogni database nell'istanza, in secondi di attesa per il blocco al minuto.
Per impostazione predefinita, i dati visualizzati si riferiscono al giorno
1 hour, come indicato dal selettore dell'ora nell'angolo in alto a destra della dashboard Statistiche serratura. Per visualizzare i dati per un intervallo più ampio, seleziona un'altra opzione, ad esempio1 day.Per saperne di più, consulta Utilizzo dei grafici.
Nel selettore Database in alto, seleziona il database che mostra il tempo di attesa del blocco più elevato.
Il grafico Attesa totale per il blocco viene aggiornato per mostrare i dati solo per il database selezionato.
Inoltre, un altro grafico, Attesa blocco per intervallo di righe, mostra i grafici per il tempo di attesa del blocco per intervalli di righe.
Fai clic sul grafico e trascina orizzontalmente per espandere l'ora in cui è visibile un picco di latenza.

Analizza i dati di attesa per il 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 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 di inizio dell'intervallo di righe con il tempo di attesa del blocco più alto nella parte superiore.
- Attesa blocco (secondi): il tempo di attesa cumulativo per il blocco dei conflitti di blocco registrato per tutte le colonne nell'intervallochiave di rigaa, in secondi.
- Attesa blocco (%): il tempo di attesa dei conflitti di blocco registrati per tutte le colonne nell'intervallo di chiavi di riga, espresso come percentuale del tempo di attesa blocco totale per tutti gli intervalli di chiave di riga nel database.
Per correlare i dati del grafico Attesa 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 linea correlata nel grafico.

Per filtrare i dati nella tabella:
Fai clic nel campo accanto a Filtro.
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 provenienti da transazioni in competizione.
Per visualizzare le informazioni di esempio sulla richiesta di blocco 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 competere per i blocchi.
Identificare le transazioni in conflitto utilizzando gli insight sulle transazioni
La dashboard Approfondimenti 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 conflitti di blocco.
Visualizzare le latenze delle transazioni
Per visualizzare la latenza delle transazioni, segui questi passaggi:
Fai clic su Approfondimenti sulle transazioni nel riquadro di navigazione a sinistra.
Dal selettore Database in alto, seleziona il database che mostra il tempo di attesa del blocco più elevato.
In alternativa, nella dashboard Blocca approfondimenti, 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 si riferiscono al giorno
1 hour, come indicato dal selettore dell'ora 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.

Analizzare i dati delle 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:
- 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 rimanda alla pagina dei dettagli della transazione.
- Tag transazione: il tag 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_TAGcorrispondente 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 è stata scritta la transazione.
- Latenza media (secondi): i secondi medi impiegati per eseguire la transazione. Per impostazione predefinita, la tabella è 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:
Fai clic accanto a Filtro.
Seleziona una proprietà, un operatore e specifica un valore.
La tabella mostra i dati che corrispondono al filtro.

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 Fingerprint nella riga corrispondente della tabella.
Viene visualizzata la pagina Dettagli della transazione. Oltre alla tabella dei dettagli nella parte superiore, mostra le seguenti informazioni:
Una barra che mostra i valori numerici per ciascuna di queste metriche:
- Byte medi: la frequenza media di byte scritti dalla transazione, in byte al minuto.
- Latenza media: i secondi medi impiegati dalla prima operazione della transazione per eseguire il commit o l'interruzione.
- Latenza media di commit: il tempo medio in secondi impiegato per eseguire l'operazione di commit.
- Numero totale di tentativi: il tasso medio di tentativi di transazione, in tentativi al minuto. Per ulteriori informazioni sugli intervalli, consulta Statistiche sulle transazioni.
- Conteggio interruzioni totale: il tasso medio di tentativi di transazione che vengono interrotti, in interruzioni al minuto, inclusi i tentativi che vengono interrotti prima di chiamare il metodo di commit della transazione. Per ulteriori informazioni sugli intervalli, consulta Statistiche sulle transazioni.
Grafici che mostrano questi valori. Il grafico Tentativi e interruzioni totali mostra la frequenza al minuto dei tentativi di transazione (in tentativi al minuto) e delle interruzioni (in interruzioni al minuto). Per visualizzare i tentativi e gli annullamenti di transazione al minuto, la Google Cloud console esegue query sulla tabella
SPANNER_SYS.TXN_STATS_TOP_*che copre meglio l'intervallo di tempo selezionato (_MINUTE,_10MINUTEo_HOUR). La console Google Cloud divide quindi i valori delle colonneATTEMPT_COUNTeCOMMIT_ABORT_COUNTdella tabella scelta per la durata dell'intervallo in minuti (1, 10 o 60) per presentare una tariffa al minuto. Per saperne di più sugli intervalli, consulta Statistiche sulle transazioni.Inoltre, il grafico Partecipanti medi mostra il numero medio di partecipanti in ogni tentativo di commit.

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