Esta página descreve como configurar o tempo máximo de atraso de confirmação (gravação) para otimizar a capacidade de processamento 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 de votação no banco de dados. Esse processo de replicação pode ter sobrecarga computacional. Para mais informações, consulte Replicação.
As gravações otimizadas para capacidade de processamento oferecem a opção de amortizar esses custos de computação executando um grupo de gravações. Para fazer isso, o Spanner introduz um pequeno atraso e coleta um grupo de gravações que precisam ser enviadas aos mesmos participantes de votação. A execução de gravações dessa maneira pode proporcionar melhorias substanciais na capacidade de processamento ao custo de uma latência ligeiramente 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 vai amortizar o custo das gravações.
Casos de uso comuns
É possível definir manualmente o tempo de atraso das solicitações de gravação, dependendo das necessidades do aplicativo. Também é possível desativar os atrasos de confirmação para aplicativos 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 de processamento, definir um tempo de atraso de confirmação maior vai melhorar significativamente a capacidade de processamento, mas vai gerar uma latência maior para 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, defina o tempo de atraso de confirmação para um valor maior, como 100 ms. Recomendamos começar com um valor de 100 ms e ajustar para cima e para baixo até que as compensações de latência e capacidade de processamento atendam às suas necessidades. Para a maioria dos aplicativos, um valor entre 20 ms e 100 ms funciona melhor.
Se você tiver um aplicativo sensível à latência, o Spanner também será sensível à latência por padrão. Se você tiver uma carga de trabalho instável, o Spanner poderá definir um pequeno atraso. É possível testar a definição de um valor de 0 ms para determinar se a latência reduzida ao custo de maior capacidade de processamento é razoável para seu aplicativo.
Definir tempos de atraso de confirmação mistos
É possível configurar diferentes tempos máximos de atraso de confirmação em subconjuntos das gravações. Se você fizer isso, o Spanner vai 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. A definição de atrasos de confirmação maiores que 500 ms resulta em um erro.
Definir o 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,
API REST,
ou usando a biblioteca de cliente do Cloud Spanner.
C#
Go
Java
Node.js
Python
Ruby
Monitorar a latência de solicitações de gravação
É possível monitorar a utilização da CPU e a latência do Spanner usando o Google Cloud console. Ao definir um tempo de atraso maior para as solicitações de gravação, espere que a utilização da CPU potencialmente diminua e a latência aumente. Para saber mais sobre a latência nas solicitações do Spanner, consulte Capturar e visualizar a latência de solicitações da API Spanner.