Esta página fornece uma estratégia para planear e executar uma prova de conceito (POC) com o Spanner. Fornece referências detalhadas e estatísticas sobre aspetos cruciais de um POC, como a configuração de instâncias, a conceção de esquemas, o carregamento de dados e a avaliação do desempenho. Realça os passos essenciais para avaliar as capacidades do Spanner e ajuda a identificar potenciais riscos e vantagens associados à adoção do Spanner.
Além de validar as capacidades técnicas do Spanner, uma POC tem dois objetivos:
- Para ajudar a compreender as vantagens que o Spanner oferece para o seu exemplo de utilização
- Para ajudar a identificar os riscos associados à adoção do Spanner
Uma POC do Spanner abrange várias facetas de avaliação, cada uma personalizada para abordar os seus objetivos empresariais e técnicos específicos, conforme mostrado no diagrama seguinte.
As diretrizes neste documento ajudam a avaliar cada uma destas áreas.
O desempenho e a escalabilidade ajudam a compreender como o Spanner processa cargas de trabalho específicas, requisitos de latência e o impacto de várias configurações de instâncias. Estes testes podem demonstrar a capacidade de escalabilidade perfeita do Spanner.
As capacidades de monitorização ajudam a avaliar se o Spanner fornece as estatísticas necessárias para operações de base de dados eficazes. Esta avaliação inclui:
- Opções para analisar planos de execução de consultas
- Utilização de recursos do sistema
- Opções para configurar alertas
Um POC pode revelar lacunas que têm de ser colmatadas para otimizar totalmente a eficiência operacional.
A segurança e a conformidade são fundamentais para determinar a adequação do Spanner à sua organização. Isto inclui avaliações para garantir que o Spanner pode mitigar os riscos de segurança, ao mesmo tempo que oferece vantagens de conformidade robustas, como as seguintes:
- Opções de encriptação, como CMEK ou EKM para dados em trânsito e em repouso
- Postura de controlo de acesso de menor privilégio
- Registo de auditoria
- Cumprimento dos requisitos regulamentares
As capacidades de cópia de segurança e recuperação de desastres (RD) são essenciais para garantir a resiliência operacional e de dados. Um POC pode validar as funcionalidades de DR do Spanner, como a recuperação num determinado momento e a disponibilidade.
A viabilidade da migração envolve a compreensão da complexidade da transição da sua solução de base de dados atual para o Spanner. A avaliação da compatibilidade do esquema, das ferramentas de migração e das alterações à aplicação ajuda a quantificar os investimentos necessários e a determinar os riscos e as vantagens da adoção do Spanner.
Durante a avaliação, recomendamos que explore o conjunto de funcionalidades do Spanner para garantir que cumpre os requisitos funcionais da sua aplicação. Isto pode incluir testar a sua consistência global, capacidades de consulta SQL ou integração com outros serviços do Google Cloud.
Embora as avaliações possam realçar os pontos fortes únicos do Spanner, como a consistência entre regiões, também podem revelar potenciais riscos, como os esforços de integração com a arquitetura da sua aplicação existente.
Ciclo de vida das atividades de POC
Esta POC explica os seguintes passos. Siga as recomendações neste documento para configurar e avaliar o Spanner para o seu exemplo de utilização específico.
Planeie o seu POC
A base de um POC bem-sucedido reside na definição de objetivos claros e mensuráveis que se alinham com as prioridades técnicas e empresariais. Evite objetivos vagos, como explorar o potencial do Spanner, uma vez que levam frequentemente a esforços desfocados e resultados ambíguos. Em alternativa, associe os objetivos da POC a alvos concretos, como alcançar uma disponibilidade de 99,999%, reduzir o tempo de inatividade ou dimensionar para processar um aumento de 200% no débito, mantendo as latências das transações abaixo de 20 ms.
A arquitetura exclusiva do Spanner é ideal para cargas de trabalho que exigem escalabilidade massiva, por isso, avaliar a escalabilidade para o seu exemplo de utilização é um bom ponto de partida. Os cenários de teste devem incluir:
- Processamento de cargas operacionais típicas
- Gerir picos de tráfego
- Reduzir a escala de forma eficiente
Estes testes ajudam a compreender o desempenho do Spanner em diferentes condições e se cumpre os seus requisitos técnicos de escalabilidade. Os objetivos específicos e acionáveis não só ajudam a estruturar o POC, como também criam uma base sólida para avaliar o sucesso.
Defina uma rubrica de avaliação quantificada
Uma grelha de avaliação composta por métricas claras e mensuráveis e critérios de sucesso discretos é essencial para concluir se o POC atingiu os respetivos objetivos. Por exemplo, em vez de testar apenas o desempenho, também deve especificar objetivos como:
- Publicar CPS (consultas por segundo) específicos ao nível da produção
- Manter latências inferiores a 20 ms em cargas de pico predefinidas
- Processar picos de tráfego claramente definidos sem degradação do desempenho
Os critérios bem definidos ajudam a avaliar o Spanner objetivamente para a sua carga de trabalho e fornecem estatísticas acionáveis para os passos seguintes. Seja específico e defina alvos de percentis para a latência das operações de leitura e escrita (como p50 e p95). Uma definição clara dos limites de latência aceitáveis ajuda a criar testes de desempenho do Spanner que se alinham com as necessidades da sua empresa.
Um exemplo de uma rubrica de avaliação pode ter o seguinte aspeto:
Facetas de avaliação | Critérios de sucesso |
Disponibilidade | 99,999% |
Segurança | CMEK com um EKM obrigatório |
Garantia do objetivo de ponto de recuperação (OPR) em caso de interrupção regional | 0 |
Limite de latência para as transações mais críticas | p50 abaixo de 20 ms |
Latência para as nossas consultas mais críticas orientadas para o utilizador | p50 abaixo de 100 ms |
Escalabilidade | Demonstrar que o aumento de 10 000 transações por segundo para 100 000 transações por segundo com uma latência p50 inferior a 20 ms é possível ao longo de uma hora |
Defina o âmbito dos casos de avaliação
Um POC não deve exigir uma migração em grande escala. Em alternativa, concentre-se em testar cargas de trabalho representativas ou componentes críticos do seu sistema. Por exemplo, identifique consultas importantes, formas de transação críticas ou fluxos de trabalho específicos baseados em dados que sejam essenciais para as suas operações. Restrinja o âmbito para reduzir a complexidade e, ao mesmo tempo, garantir que os resultados são relevantes e significativos. Esta abordagem oferece uma forma gerível de avaliar as capacidades do Spanner sem ficar sobrecarregado com as complexidades de uma migração de sistema completa.
Escolha uma configuração da instância do Spanner
Quando cria uma instância do Spanner para fins de avaliação, escolha uma configuração da instância que satisfaça os requisitos da sua empresa para a localização geográfica e o SLA de disponibilidade do serviço. O Spanner oferece várias configurações, incluindo região única, multirregião e duas regiões. Cada configuração foi concebida para satisfazer diferentes requisitos de latência, disponibilidade e redundância.
- As configurações de região única armazenam dados numa região do Google Cloud, oferecendo baixa latência nessa região e rentabilidade. Estas topologias são ideais para cargas de trabalho que requerem redundância zonal intrarregional que oferece uma disponibilidade de 99,99%.
- As configurações de duas regiões replicam dados em duas regiões num único país com uma réplica de testemunha em cada região para failovers. Esta configuração oferece maior disponibilidade (99,999%) e tolerância a falhas do que uma configuração de região única. Estas topologias são adequadas para cargas de trabalho com conformidade rigorosa (como residência dos dados) ou requisitos de proximidade geográfica.
- As configurações multirregionais replicam dados em várias regiões, garantindo uma disponibilidade e uma resiliência muito elevadas a interrupções regionais. Estas topologias são ideais para aplicações que requerem redundância geográfica com uma disponibilidade de até 99,999%.
Considerações sobre a latência em instâncias entre regiões
Nas configurações de duas e várias regiões, a distribuição geográfica das réplicas do Spanner pode influenciar a latência. A latência de escrita depende da proximidade da região principal, que coordena as transações de leitura/escrita, e das outras regiões, que confirmam cada operação de escrita. A colocação dos recursos de computação da sua aplicação perto da região principal reduz os atrasos de ida e volta e minimiza a latência.
Pode modificar a região principal de uma base de dados para se alinhar com as necessidades da sua aplicação. Para operações só de leitura, o Spanner pode publicar leituras desatualizadas a partir da réplica mais próxima, reduzindo a latência, enquanto as leituras fortes podem envolver a região principal, o que pode aumentar a latência da operação. Para otimizar a latência em configurações multirregionais, escolha estrategicamente a região principal, coloque os recursos de computação dos seus serviços na mesma localização que a região principal e tire partido das leituras desatualizadas para cargas de trabalho com muitas leituras.
Configurações que cumprem os requisitos da sua aplicação
Quando seleciona uma configuração de instância para a sua aplicação, considere fatores como a disponibilidade, a latência e os requisitos de residência dos dados. Por exemplo, se a sua aplicação exigir respostas de baixa latência para utilizadores numa área geográfica específica, uma instância regional pode ser suficiente. No entanto, para aplicações que exigem uma maior disponibilidade ou atendem a utilizadores distribuídos globalmente, as configurações multirregionais seriam mais adequadas.
Comece com uma configuração que se alinhe estreitamente com os requisitos de produção da sua aplicação para avaliar o desempenho. Tenha em atenção que a latência e os custos variam entre as configurações, por isso, personalize o seu ambiente de POC para refletir as necessidades do seu exemplo de utilização. Para implementações multirregionais, simule a distribuição geográfica de serviços e teste a latência para garantir que a configuração está alinhada com os requisitos de produção. Para mais detalhes, consulte as orientações de posicionamento do líder multirregional do Spanner.
Dimensionamento do Spanner
Aprovisione a capacidade de computação inicial para a sua instância do Spanner para garantir que consegue processar a carga de trabalho de avaliação de forma eficaz durante o POC. O tamanho inicial da instância deve estar alinhado com a carga de trabalho esperada, tendo em conta a combinação de consultas de leitura e gravação por segundo (CPS), a complexidade das consultas e os níveis de simultaneidade.
Começar com uma suposição razoável permite-lhe estabelecer uma base e aumentar gradualmente a escala com base no desempenho observado. Pode usar as orientações de dimensionamento das referências de testes de desempenho do Spanner para estabelecer uma configuração de instância de base.
O dimensionamento durante um POC deve ser iterativo. Comece com uma configuração inicial e, em seguida, monitorize as principais métricas, como a latência e a utilização da CPU, e ajuste a capacidade de computação atribuída conforme necessário. Isto garante que pode validar a escalabilidade e as capacidades de desempenho do Spanner enquanto replica condições semelhantes ao seu ambiente de produção.
Os padrões de carga de trabalho típicos, como o tráfego consistente em comparação com a procura flutuante, devem influenciar a sua abordagem de dimensionamento. Quando ativa a escala automática, o Spanner aprovisiona dinamicamente a capacidade dos recursos de computação para corresponder à intensidade da carga de trabalho.
Design de esquemas
A conceção do esquema é um aspeto crítico de um POC do Spanner, porque a forma como organiza os dados pode afetar diretamente o desempenho e a escalabilidade.
Um esquema bem concebido é fundamental para demonstrar as capacidades do Spanner numa POC. Os testes de carga revelam frequentemente potenciais estrangulamentos ou ineficiências, informando os refinamentos iterativos que criam um esquema ideal.
Crie em função da escalabilidade
Quando cria um esquema de base de dados para o Spanner, é essencial ter em conta a sua arquitetura distribuída. Algumas considerações e otimizações importantes incluem o seguinte:
- Chaves primárias: escolha chaves primárias que distribuam os dados uniformemente pelo espaço de chaves, evitando chaves que aumentam monotonicamente, como as datas/horas, que podem causar pontos críticos nas divisões.
- Índices: crie índices para otimizar o desempenho das consultas, tendo em atenção o respetivo impacto no desempenho de gravação e nos custos de armazenamento. Demasiados índices ou índices mal planeados podem introduzir uma sobrecarga desnecessária.
- Intercalação de tabelas: use a intercalação de tabelas para otimizar os padrões de acesso para dados relacionados. Isto pode reduzir a comunicação entre processos e melhorar a eficiência das consultas.
Consulte as práticas recomendadas de criação de esquemas do Spanner para evitar erros comuns e criar um esquema que suporte um elevado desempenho e escalabilidade.
Pode criar um esquema de rascunho na Google Cloud consola, conforme mostrado na imagem seguinte.
Migração de esquemas com a ferramenta de migração do Spanner
A ferramenta de migração do Spanner (SMT) pode simplificar a criação de esquemas quando migra de bases de dados relacionais, incluindo MySQL ou PostgreSQL. A SMT automatiza a geração de esquemas e inclui otimizações básicas, como sugerir índices e ajustes de esquemas. Embora o SMT ofereça um bom ponto de partida, são frequentemente necessários refinamentos manuais para alinhar o esquema com os seus exemplos de utilização ou padrões de carga de trabalho específicos.
Use um processo de design de esquema iterativo
Embora um esquema inicial ofereça um ponto de partida, é pouco provável que seja perfeito. A criação de esquemas para um POC não é uma tarefa única, mas sim um processo iterativo que evolui à medida que obtém estatísticas dos seus testes. Um esquema robusto é essencial para o desempenho da aplicação. Para o conseguir, é necessário um design inicial bem pensado, tirar partido de ferramentas como o SMT e um refinamento iterativo com base nos resultados dos testes de carga. Ao seguir este processo, pode garantir que o seu esquema cumpre eficazmente as exigências da sua aplicação. Também aprende a tirar o melhor partido das funcionalidades do Spanner.
Carregamento de dados
Uma POC bem-sucedida do Spanner depende do carregamento de dados representativos na base de dados para validar a estrutura do esquema e simular fluxos de trabalho da aplicação. Existem várias ferramentas recomendadas que podem simplificar este processo. Para carregar os seus próprios dados, o Spanner oferece as seguintes opções:
- A extração, transformação e carregamento (ETL) inversos do BigQuery para o Spanner é um mecanismo de carregamento de dados integrado e fácil de usar que lhe permite usar transformações baseadas em SQL para carregar dados para o Spanner. Este método é ideal para uma vasta gama de formatos de dados, incluindo dados semiestruturados, como JSON.
- Para bases de dados relacionais, como MySQL e PostgreSQL, a ferramenta de migração do Spanner (SMT) automatiza a criação de esquemas, o mapeamento de tipos de dados e o carregamento de dados em massa.
- Para formatos de ficheiros simples, a Google fornece modelos do Dataflow para CSV para Spanner e Avro para Spanner para criar definições de esquemas manuais para o carregamento de dados em massa. Para bases de dados compatíveis com JDBC, a Google fornece o modelo do Dataflow JDBC para o Spanner.
Para mais informações sobre estas opções, consulte o artigo Use os seus próprios dados.
Se não estiverem disponíveis dados de amostra, pode usar ferramentas de geração de dados sintéticos, como o JMeter da Machmeter e o QuickPerf, para ajudar a criar conjuntos de dados adaptados ao seu esquema e exemplo de utilização. Para mais informações, consulte o artigo Gere dados de amostra.
Inclua os seus próprios dados
Se tiver dados de exemplo disponíveis que queira usar para o POC, tem várias opções para carregar esses dados para o Spanner.
Fonte | Ferramenta | Criação de esquemas | Transformações | Tamanho dos dados |
MySQL | SMT | automático | Apenas conversão do tipo de dados | pequeno |
PostgreSQL | SMT | automático | Apenas conversão do tipo de dados | pequeno |
Qualquer JDBC | JDBC para o Spanner | manual | Apenas conversão do tipo de dados | grande |
CSV | CSV para o Spanner | manual | Apenas conversão do tipo de dados | grande |
ETL inverso do BigQuery | manual | Transformações complexas suportadas | grande | |
Avro | Avro para Spanner | manual | Apenas conversão do tipo de dados | grande |
ETL inverso do BigQuery | manual | Transformações complexas suportadas | grande | |
JSON | ETL inverso do BigQuery | manual | Transformações complexas suportadas | grande |
ETL inverso do BigQuery para o Spanner
A ETL inversa do BigQuery para o Spanner permite carregar rapidamente uma vasta gama de origens de dados e transformá-las em tabelas do BigQuery através de SQL. Em seguida, pode exportar dados da tabela do BigQuery para uma tabela do Spanner. É particularmente útil para dados semiestruturados, como JSON, que muitas vezes têm origem em exportações de origens de dados NoSQL. Embora o BigQuery tenha a deteção automática de esquemas implementada, a criação de esquemas do Spanner é manual, o que exige que defina o esquema antes de carregar os dados.
Ferramenta de migração do Spanner
Para iniciar rapidamente a sua POC, pode usar a ferramenta de migração do Spanner (SMT) para migrar dados de origens MySQL e PostgreSQL para o Spanner. A SMT automatiza o processo de criação de esquemas, mapeando os tipos de dados da base de dados de origem para os respetivos tipos equivalentes no Spanner. Também faz recomendações de otimização de esquemas específicas do Spanner. Isto torna-o particularmente útil para migrações simples em que a conversão automática do esquema é suficiente.
A SMT oferece uma interface do utilizador que lhe dá orientações ao longo do processo de migração. Durante este processo, seleciona a base de dados de origem e revê as recomendações e as opções de conceção do esquema.
Modelos do Dataflow
O Dataflow é um serviço totalmente gerido concebido para o processamento de dados escalável, o que o torna uma escolha adequada para carregar grandes quantidades de dados.
A Google fornece os seguintes modelos de código aberto para padrões de carregamento comuns:
- CSV para Spanner carrega dados de ficheiros CSV armazenados no Cloud Storage para o Spanner.
- Avro para Spanner carrega ficheiros de dados Avro existentes do Cloud Storage.
- JDBC para o Spanner carrega dados de bases de dados que suportam JDBC.
Cada um destes modelos requer que crie manualmente o esquema do Spanner antes de iniciar o carregamento de dados.
O Dataflow é dimensionado automaticamente para acomodar conjuntos de dados de qualquer tamanho, garantindo a ingestão de dados de alto desempenho no Spanner, mesmo para conjuntos de dados à escala de terabytes. Esta escalabilidade é fornecida à custa de algumas compromissos:
- Os pipelines do Dataflow requerem configuração manual para definir o esquema, o mapeamento de dados e os parâmetros de execução para uma execução ideal.
- O Dataflow oferece a flexibilidade e a potência necessárias para migrações de dados em grande escala, mas pode exigir mais esforço para configurar e gerir do que outras ferramentas.
Gere dados de amostra
Se não tiver dados de amostra, mas tiver um exemplo de utilização específico em mente, pode modelar o esquema com base nos seus requisitos e usar ferramentas para gerar conjuntos de dados representativos. Estas ferramentas permitem-lhe preencher o Spanner com dados significativos para validar a estrutura do esquema e os fluxos de trabalho da aplicação.
JMeter da Machmeter
JMeter da Machmeter oferece exemplos que usam o JMeter para gerar dados de amostra para o Spanner. O foco do Machmeter em exemplos orientados por casos de utilização torna-o um excelente ponto de partida para gerar padrões de dados estruturalmente semelhantes ao seu esquema de produção esperado. Os exemplos fornecidos incluem scripts para inserções em massa e outras operações. Pode adaptar os scripts para gerar conjuntos de dados sintéticos em grande escala. Para mais informações, consulte o repositório do Machmeter ou a documentação.
QuickPerf
O QuickPerf é distribuído com o controlador JDBC do Spanner. O QuickPerf fornece scripts baseados em SQL que criam rapidamente conjuntos de dados representativos para testar a integridade do esquema e o comportamento da base de dados. Esta é uma escolha que requer pouco esforço para gerar rapidamente conjuntos de dados de tamanho pequeno a médio que são menos complexos.
Testes de carga
Os testes de carga permitem-lhe observar o desempenho do Spanner ao processar cargas de trabalho para garantir que a sua base de dados tem a configuração ideal para as exigências de produção. Duas ferramentas apresentadas anteriormente, o JMeter da Machmeter e o QuickPerf, são particularmente eficazes para simular cargas de trabalho e medir métricas de desempenho, como o débito, a latência e a utilização de recursos.
O Apache JMeter, melhorado através do projeto Machmeter, oferece uma estrutura poderosa para testes de carga distribuídos com o Spanner. O Machmeter inclui configurações do JMeter pré-criadas concebidas especificamente para simular cargas de trabalho do Spanner. Estas configurações podem ser personalizadas para executar consultas, transações e operações em lote representativas, o que lhe permite medir o desempenho do Spanner em diferentes cenários.
A capacidade do JMeter de simular utilizadores e transações simultâneas torna-o uma boa escolha para testar a escalabilidade e a resiliência da sua instância do Spanner. Pode implementar o JMeter num modo distribuído através do Kubernetes ou do serviço gerido GKE para dimensionar o seu ambiente de teste. Os resultados oferecem estatísticas sobre a forma como o Spanner gere cargas de trabalho específicas, é dimensionado em função do aumento da procura e tem um bom desempenho durante os picos de carga.
Para mais informações e configurações de exemplo, consulte o repositório do Machmeter.
QuickPerf é uma ferramenta de testes de referência leve concebida para testes de desempenho com o Spanner. Foca-se na geração de métricas de desempenho com uma configuração mínima, o que lhe permite iterar rapidamente nas otimizações. O QuickPerf é fácil de configurar e é particularmente adequado para testes de menor escala e cenários em que quer medir rapidamente o impacto no desempenho de otimizações específicas de esquemas ou consultas.
Práticas recomendadas para testes de carga
Ao realizar testes de carga, é fundamental seguir as práticas recomendadas do Spanner para garantir resultados precisos e acionáveis.
- Período de preparação: permita um período de preparação (normalmente, 30 minutos ou mais) para que o Spanner atinja um estado estável após o dimensionamento de nós ou a introdução de uma nova carga de trabalho.
- Meça as métricas relevantes: foque-se em métricas como a taxa de transferência (operações por segundo), os percentis de latências (por exemplo, p50 e p95) e a utilização da CPU para compreender como o Spanner processa a sua carga de trabalho.
- Execute testes de referência longos: para obter resultados mais representativos, execute os testes de carga durante períodos prolongados (por exemplo, mais de uma hora) para ter em conta os comportamentos do sistema, como o reequilíbrio e as tarefas de manutenção em segundo plano.
- Testes de escalabilidade: teste cenários de aumento e diminuição da escala para observar o comportamento do Spanner em diferentes configurações de nós e picos de carga.
Pode usar ferramentas como o JMeter Machmeter e o QuickPerf, juntamente com as práticas recomendadas para testes de carga, para avaliar eficazmente o desempenho do Spanner, identificar gargalos e otimizar a sua base de dados de forma a satisfazer as exigências da sua carga de trabalho.
Monitorização
Para demonstrar eficazmente o desempenho e a escalabilidade do Spanner durante um POC, especialmente sob carga, tem de ter um conhecimento profundo das respetivas características operacionais. O Spanner oferece um conjunto abrangente de ferramentas de monitorização e diagnóstico concebidas para lhe dar informações detalhadas sobre todos os aspetos do desempenho da sua base de dados. Este conjunto de ferramentas oferece uma variedade de recursos, desde painéis de controlo de métricas a tabelas de sistema detalhadas, que ajudam a identificar gargalos, validar as escolhas de design e otimizar o desempenho.
As estatísticas do sistema oferecem observabilidade detalhada do desempenho e do estado operacional de uma instância do Spanner. Oferece métricas e estatísticas em várias áreas, incluindo a utilização da CPU, a latência, a taxa de transferência e muito mais, a níveis de detalhe ajustáveis. Durante um POC, este é o ponto de partida para observar o comportamento do Spanner durante os testes. As estatísticas do sistema permitem-lhe identificar rapidamente gargalos de desempenho, como a utilização elevada da CPU ou o aumento das latências de leitura ou escrita. Estabelece a base para investigações subsequentes.
As Estatísticas de consultas oferecem uma vista de cima para baixo da execução de consultas, começando pela identificação das consultas mais frequentes e dispendiosas com base em métricas como o tempo de CPU, a contagem de execuções e a latência média. Analisando mais detalhadamente, as estatísticas de consultas permitem-lhe examinar planos de execução detalhados, incluindo estatísticas para cada passo da consulta, e identificar operações específicas que causam lentidão. Também oferece funcionalidades que investigam as tendências do histórico de desempenho e comparam o desempenho das consultas em diferentes períodos. Isto ajuda a identificar regressões ou o impacto das alterações ao esquema e ao código. As ferramentas adicionais, como o consultor de índices, analisam as suas consultas para recomendar índices novos ou alterados que podem melhorar o desempenho das consultas.
As estatísticas de transações dão visibilidade do desempenho das transações com métricas detalhadas sobre a latência das transações, os tempos de espera de confirmação, o número de linhas e bytes lidos e escritos, e os participantes em transações distribuídas. Estas métricas revelam transações com latência elevada ou anuladas e fornecem detalhes sobre as respetivas caraterísticas. Durante um teste de carga da POC, as estatísticas de transações são essenciais para avaliar a eficiência transacional do sistema sob pressão. Permite-lhe monitorizar e identificar qualquer degradação à medida que a carga aumenta. A análise de transações individuais ajuda a identificar as causas das desacelerações, como transações de longa duração que bloqueiam outras ou transações únicas que leem ou escrevem volumes de dados excessivamente grandes. As informações das estatísticas de transações permitem-lhe fazer ajustes direcionados, como otimizar os limites de transações, refinar as consultas nas transações ou ajustar o esquema para reduzir a quantidade de dados envolvidos nas transações típicas. Isto garante que o POC demonstra a capacidade do Spanner de manter a consistência transacional e o desempenho ao nível de carga esperado.
Estatísticas de bloqueio oferece visibilidade sobre o comportamento de bloqueio de transações, ajudando a identificar e resolver problemas de contenção de bloqueios. Apresenta informações sobre as esperas de bloqueio, incluindo os intervalos de chaves de linhas específicos que estão a causar o problema. Durante um teste de carga de POC, o bloqueio de estatísticas é crucial para identificar se os conflitos de bloqueio transacional estão a causar limitações de escalabilidade. À medida que o carregamento concorrente aumenta, as transações podem começar a competir para atualizar os mesmos dados, o que leva a um aumento dos tempos de espera e a uma redução da taxa de transferência. Estas informações ajudam na otimização do esquema, na modificação do limite de transação e nos ajustes da lógica da aplicação. Estas ações mitigam a contenção e garantem que a base de dados do Spanner mantém o desempenho sob a carga de trabalho projetada, evitando a degradação devido aos mecanismos de bloqueio.
Estatísticas de pontos críticos identificam gargalos de desempenho, especificamente o aumento da latência, que resultam de condições de pontos críticos. Os pontos críticos ocorrem normalmente quando existe uma carga elevada e desigual. Muitas vezes, as causas dos pontos críticos são:
- Design de esquema não ideal
- Seleção de chave principal
- Padrões de acesso que concentram operações num pequeno subconjunto de dados em vez de as distribuir uniformemente pelos nós
Durante um teste de carga de POC, as estatísticas de pontos críticos ajudam a decidir onde otimizar o seu esquema. Por exemplo, pode ter de ajustar as chaves primárias ou modificar os índices secundários para evitar pontos críticos.
O Key Visualizer oferece uma representação visual dos padrões de utilização da base de dados ao longo do tempo em todo o espaço de chaves de tabelas e índices. Gera mapas de calor que mostram a atividade de leitura e escrita, realçando áreas de alta intensidade e padrões potencialmente problemáticos. Durante um POC, esta ferramenta ajuda a validar a estrutura do esquema e a identificar potenciais limitações de escalabilidade. À medida que a carga aumenta, pode observar como a carga de trabalho é distribuída pelo seu espaço de chaves e pelas tabelas e índices respetivos.
As tabelas de introspeção, principalmente o respetivo sistema de tabelas Spanner_SYS
, fornecem muitas informações sobre o estado interno e o desempenho da base de dados. Estas tabelas expõem estatísticas detalhadas sobre a execução de consultas, o comportamento das transações, a contenção de bloqueios e os detalhes do esquema. Durante um teste de carga da POC, estas tabelas de introspeção oferecem uma abordagem baseada em dados para diagnósticos de desempenho, além do que as ferramentas de estatísticas mencionadas anteriormente oferecem. Por exemplo, pode usá-los para
resolver a causa principal de
conflitos de bloqueio na sua base de dados
que, de outra forma, seriam difíceis de detetar e obter estatísticas acionáveis para otimização.
Optimização
O teste de carga é um passo fundamental para identificar problemas de desempenho e potenciais restrições na sua implementação do Spanner. As estatísticas obtidas a partir destes testes devem orientar os esforços de otimização no design do esquema, no comportamento das transações e no desempenho das consultas para garantir que o Spanner cumpre as exigências da sua carga de trabalho.
Otimize o design do esquema
Embora um design de esquema inicial seja baseado em práticas recomendadas para escalabilidade e desempenho, a execução de cargas de trabalho em condições reais revela frequentemente áreas que requerem refinamento. Os testes de carga oferecem informações valiosas sobre o desempenho do esquema em condições específicas, realçando problemas como pontos críticos, distribuição desigual de dados ou ineficiências no desempenho das consultas.
A otimização centra-se no ajuste preciso das seguintes áreas para se alinhar com as características da carga de trabalho da sua aplicação.
- Ajustes da chave primária: se os testes de carga revelarem pontos críticos ou uma distribuição de dados desequilibrada, reveja a conceção da chave primária. Por exemplo, considere adicionar aleatoriedade no prefixo da chave para distribuir os dados de forma mais uniforme pelos nós, mantendo a eficiência das consultas.
- Refinamentos do índice: os testes de carga podem revelar se os índices redundantes ou a indexação excessiva estão a afetar negativamente o débito de gravação. Remova índices desnecessários ou reestruture os existentes para melhorar o desempenho das consultas. Avalie a seletividade do índice e certifique-se de que está alinhada com os padrões de consulta típicos.
- Tabelas e hierarquias intercaladas: analise se as tabelas relacionadas podem beneficiar da intercalação de tabelas para reduzir a latência das consultas. Ajuste as decisões de intercalação com base nos padrões de acesso observados durante os testes. Por outro lado, considere modelar essas tabelas separadamente se a estrutura hierárquica causar custos gerais inesperados.
Para obter informações sobre a criação de esquemas escaláveis, consulte as práticas recomendadas de design de esquemas do Spanner.
Otimize a semântica e as consultas de transações
Os testes de carga realçam frequentemente ineficiências na execução de transações e consultas, como problemas de contenção ou bloqueio elevados. Otimize a semântica das transações e as estruturas de consultas para maximizar o débito e minimizar a latência:
- Modos de transação: use o modo de transação adequado para cada operação de carga de trabalho. Por exemplo, use transações de leitura apenas para consultas que não modifiquem dados ou DML particionada para atualizações e eliminações em massa.
- Processamento em lote: sempre que possível, use operações de gravação em lote para reduzir a sobrecarga incorrida por várias viagens de ida e volta.
- Otimização de consultas: refatore as consultas para incluir apenas as colunas e as linhas necessárias, tire partido dos índices e use parâmetros de consulta na sua aplicação para reduzir a sobrecarga.
Para informações sobre estratégias de otimização, consulte a vista geral das transações e as práticas recomendadas de SQL.
Testes de carga iterativos
A otimização é um processo iterativo. Realize testes de carga após cada alteração significativa ao esquema ou à consulta para validar as melhorias e garantir que não são introduzidos novos gargalos.
Simule cenários de aplicação realistas com vários níveis de simultaneidade, tipos de transações e volumes de dados para confirmar que o Spanner tem o desempenho esperado em condições de pico e de estado estável.
Principais métricas a monitorizar
Monitorize métricas importantes, como a latência (p50, p99), o débito e a utilização da CPU durante a otimização.
O que se segue?
- Veja o vídeo Como planear e executar uma POC do Spanner para conhecer os passos essenciais, as práticas recomendadas e as ferramentas necessárias para avaliar eficazmente as capacidades do Spanner.