Práticas recomendadas para melhorar a performance e a disponibilidade do AlloyDB

Esta página apresenta práticas recomendadas gerais para ajudar você a melhorar o desempenho, a durabilidade e a disponibilidade do AlloyDB para PostgreSQL. Esta página é destinada a administradores de bancos de dados e desenvolvedores que já conhecem o AlloyDB e o PostgreSQL.

Configuração e administração de instâncias

Usar ferramentas do AlloyDB para monitorar o uso e o status do banco de dados

Use a tabela a seguir para saber mais sobre as ferramentas do AlloyDB que ajudam a monitorar o uso, o status e o desempenho do banco de dados.

Ferramenta do AlloyDB Descrição
O relatório de resumo de performance Compara snapshots de métricas do sistema entre dois pontos diferentes no tempo.
Insights de consulta Ajuda a detectar, diagnosticar e evitar problemas de desempenho de consultas em bancos de dados do AlloyDB. Ele oferece autoatendimento, monitoramento intuitivo e informações de diagnóstico que vão além da detecção para ajudar você a identificar a causa raiz dos problemas de desempenho.
Insights do sistema Permite monitorar recursos e métricas de banco de dados, incluindo contagem de nós ativos, uso da CPU, picos de conexões, erros de registro, transações por segundo e atraso máximo de replicação.

Siga as diretrizes operacionais

Para garantir que suas instâncias estejam cobertas pelo SLA do AlloyDB para PostgreSQL, siga as diretrizes operacionais.

Configurar uma janela de manutenção para a instância principal

Configure uma janela de manutenção para sua instância principal e planeje quando as atualizações disruptivas podem ser feitas. Para mais informações, consulte Ver e definir horários de manutenção.

Adicionar instâncias do pool de leitura para descarregar o tráfego de leitura

Para cargas de trabalho com muita leitura, adicione instâncias do pool de leitura para descarregar o tráfego de leitura da instância principal.

Configure um ou mais pools de leitura para cada banco de dados na instância e melhore o armazenamento em cache.

Considere adicionar mais nós por pool para facilitar o balanceamento de carga automático e a alta disponibilidade.

Gerenciar atraso de replicação

O AlloyDB fez várias melhorias para reduzir o atraso na replicação. No entanto, você pode encontrar cenários em que a repetição de registros é bloqueada ou não consegue acompanhar, o que pode causar um aumento no atraso da replicação.

Por exemplo, se o tamanho da VM principal for muito maior do que o tamanho do nó do pool de leitura, em cargas de trabalho de gravação pesadas, a VM principal poderá gerar registros de log mais rápido do que os nós de leitura podem reproduzi-los, especialmente se também houver uma carga de trabalho de leitura pesada sendo executada simultaneamente nos nós de leitura. Nesse cenário, pode ser útil aumentar o tamanho do nó de leitura para dar mais recursos a ele.

Dependendo das necessidades do aplicativo, talvez seja necessário ajustar os seguintes parâmetros:

Não inicie uma operação administrativa antes que a operação anterior seja concluída.

As instâncias do AlloyDB não aceitam novas solicitações de operação até que a operação anterior seja concluída. Se você tentar iniciar uma nova operação antes da conclusão da anterior, a solicitação vai falhar. Isso inclui reinicializações de instâncias.

O status da instância no console do Google Cloud não reflete se uma operação está em execução. A marca de seleção verde indica apenas se a instância está no estado RUNNABLE. Para saber se uma operação está em execução, clique em Operações no painel de navegação à esquerda e verifique o status da operação mais recente.

Configure uma cota de armazenamento suficiente para acomodar a manutenção crítica do banco de dados

Por padrão, é possível usar até 16 TB de armazenamento por cluster. Se você precisar de mais armazenamento, considere aumentar sua cota.

Evite o uso excessivo da CPU

Veja a porcentagem de CPU disponível que sua instância está usando na página de detalhes da instância no console Google Cloud . Para mais informações, consulte Monitorar instâncias. Também é possível monitorar o uso da CPU e receber alertas em um limite especificado usando Criar políticas de alertas de limite de métrica.

