postgres postgresql tuning conf
-
max_connections
: Número máximo de conexões permitidas ao mesmo tempo. Configuração de contexto de postmaster porque diversas estruturas são pré-alocadas em memória compartilhada, com tamanho proporcional a essa configuração. É recomendado não aumentar muito essa configuração, já que muitas conexões influenciam negativamente o desempenho. É recomendado manter ela proporcional ao número de CPUs da máquina, como explicado na parte sobre proxies. -
superuser_reserved_connections
: Conexões reservadas ao superusuário para tarefas administrativas e recuperação de desastres. -
ssl
,ssl_*
: Configurações para aceitar conexões por SSL, informar chave privada, certificado e CA de servidor. -
password_encoding
: Método usado para gerar o hash de senha de usuário armazenado. Após alterar ele, é necesário resetar as senhas, caso contrário os usuários não poderão fazer a autenticação. - …
-
shared_buffers
: Área de memória compartilhada alocada pelo postmaster e acessível para todos os processos do PostgreSQL. Valores maiores acumulam mais buffers sujos que precisam ser escritos dentro de um período de checkpoint. É comum usar 1/16 da memória RAM, não ultrapassando 8GB mesmo em máquinas grandes. E através do monitoramento porpg_statio_*
podemos investigar se esse parâmetro deve ser alterado. -
work_mem
: Teto de memória que pode ser usada para cada nó do plano de execução em cada consulta de cada transação em andamento. Já que cada conexão pode usar várias vezes esse valor, é comum usar valores menores quando a máquina tem altomax_connections
e maiores com menos conexões. Mas a complexidade média das consultas também deve ser levada em conta. -
maintenance_work_mem
: Memória usada para atividades de manutenção como criação de índices. Diferentemente dework_mem
, cada conexão usará alocará uma vez essa memória. -
autovacuum_work_mem
: Memória usada para o autovacuum. Diferentemente dework_mem
, cada conexão usará alocará uma vez essa memória. -
effective_cache_size
: Representa uma dica ao otimizador, indicando quanta memória está disponível para cache de blocos de disco. Esse valor deve incluir o espaço que o sistema operacional pode usar como page cache. Em máquinas dedicadas ao PostgreSQL é comum colocar um valor próximo de 75% da memória RAM da máquina. Em máquinas compartilhadas com aplicações, use proporções menores. - …
-
seq_page_cost
: Custo estimado por página de leitura sequencial, usada principalmente em leituras de tabelas. -
random_page_cost
: Custo estimado por página de leitura não sequencial, usada principalmente em leituras de índices. É comum diminuirmos esse parâmetro em tablespaces apoiados por ssd ou nvme. -
cpu_tuple_cost
: Custo estimado de processamento de cada tupla de tabela. -
cpu_index_tuple_cost
: Custo estimado de processamento de cada tupla de índice. -
cpu_operator_cost
: Custo estimado de processamento de cada operador. -
parallel_setup_cost
: Custo estimado de lançamento de um novo processo paralelo. -
parallel_tuple_cost
: Custo estimado de envio de tupla de um processo paralelo a outro. -
jit_above_cost
: Planos de execução com custo total maior que este valor são compilados para execução JIT (Just-In-Time compilation). -
jit_inline_above_cost
: Planos de execução com custo total maior que este valor são submetidos a substituição de operadores e funções. -
jit_optimize_above_cost
: Planos de execução com custo maior que este valor são submetidos a etapas extras de otimização de código. - …