Esta página descreve como usar o isolamento de leitura repetível no Spanner.
A leitura repetível é um nível de isolamento que garante que todas as operações de leitura numa transação veem um instantâneo consistente da base de dados tal como existia no início da transação. No Spanner, este nível de isolamento é implementado através de uma técnica que também é comummente denominada isolamento de instantâneo. Esta abordagem é vantajosa em cenários de concorrência de leitura/escrita elevada em que várias transações leem dados que outras transações podem estar a modificar. Ao usar uma captura instantânea fixa, a leitura repetível evita os impactos no desempenho do nível de isolamento serializável mais rigoroso. As leituras podem ser executadas sem adquirir bloqueios e sem bloquear escritas simultâneas, o que resulta potencialmente em menos transações anuladas que podem ter de ser repetidas devido a conflitos de serialização. Para mais informações, consulte o artigo Vista geral do nível de isolamento.
Defina o nível de isolamento
Pode definir o nível de isolamento em transações de leitura/escrita ao nível da transação através dos seguintes métodos:
Bibliotecas cliente
Ir
Java
Node.js
Python
REST
Pode usar a API REST TransactionOptions.isolation_level
para definir o nível de isolamento em transações de leitura/escrita ao nível da transação. As opções válidas são TransactionOptions.SERIALIZABLE
e
TransactionOptions.REPEATABLE_READ
. Por predefinição, o Spanner define o nível de isolamento como isolamento serializável.
RPC
Exemplos de utilização não suportados
- Só pode usar o isolamento de leitura repetível em transações de leitura/escrita. O Spanner devolve um erro se definir este nível de isolamento numa transação só de leitura. Todas as transações só de leitura operam num instantâneo fixo e não requerem bloqueios.
- Não pode usar o isolamento de leitura repetível para modificar tabelas que tenham índices de pesquisa de texto completo definidos nas respetivas colunas.
O que se segue?
Saiba mais sobre os níveis de isolamento.
Saiba como usar SELECT FOR UPDATE no isolamento de leitura repetível.
Para saber mais sobre a serialização e a consistência externa do Spanner, consulte o artigo TrueTime e consistência externa.