Nesta página, descrevemos 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 em uma transação vejam um snapshot consistente do banco de dados como ele existia no início da transação. No Spanner, esse nível de isolamento é implementado usando uma técnica também chamada de isolamento de snapshot. Essa abordagem é benéfica em cenários de alta simultaneidade de leitura/gravação em que várias transações leem dados que outras transações podem estar modificando. Ao usar um snapshot fixo, 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 gravações simultâneas, o que resulta em potencialmente menos transações anuladas que podem precisar ser repetidas devido a conflitos de serialização. Para mais informações, consulte Visão geral do nível de isolamento.
Definir o nível de isolamento
É possível definir o nível de isolamento em transações de leitura e gravação no nível da transação usando os seguintes métodos:
Bibliotecas de cliente
Go
Java
Node.js
Python
REST
É possível usar a API REST TransactionOptions.isolation_level
para definir o nível de isolamento em transações de leitura e gravação no nível da transação. As opções válidas são TransactionOptions.SERIALIZABLE
e TransactionOptions.REPEATABLE_READ
. Por padrão, o Spanner define o nível de isolamento como serializável.
RPC
Casos de uso não aceitos
- Só é possível usar o isolamento de leitura repetida em transações de leitura e gravação. O Spanner retorna um erro se você definir esse nível de isolamento em uma transação somente leitura. Todas as transações somente leitura operam em um snapshot fixo e não exigem bloqueios.
- Não é possível usar o isolamento de leitura repetível para modificar tabelas que têm índices de pesquisa de texto completo definidos nas colunas.
A seguir
Saiba mais sobre os níveis de isolamento.
Saiba como usar SELECT FOR UPDATE no isolamento de leitura repetível.
Saiba mais sobre a capacidade de serialização e a consistência externa do Spanner em TrueTime e consistência externa.