Limites de carimbo de data/hora

Introdução

Ao ler dados no Cloud Spanner em uma transação somente leitura ou em uma chamada de leitura única, é possível definir um limite de carimbo de data/hora que informe ao Cloud Spanner como escolher um carimbo de data/hora para ler os dados.

Por que configurar um limite do carimbo de data/hora? Se o banco de dados estiver distribuído geograficamente (ou seja, você criou a instância do Cloud Spanner usando uma configuração de instância de várias regiões) e se o aplicativo tolerar alguma inatividade ao ler dados, então você conseguirá benefícios de latência ao executar uma leitura desatualizada em vez de uma leitura forte. Saiba mais sobre esses tipos de leitura em Leituras.

Tipos de limites do carimbo de data/hora

Os tipos de limite do carimbo de data/hora são:

  • Forte (o padrão): lê os dados mais recentes.
  • Inatividade limitada: lê uma versão dos dados que não é mais inativa do que um limite.
  • Inatividade exata: lê a versão dos dados em um carimbo de data/hora exato, por exemplo, como um ponto no tempo no passado, mas é possível especificar um carimbo de data/hora para um momento que ainda não passou. Se o carimbo de data/hora for especificado no futuro, o Cloud Spanner aguardará esse carimbo de data/hora antes de atender à leitura.

Observações:

  • As leituras que usam esses modos de limite de carimbo de data/hora não fazem parte de uma transação de leitura e gravação, mas elas podem bloquear a espera de transações de leitura e gravação simultâneas para efetivação. As leituras de inatividade limitada tentam escolher um carimbo de data/hora para evitar o bloqueio, mas ainda assim é possível que o bloqueio ocorra.

  • As leituras desatualizadas (ou seja, que usam os tipos de inatividade exata ou limitada) têm o benefício de desempenho máximo em intervalos de inatividade mais longos. Use um mínimo de inatividade de 10 segundos para que seja vantajoso.

Explicamos abaixo os tipos de limite do carimbo de data/hora do Cloud Spanner em mais detalhes.

Forte

O Cloud Spanner oferece um tipo de limite para leituras fortes. As leituras fortes têm garantia de visualização dos efeitos de todas as transações que tenham sido confirmadas antes do início da leitura. Além disso, todas as linhas produzidas por uma única leitura são consistentes entre si. Se qualquer parte da leitura observa uma transação, todas as partes da leitura também a veem.

Leituras fortes não são repetitivas: duas transações fortes somente leitura consecutivas podem retornar resultados inconsistentes se houver gravações simultâneas. Se for necessária consistência entre as leituras, execute-as dentro da mesma transação ou em um carimbo de data/hora de leitura exato.

Inatividade limitada

O Cloud Spanner oferece um tipo de limite para inatividade limitada. Os modos de inatividade limitada permitem que o Cloud Spanner escolha o carimbo de data/hora, sujeito a um limite de inatividade fornecido pelo usuário. O Cloud Spanner escolhe o carimbo de data/hora mais recente dentro do limite de inatividade que permite a execução das leituras na réplica disponível mais próxima sem bloquear.

Todas as linhas produzidas são consistentes entre si. Se alguma parte da leitura observa uma transação, todas as partes da leitura também a veem. As leituras desatualizadas limitadas não são repetíveis: duas leituras desatualizadas, por mais que usem o mesmo limite de inatividade, podem ser executadas com carimbo de data/hora diferentes e, assim, retornar resultados inconsistentes.

As leituras inativas limitadas são geralmente um pouco mais lentas do que as leituras inativas exatas comparáveis.

Inatividade exata

O Cloud Spanner oferece um tipo de limite para inatividade exata. Esses limites de carimbo de data/hora realizam leituras em um carimbo de data/hora especificado pelo usuário. As leituras no carimbo de data/hora garantem a consulta de um prefixo consistente do histórico de transações globais: elas observam modificações feitas por todas as transações com um carimbo de data/hora de confirmação menor ou igual ao carimbo de data/hora de leitura e observam que nenhuma das modificações foi feita por transações com um carimbo de data/hora de confirmação maior. Elas bloquearão até que todas as transações conflitantes que possam ser atribuídas ao carimbo de data/hora de confirmação menor ou igual ao carimbo de data/hora de leitura tenham terminado.

O carimbo de data/hora pode ser expresso como um carimbo de data/hora de confirmação do Cloud Spanner absoluto ou uma inatividade relacionada à hora atual.

Esses modos não exigem uma "fase de negociação" para escolher um carimbo de data/hora. Como resultado, eles são executados um pouco mais rapidamente que os modos simultâneos desatualizados limitados equivalentes. Por outro lado, as leituras desatualizadas limitadas geralmente retornam resultados mais recentes.

Inatividade máxima do carimbo de data/hora

O Cloud Spanner coleta continuamente os dados substituídos e excluídos em segundo plano para recuperar espaço de armazenamento. Esse processo é conhecido como GC de versão, que recupera versões após uma hora de duração. Por esse motivo, o Cloud Spanner não pode executar leituras em um carimbo de data/hora de leitura há mais de uma hora no passado. Essa restrição também se aplica a leituras em andamento e/ou consultas SQL em que o carimbo de data/hora se torna muito antigo durante a execução. As consultas SQL e as leituras com carimbo de data/hora de leitura muito antigo apresentam falha com o erro FAILED_PRECONDITION.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Cloud Spanner