Questa pagina descrive come utilizzare l'isolamento di lettura ripetibile in Spanner.
La lettura ripetibile è un livello di isolamento che garantisce che tutte le operazioni di lettura all'interno di una transazione vedano uno snapshot coerente del database così com'era all'inizio della transazione. In Spanner, questo livello di isolamento viene implementato utilizzando una tecnica comunemente chiamata anche isolamento degli snapshot. Questo approccio è vantaggioso in scenari di concorrenza di lettura/scrittura elevata in cui numerose transazioni leggono dati che altre transazioni potrebbero modificare. Utilizzando uno snapshot fisso, la lettura ripetibile evita gli impatti sulle prestazioni del livello di isolamento serializzabile più rigoroso. Le letture possono essere eseguite senza acquisire blocchi e senza bloccare le scritture simultanee, il che comporta potenzialmente un numero inferiore di transazioni interrotte che potrebbero dover essere riprovate a causa di conflitti di serializzazione. Per ulteriori informazioni, consulta la panoramica del livello di isolamento.
Imposta il livello di isolamento
Puoi impostare il livello di isolamento nelle transazioni di lettura/scrittura a livello di transazione utilizzando i seguenti metodi:
Librerie client
Vai
Java
Node.js
Python
REST
Puoi utilizzare l'API REST TransactionOptions.isolation_level
per impostare il livello di isolamento delle transazioni di lettura/scrittura a livello di transazione. Le opzioni valide sono TransactionOptions.SERIALIZABLE
e
TransactionOptions.REPEATABLE_READ
. Per impostazione predefinita, Spanner imposta
il livello di isolamento sull'isolamento serializzabile.
RPC
Casi d'uso non supportati
- Puoi utilizzare l'isolamento di lettura ripetibile solo nelle transazioni di lettura/scrittura. Spanner restituisce un errore se imposti questo livello di isolamento su una transazione di sola lettura. Tutte le transazioni di sola lettura operano a un'istantanea fissa e non richiedono blocchi.
- Non puoi utilizzare l'isolamento di lettura ripetibile per modificare le tabelle che hanno indici di ricerca full-text definiti nelle relative colonne.
Passaggi successivi
Scopri di più sui livelli di isolamento.
Scopri come utilizzare SELECT FOR UPDATE nell'isolamento di lettura ripetibile.
Scopri di più sulla serializzabilità e sulla coerenza esterna di Spanner, consulta TrueTime e coerenza esterna.