MBM Wiki

Parâmetros para melhora de desempenho do PostgreSQL

Você está aqui:
  • Home
  • Parâmetros para melhora de desempenho do PostgreSQL

Introdução

Para melhorar o desempenho e evitar travamentos no PostgreSQL, há diversos parâmetros que podem ser ajustados no arquivo de configuração postgresql.conf. Aqui estão alguns dos principais:

Em ambientes Windows, por padrão, o arquivo postgresql.conf está localizado no diretório “C:\Program Files\PostgreSQL\12\data”. Já em ambientes Linux, o mesmo está localizado em “/etc/postgresql/12/main/”.

Algumas das sugestões abaixo devem ser aplicadas baseando-se na quantidade total de memória RAM disponível no servidor, ou seja, o preenchimento dos parâmetros pode variar de caso para caso. Em caso de dúvidas, consulte seu departamento de TI.

shared_buffers

Define a quantidade de memória dedicada aos buffers compartilhados. Um bom ponto de partida é definir entre 25% a 40% da memória RAM total.

Exemplo: shared_buffers = 4GB

work_mem

Define a quantidade de memória alocada para operações de ordenação e junções (sorts e joins). Se esse valor for muito baixo, operações complexas podem usar swap, impactando o desempenho.

Exemplo: work_mem = 64MB (ajuste conforme as necessidades das consultas)

maintenance_work_mem

Usado para operações de manutenção, como VACUUM e CREATE INDEX. Pode ser configurado maior, especialmente em servidores dedicados a manutenção.

Exemplo: maintenance_work_mem = 512MB

effective_cache_size

Estimativa de quanta memória do sistema operacional está disponível para cache de disco, afetando o planejamento de execução de consultas. Normalmente, configura-se em torno de 50% a 75% da memória RAM total.

Exemplo: effective_cache_size = 12GB

max_connections

Defina conforme a carga de trabalho esperada. Um número muito alto de conexões pode sobrecarregar os recursos do sistema.

Exemplo: max_connections = 200

checkpoint_segments / checkpoint_timeout

Os checkpoints muito frequentes podem causar travamentos temporários. Aumentar o número de segmentos de checkpoints ou o tempo entre eles pode ajudar.


Exemplo: checkpoint_timeout = 15min e checkpoint_completion_target = 0.9

wal_buffers

Memória usada para escrever no log de transações (WAL). Para cargas de escrita intensa, aumentar esse valor pode ajudar.

Exemplo: wal_buffers = 16MB

autovacuum

Ajustar o autovacuum para ser mais agressivo em tabelas grandes pode prevenir inchaço (bloat) e manter o desempenho.

Exemplo: autovacuum_naptime = 10s e autovacuum_vacuum_scale_factor = 0.1

random_page_cost

Custo estimado para leitura aleatória de uma página no disco. Ajustar esse valor para refletir o desempenho do seu armazenamento pode melhorar a execução de consultas.

Em SSDs, pode ser algo como random_page_cost = 1.1.

log_min_duration_statement

Para identificar consultas lentas, você pode logar todas as consultas que excedam um determinado tempo.

Exemplo: log_min_duration_statement = 500ms

Para que as alterações realizadas passem a ser utilizadas, é necessário que o serviço do PostgreSQL seja reiniciado
Após ajustar esses parâmetros, é importante monitorar o desempenho do PostgreSQL e fazer ajustes conforme necessário, baseado na carga de trabalho e hardware disponível.

Esse artigo foi útil?
Não Gostei 0
Visualizações 23