Per aiutarti a comprendere, ottimizzare e diagnosticare meglio i problemi relativi alle transazioni, Spanner ti offre l'accesso alle statistiche sul commit delle transazioni. Al momento, può recuperare il numero totale di mutazioni per una transazione.
Quando utilizzare le statistiche di commit
Conoscere il numero di mutazioni di una transazione può essere utile per: diversi scenari.
Ottimizza per i viaggi di andata e ritorno
Per migliorare le prestazioni della tua applicazione, puoi ridurre il numero di di andata e ritorno al database, svolgendo il più possibile transazione. In questo scenario, vuoi massimizzare il numero di mutazioni per transazioni, rimanendo al contempo entro i limiti di sistema.
Per determinare il numero di righe che puoi impegnare per transazione rimanendo sotto limite, devi prima eseguire il commit di una riga in una transazione. Questo fornisce una base di il numero di mutazioni per riga. Quindi dividi il limite di sistema per la base di riferimento per ottenere un numero di righe per transazione. Per ulteriori informazioni su come vengono conteggiate le mutazioni, consulta questa nota.
Tieni presente che l'ottimizzazione per i viaggi di andata e ritorno non è sempre vantaggiosa, soprattutto se comporta maggiori contese per il blocco. Puoi Risolvi i conflitti di blocco nel database utilizzando le statistiche di blocco.
Monitora le transazioni per evitare di raggiungere i limiti di sistema
Con l'aumento dell'utilizzo delle applicazioni, è possibile aumenta anche il numero di mutazioni nella transazione. Per evitare di colpire limite del sistema e alla fine la transazione non va a buon fine, puoi monitorare proattivamente le statistiche di commit del conteggio delle mutazioni nel tempo. Se per osservare l'aumento di questo valore per la stessa transazione, potrebbe essere giunto il momento ottimizza nuovamente la transazione come descritto nella sezione precedente.
Come accedere alle statistiche sul commit
Le statistiche di commit non vengono restituite per impostazione predefinita. Devi invece impostare
return_commit_stats
su true per ogni CommitRequest. Se
il tuo tentativo di commit supera il numero massimo consentito di mutazioni per un
transazione, il commit non riesce e viene restituito un errore INVALID_ARGUMENT
restituito.
Ecco un esempio di come restituire statistiche di commit utilizzando le librerie client di Spanner.
Recupero delle statistiche di commit
L'esempio seguente mostra come ottenere statistiche di commit utilizzando le librerie client di Spanner.
C++
Il seguente codice chiama set_return_stats()
su CommitOptions
e
restituisce un conteggio delle mutazioni pari a 6, perché stiamo inserendo o aggiornando 2 righe e
3 colonne in ogni riga.
C#
In C#, le statistiche di commit non vengono restituite direttamente tramite l'API. Al contrario, registrato a livello di log di informazioni dal logger predefinito.
Il seguente codice abilita il logging delle statistiche di commit per tutte le transazioni
impostando la proprietà LogCommitStats
su SpannerConnectionStringBuilder
su
vero. Il codice implementa inoltre un logger di esempio che conserva un riferimento
ultima risposta al commit. L'elemento MutationCount
viene quindi recuperato da questo
la risposta e la visualizzazione.
Vai
Il seguente codice imposta il flag ReturnCommitStats
e stampa la mutazione
vengono conteggiate quando il commit della transazione viene eseguito correttamente.
Java
Node.js
Il seguente codice imposta il flag returnCommitStats
e restituisce una mutazione
conteggio di 6, perché stiamo inserendo o aggiornando 2 righe e 3 colonne in ciascuna
riga di comando.
PHP
Python
Invece di restituire le statistiche di commit direttamente tramite l'API, il comando Python
la libreria client li registra utilizzando stdout
al livello Info
.
Il seguente codice abilita il logging delle statistiche di commit per tutte le transazioni
impostazione database.log_commit_stats = True
. Il codice implementa anche
un logger di esempio che conserva un riferimento all'ultima risposta al commit rilevata. La
mutation_count
viene quindi recuperato da questa risposta e visualizzato.
Ruby
Il seguente codice imposta il flag return_commit_stats
e restituisce una mutazione
conteggio di 6, perché stiamo inserendo o aggiornando 2 righe e 3 colonne in ciascuna
riga di comando.