Árvore de páginas

A identificação de problemas de desempenho no PostgreSQL envolve a análise de diversos aspectos. Antes de qualquer alteração, confira 8 itens importantes para avaliar relativos à performance.

Informações complementares

Avaliar a performance do PostgreSQL requer uma abordagem holística, combinando monitoramento, análise de logs, e compreensão das consultas e operações do banco de dados. Sempre é benéfico iniciar com um diagnóstico completo antes de fazer quaisquer otimizações. A lista aqui definida busca auxiliar na atividade de análise e troubleshoot.

Links de referência

TDN: Instalação do PostgreSQL em Linux: 03. Ajustes para performanceUsando a view pg_stat_activity 

PostgreSQL: View pg_stat_statementsView pg_locksAutovacuumPlanner/OptimizerWrite-Ahead Logging (WAL)(GitHub) pgBadger

Atividade do Banco de Dados

  • Consultas lentas: Use o pg_stat_statements para identificar as consultas que mais consomem tempo.
  • Bloqueios: Verifique o pg_locks e pg_stat_activity para identificar bloqueios que podem estar causando contenção.  

Configuração do PostgreSQL

  • Tamanho da memória: shared_buffers, work_mem, maintenance_work_mem e outros parâmetros relacionados à memória devem ser configurados adequadamente conforme os recursos do sistema.
  • Configuração do WAL: Parâmetros como wal_buffers, wal_writer_delay e commit_delay podem influenciar a performance de gravação.
  • Para este cenário, recomendamos o artigo sobre performance.

Hardware e Sistema Operacional

  • Disco: I/O é frequentemente um gargalo. Monitore a latência e a taxa de transferência do disco. SSDs podem oferecer melhorias significativas.
  • CPU: Monitore a utilização da CPU. Se estiver constantemente alta, pode haver consultas ineficientes ou a necessidade de mais recursos.
  • RAM: Verifique se há uso excessivo de swap. O PostgreSQL desempenha melhor quando a maioria de seus dados e índices cabem na memória.

Autovacuum

  • Autovacuum é crucial para recuperar espaço e atualizar estatísticas. Se for muito lento ou executado com muita frequência, pode impactar o desempenho. Parâmetros como autovacuum_vacuum_scale_factor e autovacuum_analyze_scale_factor devem ser ajustados conforme necessário.

Estatísticas do Planner/Optimizer

  • As estatísticas desatualizadas podem fazer o planner/optimizer escolher planos de consulta subótimos. Garanta que o autovacuum esteja funcionando corretamente e considere aumentar o default_statistics_target para tabelas complexas.

Extensões e Módulos Externos

  • Algumas extensões ou módulos externos podem causar overhead. Avalie o impacto de cada extensão ativada.

Logs

  • Ative os logs de duração de consulta no postgresql.conf para identificar consultas lentas. Ferramentas como o pgBadger podem ajudar na análise dos logs.

Rede

  • Latência ou problemas de largura de banda podem afetar aplicações que fazem intensas operações de I/O no banco.


Sobre o diagnóstico

Avaliar a performance do PostgreSQL requer uma abordagem holística, combinando monitoramento, análise de logs, e compreensão das consultas e operações do banco de dados. Sempre é benéfico iniciar com um diagnóstico completo antes de fazer quaisquer otimizações.

  • Sem rótulos