Esta lista de verificação de lançamento fornece uma lista de considerações que precisam ser feitas antes de lançar um aplicativo de produção no Spanner. Ela não pretende ser completa, mas serve para destacar áreas que podem ter um grande impacto no desempenho da produção.
Escolher uma configuração de instância adequada
Escolha uma configuração de instância (regional x multirregional) para atender aos seus requisitos.
Se você escolher tipos de instâncias multirregionais, o aplicativo que acessa o Spanner estará próximo da região líder. Confira mais detalhes na página Instâncias.
Projetar seu esquema para desempenho em grande escala
O esquema de dados relacionais do Spanner é semelhante aos bancos de dados relacionais tradicionais, com algumas nuances que precisam ser consideradas:
- Use Tabelas intercaladas em vez de relações de chave externa quando aplicável.
- Escolha uma chave primária que impeça pontos de acesso.
- Verifique se os índices secundários não criam pontos de acesso (semelhantes aos pontos de acesso de chave primária).
- Crie índices secundários e armazene colunas relacionadas, se necessário.
- Limite o tamanho da linha.
Entender os fatores de desempenho
Com a fragmentação automática e os dados armazenados posteriormente em divisões, quanto mais segmentada for uma consulta, melhor será o desempenho. Ao restringir para um único pai intercalado, todos os filhos terão um desempenho melhor do que as consultas ou operações que afetam várias linhas.
Recomendamos que você faça comparações e testes em grande escala para garantir que problemas e gargalos sejam descobertos antes do lançamento. O Spanner fornece planos de execução de consulta que podem ser usados com tabelas durante a criação do esquema para entender como as consultas provavelmente serão realizadas.
Outros fatores de desempenho a serem considerados:
- Prefira transações somente leitura a transações de leitura e gravação mais caras quando não estiver gravando dados.
- Projete seu aplicativo para minimizar o número de participantes divididos em uma transação. O Spanner pode realizar transações em linhas em diferentes servidores. No entanto, como regra geral, as transações que afetam muitas linhas colocalizadas são mais rápidas e mais baratas do que as transações que afetam muitas linhas espalhadas pelo banco de dados ou em uma tabela grande.
- Use parâmetros de consulta em vez de literais de string para melhorar o desempenho da consulta e o monitoramento de estatísticas.
Entender os limites e as cotas
Por motivos arquitetônicos e para manter o alto desempenho e a redundância, o Spanner tem determinadas cotas e limites que precisam ser considerados no design do aplicativo. As cotas podem ser aumentadas com um tempo de lead.
Por exemplo, há um limite de 80.000 mutações por confirmação e um máximo de 15 mesclas por consulta.
Esses limites, juntamente com o design do esquema e a prevenção de pontos de acesso, afetam o carregamento em massa. Portanto, verifique se as práticas recomendadas de carregamento em massa estão sendo seguidas.
Verificar se o monitoramento está em vigor
Configure o Cloud Monitoring para alertá-lo quando você estiver se aproximando dos limites.
Aumentar a quantidade da capacidade de computação se as métricas de desempenho forem alcançadas. para o escalonamento linear das instâncias do Spanner. Recomendamos manter a utilização da CPU abaixo de 65% para instâncias específicas da região e abaixo de 45% para instâncias multirregionais.
Use Modelos de consulta na página Consulta de um banco de dados para monitorar as estatísticas nas tabelas de estatísticas de consulta.
Ter uma estratégia de migração de dados (se necessário)
O carregamento em massa de dados no Spanner precisa levar em conta a arquitetura distribuída para manter o desempenho:
- Particione dados por chave primária
- Evite resistência e monitore a utilização da CPU
- A criação de índices secundários após o carregamento dos dados geralmente é mais rápida
Esta postagem do blog é um bom exemplo de implementação de gravações de alta capacidade.
Verificar se a configuração de segurança está em vigor
Configure papéis relevantes do IAM para gerenciar a segurança no nível do banco de dados e da instância. A segurança no nível da tabela precisa ser gerenciada no aplicativo.
Entender as opções de suporte
Verifique se você tem uma estratégia para receber suporte.