Nesta página, descrevemos como configurar o tempo máximo de atraso de confirmação (gravação) para otimizar a capacidade de gravação no Spanner.
Visão geral
Para garantir a consistência dos dados, o Spanner envia solicitações de gravação para todas as réplicas votantes no banco de dados. Esse processo de replicação pode gerar sobrecarga computacional. Para mais informações, consulte Replicação.
As gravações otimizadas de capacidade oferecem a opção de amortizar esses custos de computação executando um grupo de gravações em conjunto. Para isso, o Spanner apresenta um pequeno atraso e coleta um grupo de gravações que precisam ser enviadas aos mesmos participantes da votação. Executar gravações dessa maneira pode melhorar significativamente a capacidade de processamento, mas com uma latência um pouco maior.
Comportamento padrão
Se você não definir um tempo de atraso de confirmação, o Spanner poderá definir um pequeno atraso se achar que isso amortizará o custo de suas gravações.
Casos de uso comuns
É possível definir manualmente o atraso das suas solicitações de gravação, dependendo das necessidades do seu aplicativo. Também é possível desativar os atrasos de confirmação para aplicativos que são altamente sensíveis à latência definindo o tempo máximo de atraso de confirmação como 0 ms.
Se você tiver um aplicativo tolerante à latência e quiser otimizar a capacidade, definir um tempo de atraso de confirmação mais longo vai melhorar significativamente essa capacidade, aumentando a latência em cada gravação. Por exemplo, se você estiver carregando em massa uma grande quantidade de dados e o aplicativo não se importar com a rapidez com que o Spanner grava dados individuais, será possível definir o tempo de atraso de confirmação como um valor mais longo, como 100 ms. Recomendamos começar com um valor de 100 ms e ajustar até que as compensações de latência e capacidade atendam às suas necessidades. Na maioria dos aplicativos, um valor entre 20 ms e 100 ms funciona melhor.
Caso você tenha um aplicativo sensível à latência, o do Spanner também é sensível à latência por padrão. Se você tiver uma carga de trabalho de pico, o Spanner poderá definir um pequeno atraso. É possível testar a configuração de um valor de 0 ms para determinar se a latência reduzida ao custo do aumento da capacidade é razoável para seu aplicativo.
Definir tempos de atraso de confirmação mistos
Você pode configurar diferentes tempos de atraso máximo de confirmação em subconjuntos de suas gravações. Se você fizer isso, o Spanner usará o menor tempo de atraso configurado para o conjunto de gravações. No entanto, recomendamos escolher um único valor para a maioria dos casos de uso, porque isso resulta em um comportamento mais previsível.
Limitações
É possível definir um tempo de atraso de confirmação entre 0 e 500 ms. Definir atrasos de confirmação maiores que 500 ms resulta em um erro.
Definir atraso máximo de confirmação em solicitações de confirmação
O parâmetro de atraso máximo de confirmação faz parte do método CommitRequest
. É possível acessar esse método com a API RPC, a API REST ou a biblioteca de cliente do Cloud Spanner.
Go
Node.js
Python
Ruby
Monitorar a latência da solicitação de gravação
É possível monitorar a utilização e a latência da CPU do Spanner usando o console do Google Cloud. Ao definir um tempo de atraso maior para suas solicitações de gravação, é possível que a utilização da CPU diminua conforme a latência aumenta. Para saber mais sobre a latência nas solicitações do Spanner, consulte Capturar e visualizar a latência da solicitação da API Spanner.