Para evitar o uso excessivo, escale a instância para um número maior de CPUs. É necessário reiniciar a instância para alterar as CPUs. Se a instância já estiver com o número máximo de CPUs, recomendamos que você fragmente o banco de dados em várias instâncias.

Evitar exaustão de memória

O AlloyDB tem gerenciamento automático de memória para evitar problemas de falta de memória. No entanto, a pressão constante da memória pode causar problemas de desempenho. Ao procurar sinais de esgotamento da memória, use principalmente a métrica uso. Recomendamos que essa métrica permaneça abaixo de 90% para um desempenho ideal.

Também é possível usar a métrica total_usage para observar a porcentagem da memória disponível que sua instância do AlloyDB está usando, incluindo a memória usada pelo contêiner do banco de dados e a memória alocada pelo cache do sistema operacional.

Ao observar a diferença entre as métricas de uso e uso total, é possível identificar a quantidade de memória que é utilizada pelos processos em comparação com a quantidade de cache usada pelo sistema operacional. É possível reaproveitar a memória nesse cache.

Dimensione a instância do AlloyDB para aumentar o tamanho da memória. É necessário reiniciar a instância para alterar o tamanho dela. Se a instância já estiver no tamanho máximo de memória, será necessário fragmentar seu banco de dados em várias instâncias.

Para mais informações sobre como monitorar o uso e as métricas de uso total no console do Google Cloud , consulte Monitorar instâncias.

Verifique se a instância tem os IDs de transação ideais

Para ver o uso do ID de transação da instância, acesse a página do Metrics Explorer no console do Google Cloud . Defina Resource Type como AlloyDB for PostgreSQL Database e Metric como Percentage of instance's transaction IDs consumed. Para mais informações, consulte Criar gráficos com o Metrics Explorer.

O AlloyDB tem um autovacuum adaptável integrado que ajuda a reduzir problemas relacionados ao vacuum.

Arquitetura de dados

Divida suas instâncias grandes em instâncias menores, quando possível.

Quando possível, use vários clusters menores do AlloyDB em vez de uma instância grande. Gerenciar uma instância grande e monolítica apresenta desafios que não existem quando se usa um grupo de instâncias menores.

Não use muitas tabelas de banco de dados

Mantenha a contagem da tabela de instâncias abaixo de 10.000. Um número muito grande de tabelas de banco de dados pode afetar o tempo de upgrade.

Desempenho da consulta

Ative o mecanismo colunar se você executar consultas analíticas

Leia uma visão geral do mecanismo de colunas do AlloyDB. Verifique os tipos de consultas que se beneficiam da ativação do mecanismo de colunas.

É possível monitorar o uso do mecanismo de colunas.

Se você não conhece o mecanismo colunar, comece se familiarizando com a colunação automática. Em seguida, você pode gerenciar as colunas manualmente.

Aumentar a escala da instância para melhorar a performance da consulta

Se você estiver com baixo desempenho de consulta, considere escalonar sua instância.

Cada SKU tem configurações limitadas de vCPU e memória, além de cache rápido limitado. Se o tamanho dos dados for grande e você estiver enfrentando um desempenho ruim das consultas, considere aumentar a escala para uma instância maior.

Implantar pools de leitura e descarregar consultas de leitura para o pool de leitura

Se o aplicativo realizar muitas gravações e leituras, considere implantar pools de leitura e descarregar consultas de leitura para o pool de leitura.

Para cargas de trabalho com muita leitura, adicione instâncias do pool de leitura para descarregar o tráfego de leitura da instância principal.

Implementação do aplicativo

Use boas práticas de gerenciamento de conexão

Use as práticas recomendadas de gerenciamento de conexão, como o pooling de conexões e a espera exponencial.

Usar boas técnicas de gerenciamento de conexões melhora o uso de recursos do aplicativo e ajuda você a permanecer dentro dos limites de conexão do AlloyDB.

Teste a resposta do aplicativo a atualizações de manutenção

