top of page

Call Me: Skype Sandro.Servino

Buscar

Contextos de Configuração no PostgreSQL: Quais parametros precisam do restart do Postgres.

  • Foto do escritor: Sandro Servino
    Sandro Servino
  • 7 de mar.
  • 2 min de leitura

M.Sc, MBA, Database´s Administrator and Architect

March 7, 2025

O PostgreSQL oferece diversas configurações que controlam seu funcionamento. No entanto, nem todas podem ser alteradas da mesma forma ou entram em vigor imediatamente. O contexto de cada parâmetro em pg_settings define quando e como as mudanças podem ser aplicadas.

Este artigo explica os diferentes contextos e como aplicá-los corretamente.

📌 O que são os contextos de pg_settings?

Cada parâmetro de configuração do PostgreSQL pertence a um contexto, que determina quando a alteração será efetivada. Para listar os contextos existentes, execute:

SELECT DISTINCT context FROM pg_settings;

Os contextos possíveis são:


  • postmaster

  • superuser-backend

  • user

  • internal

  • backend

  • sighup

  • superuser


Abaixo, detalho cada um deles.

🔴 postmaster (Requer reinicialização do PostgreSQL)


  • O que significa? Os parâmetros nesse contexto exigem uma reinicialização completa do PostgreSQL para entrarem em vigor.

  • Como aplicar a mudança?


Edite postgresql.conf ou use ALTER SYSTEM.

Reinicie o PostgreSQL com:


  • Exemplos de parâmetros:


shared_buffers (buffer de memória compartilhado)

max_connections (número máximo de conexões simultâneas)

wal_level (nível de log para replicação)

listen_addresses (endereços IP onde o PostgreSQL escuta)

🟡 superuser-backend (Apenas para superusuários e na inicialização da sessão)


  • O que significa? Somente superusuários podem modificar, e a alteração é aplicada quando a sessão inicia.

  • Como aplicar a mudança?


Feche e reabra a conexão.


  • Exemplos de parâmetros:


session_replication_role (define se a sessão replica alterações)

vacuum_cost_delay (limita o consumo de CPU pelo autovacuum)

🔵 user (Pode ser alterado dentro da sessão do usuário)


  • O que significa? Qualquer usuário pode alterar esses parâmetros dentro da própria sessão. A mudança desaparece ao desconectar.

  • Como aplicar a mudança?


Usar SET dentro da sessão:

SET work_mem = '64MB';

Para tornar permanente:

ALTER ROLE meu_usuario SET work_mem = '64MB';


  • Exemplos de parâmetros:


work_mem (memória para operações temporárias)

search_path (ordem de busca de esquemas)

⚪ internal (Somente PostgreSQL pode modificar)


  • O que significa? Parâmetros gerenciados internamente pelo PostgreSQL. Não podem ser alterados manualmente.

  • Exemplos de parâmetros:


block_size (tamanho do bloco de disco)

max_function_args (máximo de argumentos em funções)

🟠 backend (Aplica-se apenas na inicialização de um processo backend)


  • O que significa? A mudança é aplicada quando uma nova conexão é criada.

  • Como aplicar a mudança?


Fechar e reabrir a conexão.


  • Exemplos de parâmetros:


log_statement (define o nível de log das queries)

debug_print_plan (ativa a impressão dos planos de execução)

🟢 sighup (Recarrega a configuração sem reiniciar o PostgreSQL)


  • O que significa? As mudanças não precisam de restart, apenas um reload da configuração.

  • Como aplicar a mudança?


SELECT pg_reload_conf();


  • Exemplos de parâmetros:


log_min_duration_statement (queries lentas para logging)

log_directory (pasta de logs)

autovacuum (liga/desliga o autovacuum)

🟣 superuser (Apenas superusuários podem alterar)


  • O que significa? Apenas superusuários podem modificar, mas a mudança entra em vigor imediatamente.

  • Como aplicar a mudança?


SET enable_seqscan = OFF;

ou tornando permanente:

ALTER DATABASE meu_banco SET enable_seqscan = OFF;


  • Exemplos de parâmetros:


enable_seqscan (ativa/desativa busca sequencial)

allow_system_table_mods (permite alterações em tabelas do sistema)


Com este comando verá as options existentes e seus contextos:

SELECT name, setting, context

FROM pg_settings

ORDER BY context;


e se quiser focar e verificar apenas as options que precisa do restart do postgres, quando tiver duvidas:

SELECT name, setting, context

FROM pg_settings

WHERE context = 'postmaster'

ORDER BY name;


Abraco

Sandro Servino

 
 
 

Posts recentes

Ver tudo
MySQL, SQL Server e Oracle???

Ola PessoALL Se você está entrando na carreira de dados e está procurando o melhor banco de dados relacional para começar, existem três...

 
 
 

Comments


bottom of page