Quero evitar problemas de desempenho em aplicações ao atualizar meu banco de dados do Amazon Relational Database Service (Amazon RDS) para PostgreSQL.
Resolução
Configurar um ambiente de teste para a instância de produção do Amazon RDS para PostgreSQL
Para criar um ambiente de teste, você deve restaurar seu banco de dados a partir de um snapshot recente. Ou faça uma restauração pontual do seu banco de dados até o último horário restaurável e, em seguida, faça uma atualização para o snapshot recém-restaurado.
Conclua as etapas a seguir:
- Restaure seu banco de dados a partir de um snapshot recente ou execute uma restauração pontual.
- Execute a atualização da versão no banco de dados restaurado.
Realizar testes funcionais
Observação: para mais informações, consulte Atualizações do Amazon RDS para PostgreSQL e Migração para a versão 17.2 no site do PostgreSQL.
Quando você realiza uma atualização de versão principal, qualquer alteração de versão pode afetar a compatibilidade da aplicação. Por exemplo, uma alteração no gerenciamento de conexões no RDS para PostgreSQL pode causar a interrupção da aplicação se o parâmetro Max_connection não for ajustado adequadamente.
Para identificar qualquer problema de compatibilidade de versão, você deve testar a funcionalidade da aplicação com workloads semelhantes aos de produção no banco de dados de teste. Em seguida, é possível fazer as alterações necessárias no código da aplicação.
Realizar testes de desempenho
Definir o parâmetro de desempenho atual
Conclua as etapas a seguir:
- Habilite auto_explain no registro em log do plano de consulta. Para mais informações, consulte auto_explain no site do PostgreSQL.
Observação: para mais informações, consulte Como posso registrar em log planos de execução de consultas para Amazon RDS PostgreSQL ou Aurora PostgreSQL para ajustar o desempenho da consulta?
- Habilite o registro em log de consultas com duração. Para mais informações, consulte Como uso o Amazon RDS para ativar o registro em log de consultas para o PostgreSQL?
- Ative o Monitoramento avançado e Insights de Performance.
- Para obter uma comparação histórica do desempenho e do workload do banco de dados, exporte os logs do banco de dados para Logs do PostgreSQL para o Amazon CloudWatch.
Identificar problemas de desempenho
Para comparar estratégias de execução e custos entre as versões do banco de dados, use os planos de consulta EXPLAIN. Para monitorar e comparar os tempos reais de resposta de consultas e os padrões de utilização de recursos de versões mais antigas, use o registro em log de consultas e o Insights de Performance.
Conclua as etapas a seguir:
- Compare os planos EXPLAIN entre as versões. Para obter mais informações, consulte EXPLAIN no site do PostgreSQL.
- Para atualizar as estatísticas da tabela, use ANALYZE com aumento de default_statistics_target. Para mais informações, consulte ANALYZE no site do PostgreSQL.
- Para remover o “inchaço” do índice, use REINDEX. Para mais informações, consulte REINDEX no site do PostgreSQL.
- (Opcional) Para criar estatísticas estendidas para colunas correlacionadas, use o comando CREATE STATISTICS. Para mais informações, consulte CREATE STATISTICS no site do PostgreSQL.
Observação: use a extensão pg_hint_plan, se necessário.
Realizar testes de estresse
Conclua as etapas a seguir:
- Use o pgbench com scripts personalizados com base no workload da aplicação. Para mais informações, consulte pgbench no site do PostgreSQL.
- Para testar o comportamento do banco de dados e monitorar as métricas de desempenho sob uma carga alta, você deve aplicar um workload semelhante ao de produção. Para mais informações, consulte Observações e considerações de referência do PostgreSQL e Comparar o Amazon RDS para PostgreSQL com volumes de log dedicados.
Informações relacionadas
Configuração do método do planejador no site do PostgreSQL
Sobre as estatísticas no PostgreSQL
Como realizar uma atualização de versão principal do RDS para PostgreSQL