Teste a resposta do aplicativo às atualizações de manutenção, que podem acontecer a qualquer momento durante a janela de manutenção.

É possível simular uma atualização de manutenção realizando operações de escalonamento de computação ou atualizando flags estáticas do PostgreSQL, o que aciona uma manutenção com baixo tempo de inatividade (LDTM, na sigla em inglês).

Durante a LDTM, sua instância fica indisponível por um breve período, e as conexões atuais são descartadas. Testar o LDTM permite uma melhor compreensão de como seu aplicativo lida com a manutenção programada e com que rapidez o sistema pode se recuperar.

Teste a resposta do aplicativo a failovers

Teste a resposta do aplicativo a failovers, que podem acontecer a qualquer momento.

É possível iniciar manualmente um failover usando o console Google Cloud , a Google Cloud CLI ou a API. Para mais informações, consulte Como iniciar um failover.

Evite transações grandes

Faça transações pequenas e curtas. Se for necessária uma grande atualização de banco de dados, faça isso em várias transações menores, em vez de em uma transação grande.

Evite um grande número de subtransações

Evite um grande número de subtransações em uma transação quando houver transações de longa duração.

No AlloyDB, realizar uma transação em um bloco de erros PL/pgSQL cria subtransações da transação correspondente ao bloco de erros. O desempenho geral do sistema diminui se o número de subtransações exceder 64 na presença de transações de longa duração.

Usar a versão mais recente do proxy de autenticação

Se você estiver usando o proxy de autenticação do AlloyDB, verifique se está usando a versão mais recente. Para mais informações, consulte Manter o cliente do proxy de autenticação atualizado.

Importação e exportação de dados

Restaurar de backups do Cloud SQL para PostgreSQL para migração

Para facilitar a migração, consulte Migrar do Cloud SQL para PostgreSQL para o AlloyDB.

Para saber como migrar dados do Cloud SQL para PostgreSQL para o AlloyDB usando a replicação contínua de dados, consulte Database Migration Service para PostgreSQL para AlloyDB.

Acelerar as importações para instâncias pequenas

Ao importar conjuntos de dados grandes para instâncias pequenas, você pode aumentar temporariamente a CPU e a RAM de uma instância para melhorar o desempenho.

Backup e recuperação

Proteja seus dados usando os recursos adequados do AlloyDB

Use backups, recuperação pontual (PITR) e exportações para redundância e proteção. Cada uma protege contra diferentes cenários e se complementam em uma estratégia robusta de proteção de dados.

Os backups são leves e fornecem uma forma de restaurar os dados na instância para o estado em que você fez o backup. No entanto, o recurso de backup do AlloyDB tem algumas limitações. Se você excluir a instância, os backups também serão excluídos. Não é possível fazer backup de um único banco de dados ou tabela. E se a região em que a instância está localizada estiver indisponível, não será possível usar o backup para restaurá-la, nem mesmo em uma região disponível.

A recuperação pontual ajuda a recuperar uma instância em um momento específico. Por exemplo, se houver perda de dados devido a um erro, será possível recuperar um banco de dados no estado anterior a esse evento. Uma recuperação pontual sempre cria uma instância nova. Não é possível executar esse processo em uma instância atual.

As exportações levam mais tempo para serem estruturadas. Isso ocorre porque um arquivo externo que pode ser usado para refazer seus dados é criado no Cloud Storage. Elas não serão afetadas se você excluir a instância. Além disso, é possível exportar apenas um banco de dados ou tabela, dependendo do formato de exportação.

Proteja sua instância e seus backups contra exclusão acidental

Para ativar a prevenção padrão contra exclusão acidental, crie uma instância do AlloyDB usando o console Google Cloud ou o Terraform.

Use o recurso de exportação no AlloyDB para exportar seus dados e aumentar a proteção. Use o Cloud Scheduler com a API Cloud Scheduler para automatizar o gerenciamento de exportações.

Para cenários mais avançados, use o Cloud Scheduler com o Cloud Run functions para automação.