Existem vários parâmetros de configuração que afetam o comportamento do sistema de banco de dados. Nesta seção é descrito como definir os parâmetros de configuração; as subseções abaixo discutem cada parâmetro em detalhe.
Não há diferença entre letras maiúsculas e minúsculas nos nomes dos parâmetros. Todo parâmetro aceita um valor de um destes quatro tipos: booleano, inteiro, ponto flutuante ou cadeia de caracteres. Os valores booleanos podem ser escritos como ON, OFF, TRUE, FALSE, YES, NO, 1 ou 0 (sem distinção entre letras maiúsculas e minúsculas), ou qualquer prefixo não ambíguo destes.
Uma forma de definir estes parâmetros é editar o arquivo postgresql.conf,
presente no diretório de dados (O utilitário initdb instala uma cópia padrão neste diretório). Um exemplo de como este arquivo se parece é:
# Isto é um comentário
log_connections = yes
syslog = 2
search_path = '$user, public'
É especificado um parâmetro por linha. O sinal de igual entre o nome e o valor é opcional. Espaços em branco não são significativos e as linhas em branco são ignoradas. O caractere jogo-da-velha (#) insere comentário em qualquer posição. Os valores dos parâmetros, que não são identificadores simples ou números, devem estar entre apóstrofos (').
O arquivo de configuração é lido novamente sempre que o processo postmaster recebe do sistema o sinal SIGHUP (cuja forma mais fácil de enviar é através de pg_ctl reload). O postmaster também propaga este sinal para todos os processos servidor em execução, para que as sessões em andamento também leiam os novos valores. Como alternativa, o sinal pode ser enviado diretamente para um único processo servidor. Alguns parâmetros somente podem ser definidos durante a inicialização do servidor; qualquer modificação de seus valores no arquivo de configuração será ignorada até que o servidor seja reiniciado.
A segunda forma de definir estes parâmetros de configuração é fornecê-los como opção de linha de comando para o postmaster, como em:
postmaster -c log_connections=yes -c syslog=2
As opções de linha de comando têm precedência sobre qualquer definição conflitante presente no arquivo postgresql.conf.
Ocasionalmente, também é útil fornecer uma opção de linha de comando para apenas uma determinada sessão. Para esta finalidade pode ser utilizada a variável de ambiente PGOPTIONS no lado cliente:
env PGOPTIONS='-c geqo=off' psql
(Funciona para toda aplicação cliente baseada na biblioteca libpq, e não apenas para o psql). Deve ser observado que não funciona para os parâmetros que são fixados na inicialização do servidor, ou que devem ser especificados no arquivo postgresql.conf.
Além disso, é possível atribuir um conjunto de definições de parâmetro a um usuário ou a um banco de dados. Sempre que uma sessão é iniciada, as definições padrão para o usuário ou para o banco de dados são carregadas. Para configurar estas definições são utilizados os comandos
ALTER USER
e
ALTER DATABASE
, respectivamente. As definições para o banco de dados têm precedência sobre qualquer definição recebida pela linha de comando do postmaster ou através do arquivo de configuração. Por sua vez, as definições para o usuário têm precedência sobre as definições para o banco de dados; as opções para a sessão têm precedência sobre as duas.
Alguns parâmetros podem ser alterados nas sessões SQL individuais utilizando o comando
SET
como, por exemplo:
SET ENABLE_SEQSCAN TO OFF;
Se o comando SET for permitido, tem precedência sobre todas as outras fontes de valor para parâmetros. Alguns parâmetros não podem ser alterados através do comando SET: por exemplo, parâmetros que controlam um comportamento que não pode ser alterado sem reiniciar o PostgreSQL. Além disso, alguns parâmetros podem ser alterados através dos comandos SET ou ALTER pelos superusuários, mas não pelos usuários comuns.
O comando
SHOW
permite ver o valor corrente de todos os parâmetros.
A tabela virtual pg_settings (descrita na
Seção 43.34
) também permite ver e atualizar os parâmetros em tempo de execução da sessão. Equivale ao comando SHOW e SET, mas seu uso pode ser mais conveniente, porque pode ser feita a junção com outras tabelas, ou feita a seleção utilizando a condição de seleção desejada.
- tcpip_socket (boolean)
-
Se for verdade, então o servidor aceita conexões TCP/IP.
Senão, somente são aceitas conexões oriundas do soquete do domínio Unix local. O valor padrão é desabilitado. Somente pode ser definido na inicialização do servidor.
- max_connections (integer)
-
Determina o número máximo de conexões simultâneas ao servidor de banco de dados. O valor típico é 100, mas pode ser menor se a configuração do núcleo do sistema operacional não não tiver capacidade para suportar este valor (conforme determinado durante o initdb). Somente pode ser definido na inicialização do servidor.
O aumento deste parâmetro pode fazer com que o PostgreSQL requisite mais memória compartilhada System V que o permitido pela configuração padrão do sistema operacional. Para obter informações sobre como ajustar estes parâmetros deve ser vista a
Seção 16.5.1
, se for necessário.
- superuser_reserved_connections (integer)
-
Determina o número de "encaixes de conexão" (connection slots), reservados para os superusuários do PostgreSQL se conectarem. Podem estar ativas até max_connections conexões simultâneas. Sempre que o número de conexões ativas simultâneas for igual ou maior a max_connections menos superuser_reserved_connections, somente serão aceitas novas conexões feitas por superusuários.
O valor padrão é 2. O valor deve ser menor que o valor de max_connections. Somente pode ser definido na inicialização do servidor.
- port (integer)
-
A porta TCP onde o servidor está escutando; 5432 por padrão. Somente pode ser definido na inicialização do servidor.
- unix_socket_directory (string)
-
Especifica o diretório do soquete do domínio Unix onde o servidor está escutando as conexões das aplicações cliente. Normalmente o valor padrão é /tmp, mas pode ser mudado em tempo de construção. Somente pode ser definido na inicialização do servidor.
- unix_socket_group (string)
-
Define o grupo dono do soquete do domínio Unix (O usuário dono do soquete é sempre o usuário que inicializa o servidor). Combinado com o parâmetro unix_socket_permissions pode ser utilizado como um mecanismo de controle de acesso adicional para as conexões do domínio Unix. Por padrão é uma cadeia de caracteres vazia, que utiliza o grupo padrão do usuário corrente. Somente pode ser definido na inicialização do servidor.
- unix_socket_permissions (integer)
-
Define as permissões de acesso do soquete do domínio Unix. Os soquetes do domínio Unix utilizam o conjunto usual de permissões do sistema de arquivos do Unix. Para o valor deste parâmetro é esperada uma especificação de modo numérica, na forma aceita pelas chamadas de sistema
chmod
e umask
(Para utilizar o formato octal, como é de costume, o número deve começar por 0 (zero)).
As permissões padrão são 0777, significando que qualquer um pode se conectar. Alternativas razoáveis são 0770 (somente o usuário e o grupo, veja também unix_socket_group) e 0700 (somente o usuário); deve ser observado que, na verdade, para soquetes do domínio Unix somente a permissão de escrita tem importância, não fazendo sentido conceder ou revogar permissões de leitura e de execução.
Este mecanismo de controle de acesso é independente do descrito no
Capítulo 19
.
Somente pode ser definido na inicialização do servidor.
- virtual_host (string)
-
Especifica o nome de hospedeiro ou endereço de IP onde o servidor está escutando as conexões das aplicações cliente. O padrão é escutar em todos os endereços configurados (incluindo localhost).
- rendezvous_name (string)
-
Especifica o nome de difusão (broadcast) Rendezvous. Por padrão é utilizado o nome do computador, especificado através de uma cadeia de caracteres vazia (''). É ignorado quando o servidor não é compilado com suporte a Rendezvous. Somente pode ser definido na inicialização do servidor.
- authentication_timeout (integer)
-
Tempo máximo, em segundos, para completar a autenticação do cliente. Se a tentativa de tornar-se cliente não completar o protocolo de autenticação nesta quantidade de tempo, o servidor derruba a conexão. Isto impede que clientes travados fiquem ocupando a conexão indefinidamente. Somente pode ser definido na inicialização do servidor, ou no arquivo postgresql.conf. O valor padrão é 60.
- ssl (boolean)
-
Habilita conexões SSL. Por favor leia a
Seção 16.7
antes de utilizar este parâmetros. O valor padrão é falso. Somente pode ser definido na inicialização do servidor.
- password_encryption (boolean)
-
Quando é especificada uma senha em
CREATE USER
ou
ALTER USER
, sem que seja escrito ENCRYPTED ou UNENCRYPTED, este parâmetro determina se a senha deve ser criptografada. O valor padrão é verdade (criptografar a senha).
- krb_server_keyfile (string)
-
Define o local do arquivo de chave do servidor Kerberos. Para obter detalhes deve ser vista a
Seção 19.2.3
.
- db_user_namespace (boolean)
-
Permite nomes de usuário por banco de dados. O valor padrão é falso.
Se o valor for verdade, os usuários devem ser criados como nome_do_usuário@nome_bd. Quando o nome_do_usuário é passado por um cliente se conectando, são anexados @ e o nome do banco de dados ao nome do usuário, então o servidor procura por este nome de usuário específico do banco de dados. Deve ser observado que, no ambiente SQL, para criar nomes de usuário contendo @ é necessário colocar o nome de usuário entre aspas.
Quando o valor deste parâmetro é verdade, ainda podem ser criados usuários globais comuns. Deve apenas ser anexado o caractere @ à especificação do nome de usuário no cliente. O caractere @ será retirado antes do nome de usuário ser procurado pelo servidor.
Nota: Esta funcionalidade foi criada como uma medida temporária até que seja encontrada uma solução definitiva, quando então será removida.
- shared_buffers (integer)
-
Define o número de buffers de memória compartilhada, utilizados pelo servidor de banco de dados. O valor típico é 1000, mas pode ser menor se a configuração do núcleo do sistema operacional não não tiver capacidade para suportar este valor (conforme determinado durante o initdb). Cada buffer possui 8192 bytes, a menos que seja escolhido um valor diferente para BLCKSZ ao construir o servidor. O valor definido deve ser pelo menos igual a 16, assim como pelo menos duas vezes o valor de max_connections; entretanto, normalmente é necessário definir um valor bem maior que o mínimo para obter um bom desempenho. São recomendados valores de alguns poucos milhares para instalações de produção. Somente pode ser definido na inicialização do servidor.
O aumento deste parâmetro pode fazer com que o PostgreSQL requisite mais memória compartilhada System V que o permitido pela configuração padrão do sistema operacional. Para obter informações sobre como ajustar estes parâmetros deve ser vista a
Seção 16.5.1
, se for necessário.
- sort_mem (integer)
-
Especifica a quantidade de memória utilizada pelas operações internas de classificação e tabelas de dispersão (hash tables) antes de alteranar para arquivos temporários em disco. O valor é especificado em kilobytes, e o valor padrão é 1024 kilobytes (1 MB). Deve ser observado que, em uma consulta complexa, podem ser executadas em paralelo várias classificações ou operações de hash; cada uma podendo utilizar tanta memória quanto especificado por este valor, antes de colocar os dados em arquivos temporários. Além disso, diversas sessões em execução podem estar fazendo operações de classificação simultaneamente. Portanto, a memória total utilizada pode ser várias vezes o valor de sort_mem; As operações de classificação são utilizadas por ORDER BY, junções de mesclagem e CREATE INDEX. As tabelas de dispersão (hash tables) são utilizadas em junções de dispersão (hash joins), agregações baseadas em dispersão (hash-based aggregation), e no processamento baseado em dispersão (hash-based processing) de subconsultas IN. Como o comando CREATE INDEX é utilizado quando um banco de dados é restaurado, aumentar sort_mem antes de realizar uma operação de restauração grande pode melhorar o desempenho.
- vacuum_mem (integer)
-
Especifica a quantidade máxima de memória a ser utilizada pelo comando VACUUM para manter informações sobre as linhas a serem reavidas. O valor é especificado em kilobytes, e o padrão é 8192 kB. Valores maiores podem melhorar a velocidade da limpeza de tabelas grandes contendo muitas linhas excluídas.
- max_fsm_pages (integer)
-
Define o número máximo de páginas de disco para as quais o espaço livre será acompanhado no mapa de espaço livre compartilhado. São consumidos seis bytes de memória compartilhada para cada encaixe de página. O valor definido deve ser maior que 16 * max_fsm_relations. O valor padrão é 20000. Somente pode ser definido na inicialização do servidor.
- max_fsm_relations (integer)
-
Define o número máximo de relações (tabelas e índices) para as quais o espaço livre será acompanhado no mapa de espaço livre compartilhado. São consumidos, aproximadamente, 50 bytes de memória compartilhada por cada encaixe. O valor padrão é 1000. Somente pode ser definido na inicialização do servidor.
- max_files_per_process (integer)
-
Define o número máximo permitido de arquivos abertos simultaneamente por cada subprocesso servidor. O valor padrão é 1000. O limite realmente utilizado pelo código é o menor valor entre esta definição e o resultado de sysconf(_SC_OPEN_MAX). Portanto, nos sistemas onde
sysconf
retorna um limite razoável não há necessidade de se preocupar com esta definição. Entretanto, em algumas plataformas (notadamente a maioria dos sistemas BSD), sysconf
retorna um valor que é muito maior do que o sistema pode realmente suportar quando um grande número de processos tenta abrir ao mesmo tempo esta quantidade de arquivos. Se for vista a mensagem de erro "Muitos arquivos abertos" deve-se tentar reduzir esta definição. Somente pode ser definido na inicialização do servidor, ou no arquivo de configuração postgresql.conf; se for mudado no arquivo de configuração somente serão afetados os subprocessos servidor iniciados posteriormente.
- preload_libraries (string)
-
Especifica uma ou mais bibliotecas compartilhadas a serem pré-carregadas durante a inicialização do servidor. Pode ser chamada, opcionalmente, uma função de inicialização sem parâmetros para cada biblioteca. Para especificá-la deve ser adicionado dois-pontos e o nome da função de inicialização após o nome da biblioteca. Por exemplo '$libdir/minha_bib:minha_bib_inic' faz com que minha_bib seja pré-carregada e minha_bib_inic seja executada. Para carregar mais de uma biblioteca, os nomes devem ser separados por vírgula.
Se minha_bib ou minha_bib_inic não for encontrada, a inicialização do servidor não será bem-sucedida.
As bibliotecas de linguagem procedural do PostgreSQL são pré-carregadas desta maneira, usualmente utilizando a sintaxe '$libdir/plXXX:plXXX_init', onde XXX é pgsql, perl, tcl ou python.
Fazendo a pré-carga da biblioteca compartilhada (e a inicializando, se for aplicável), ganha-se o tempo de inicialização da biblioteca quando a biblioteca é utilizada pela primeira vez. Entretanto, pode aumentar ligeiramente o tempo para inicializar cada novo processo servidor, mesmo que o processo nunca utilize a biblioteca. Portanto, este parâmetro só é recomendado para bibliotecas utilizadas pela maioria das sessões.
Veja também a
Seção 25.3
para obter detalhes sobre o ajuste do WAL.
- fsync (boolean)
-
Se o valor deste parâmetro for true, o servidor PostgreSQL utilizará a chamada de sistema
fsync()
em vários lugares para ter certeza que as atualizações estão fisicamente escritas no disco. Isto garante que o agrupamento de bancos de dados vai ser recuperado em um estado consistente após um problema de máquina ou do sistema operacional
Entretanto, a utilização de fsync()
produz uma degradação de desempenho: quando a transação é efetivada, o PostgreSQL tem de aguardar o sistema operacional descarregar o log de escrita prévia no disco. Quando fsync está desabilitado, o sistema operacional pode desempenhar da sua melhor maneira a "buferização", ordenação e retardo na escrita. Isto pode produzir uma melhora significativa no desempenho. Porém, no caso de uma queda do sistema, podem ser perdidos, em parte ou por inteiro, os resultados das poucas últimas transações efetivadas. No pior caso, os dados podem ficar corrompidos de uma forma irrecuperável (Para esta situação a queda do servidor de banco de dados não é um fator de risco, somente há risco dos dados ficarem corrompidos no caso de queda do sistema operacional).
Devido aos riscos envolvidos não existe uma definição universalmente aceita para fsync. Alguns administradores sempre desabilitam fsync, enquanto outros só desabilitam para cargas de dado pesadas, onde claramente existe um ponto de recomeço se algo de errado acontecer, enquanto outros administradores sempre deixam fsync habilitado. O valor padrão para fsync é habilitado, para obter o máximo de confiabilidade. Havendo confiança no sistema operacional, na máquina, e nos utilitários que acompanham (ou na bateria de reserva), pode-se levar em consideração desabilitar fsync.
Somente pode ser definido na inicialização do servidor, ou no arquivo postgresql.conf.
- wal_sync_method (string)
-
Método utilizado para obrigar a colocar as atualizações do WAL no disco. Os valores possíveis são fsync (chamada à função
fsync()
a cada efetivação), fdatasync (chamada à função fdatasync()
a cada efetivação), open_sync (escreve os arquivos WAL com a opção O_SYNC da função open()
), e open_datasync (escreve arquivos WAL com a opção O_DSYNC do open()
). Nem todas estas opções estão disponíveis em todas as plataformas. Somente pode ser definido na inicialização do servidor, ou no arquivo postgresql.conf.
- wal_buffers (integer)
-
Número de buffers de página de disco alocados na memória compartilhada para os dados do WAL. O valor padrão é 8. Esta definição somente precisa ser grande o suficiente para conter a quantidade de dados do WAL gerados por uma transação típica. Somente pode ser definido na inicialização do servidor.
- checkpoint_segments (integer)
-
Distância máxima entre pontos de controle automático do WAL, em segmentos de arquivo de log (cada segmento possui normalmente 16 megabytes). O valor padrão é 3. Somente pode ser definido na inicialização do servidor, ou no arquivo postgresql.conf.
- checkpoint_timeout (integer)
-
Tempo máximo, em segundos, entre pontos de controle automáticos do WAL. O valor padrão é 300 segundos. Somente pode ser definido na inicialização do servidor, ou no arquivo postgresql.conf.
- checkpoint_warning (integer)
-
Escreve uma mensagem no log do servidor caso ocorra um ponto de controle, causado pelo enchimento dos arquivos de segmento de ponto de controle, em um tempo menor que este número de segundos. O valor padrão é 30 segundos. Zero desabilita a advertência.
- commit_delay (integer)
-
Retardo entre a escrita do registro de efetivação no buffer do WAL e a descarga do buffer no disco, em microssegundos. Um retardo maior que zero permite que seja feita apenas uma chamada de sistema
fsync()
para várias transações efetivadas, se a carga do sistema for alta o suficiente para que outras transações fiquem prontas para efetivar dentro do intervalo especificado. Entretanto, este retardo é simplesmente desperdício se nenhuma outra transação ficar pronta para efetivar. Portanto, o retardo somente é realizado se pelo menos outras commit_siblings transações estiverem ativas no instante que o processo servidor escrever seu registro de efetivação. O valor padrão é zero (nenhum retardo).
- commit_siblings (integer)
-
Número mínimo de transações simultâneas abertas requerido para realizar o retardo commit_delay. Um valor maior torna mais provável que ao menos uma outra transação fique pronta para efetivar durante o período do retardo. O valor padrão é 5.
Nota: Estes parâmetros de configuração fornecem um método rudimentar para influenciar os planos de comando escolhidos pelo otimizador de comandos. Se o plano padrão escolhido pelo otimizador para um determinado comando não for o ótimo, uma solução temporária pode ser obtida utilizando um destes parâmetros de configuração para forçar o otimizador a escolher um plano diferente. Entretanto, desabilitar uma destas definições permanentemente dificilmente é uma boa idéia. Formas melhores de melhorar a qualidade dos planos escolhidos pelo otimizador incluem o ajuste das
Constantes de custo do planejador
, execução do comando
ANALYZE
com mais freqüência, e aumento da quantidade de estatísticas coletadas para colunas específicas utilizando o comando ALTER TABLE SET STATISTICS.
- enable_hashagg (boolean)
-
Habilita ou desabilita o uso pelo planejador de comandos dos planos do tipo agregação por hash. O valor padrão é habilitado. É utilizado para depuração do planejador de comandos.
- enable_hashjoin (boolean)
-
Habilita ou desabilita o uso pelo planejador de comandos dos planos do tipo junção por hash. O valor padrão é habilitado. É utilizado para depuração do planejador de comandos.
- enable_indexscan (boolean)
-
Habilita ou desabilita o uso pelo planejador de comandos dos planos do tipo varredura de índice. O valor padrão é habilitado. É utilizado para depuração do planejador de comandos.
- enable_mergejoin (boolean)
-
Habilita ou desabilita o uso pelo planejador de comandos dos planos do tipo junção por mesclagem. O valor padrão é habilitado. É utilizado para depuração do planejador de comandos.
- enable_nestloop (boolean)
-
Habilita ou desabilita o uso pelo planejador de comandos dos planos do tipo junção por laço aninhado. Não é possível suprimir junções por laço aninhado inteiramente, mas tornar o valor deste parâmetro igual a false desestimula a utilização deste método pelo planejador, quando há outro método disponível. O valor padrão é habilitado. É utilizado para depuração do planejador de comandos.
- enable_seqscan (boolean)
-
Habilita ou desabilita o uso pelo planejador de comandos dos planos do tipo varredura seqüencial. Não é possível suprimir as varreduras seqüenciais inteiramente, mas tornar o valor deste parâmetro igual a false desestimula a utilização deste método pelo planejador, quando há outro método disponível. O valor padrão é habilitado. É utilizado para depuração do planejador de comandos.
- enable_sort (boolean)
-
Habilita ou desabilita o uso pelo planejador de comandos dos passos de classificação explícita pelo planejador de comandos. Não é possível suprimir as classificações explícitas inteiramente, mas tornar o valor deste parâmetro igual a false desestimula a utilização deste método pelo planejador, quando há outro método disponível. O valor padrão é habilitado. É utilizado para depuração do planejador de comandos.
- enable_tidscan (boolean)
-
Habilita ou desabilita o uso pelo planejador de comandos dos planos do tipo varredura TID. O valor padrão é habilitado. É utilizado para depuração do planejador de comandos.
Nota: Infelizmente, não existe nenhum método bem definido para determinar os valores ideais para a família de variáveis de "custo" mostradas abaixo. Incentivamos que sejam feitas experiências e compartilhadas as descobertas.
- effective_cache_size (floating point)
-
Define o tamanho efetivo presumido pelo planejador acerca do cache de disco (isto é, a porção de cache de disco do núcleo que será utilizada para os arquivos de dados do PostgreSQL). O valor é medido em páginas de disco, normalmente com 8192 bytes cada. O valor padrão é 1000.
- random_page_cost (floating point)
-
Define a estimativa do planejador de comandos do custo da busca não seqüencial de uma página de disco. É medido como um múltiplo do custo da busca seqüencial de uma página. Um valor maior torna mais provável a utilização de uma varredura seqüencial, enquanto um valor menor torna mais provável a utilização de uma uma varredura de índice. O valor padrão é 4.
- cpu_tuple_cost (floating point)
-
Define a estimativa do planejador de comandos do custo de processamento de cada linha durante o comando. É medido como uma fração do custo da busca de uma página seqüencial. O valor padrão é 0.01.
- cpu_index_tuple_cost (floating point)
-
Define a estimativa do planejador de comandos do custo de processamento de cada linha de índice durante a varredura do índice. Medido como uma fração do custo da busca de uma página seqüencial. O valor padrão é 0.001.
- cpu_operator_cost (floating point)
-
Define a estimativa do planejador de comandos do custo de processamento de cada operador na cláusula WHERE. É medido como uma fração do custo da busca de uma página seqüencial. O valor padrão é 0.0025.
- geqo (boolean)
-
Habilita ou desabilita a otimização genética de comandos, que é um algoritmo que tenta realizar um planejamento de comandos sem uma busca exaustiva. O valor padrão é habilitado. Veja as várias outras definições geqo_.
- geqo_threshold (integer)
-
A otimização genética de comandos é utilizada para planejar comandos com pelo menos esta quantidade de itens envolvidos na cláusula FROM (Deve ser observado que uma construção de JOIN externa conta como apenas um item da cláusula FROM). O valor padrão é 11. Para comandos simples geralmente é melhor utilizar o planejamento determinístico exaustivo, mas para comandos com muitas tabelas o planejamento determinístico leva muito tempo.
- geqo_effort (integer)
geqo_generations (integer)
geqo_pool_size (integer)
geqo_selection_bias (floating point)
-
Vários parâmetros de ajuste para o algoritmo de otimização genética de comandos: O tamanho da amostra (pool size) é o número de indivíduos na população. Os valores válidos estão entre 128 e 1024. Se for definido igual a 0 (o padrão), é assumido o pool size de 2^(QS+1), onde QS é o número de itens na cláusula FROM do comando. O esforço é utilizado para calcular o padrão para gerações. Os valores válidos estão entre 1 e 80, sendo 40 o valor padrão. As gerações especificam o número de interações do algoritmo. O número deve ser um inteiro positivo. Se for especificado o valor 0, então é utilizado Effort * Log2(PoolSize). O tempo de execução do algoritmo é aproximadamente proporcional à soma de pool size com gerações. A tendência da seleção (selection bias) é a pressão seletiva dentro da população. O valores podem estar entre 1.50 e 2.00; o último é o padrão.
- default_statistics_target (integer)
-
Define a quantidade padrão de estatísticas para as colunas das tabelas que não possuem uma quantidade específica definida através do comando ALTER TABLE SET STATISTICS. Valores maiores aumentam o tempo necessário para executar o comando ANALYZE, mas podem melhorar a qualidade das estimativas do planejador. O valor padrão é 10.
- from_collapse_limit (integer)
-
O planejador incorpora as subconsultas nas consultas superiores se a lista FROM resultante não tiver mais do que esta quantidade de itens. Valores menores reduzem o tempo de planejamento, mas podem levar a planos de consulta inferiores. O valor padrão é 8. Geralmente é razoável manter este valor abaixo de geqo_threshold.
- join_collapse_limit (integer)
-
O planejador reescreve construções JOIN internas explícitas em lista de itens da cláusula FROM, sempre que resultar em uma lista com não mais do que esta quantidade de itens. Geralmente é definido com valor igual a from_collapse_limit. Definindo como 1 evita qualquer reescrita de JOIN interno, permitindo utilizar a sintaxe de JOIN explícita para controlar a ordem de junção. Valores intermediários podem ser úteis para tirar vantagem do tempo de planejamento contra a qualidade do plano.
- syslog (integer)
-
O PostgreSQL permite utilizar o syslog para registrar as mensagens. Se esta opção for definida igual a 1, as mensagens vão para syslog e para a saída padrão. Se for definida igual a 2 a saída é enviada apenas para syslog (Algumas mensagens ainda irão para a saída/erro padrão). O valor padrão é zero, significando que syslog está desligado. Somente pode ser definido na inicialização do servidor, ou no arquivo postgresql.conf.
- syslog_facility (string)
-
Esta opção determina a "facilidade"
a ser utilizada quando o registro via syslog está habilitado. Pode ser escolhido entre LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7; o padrão é LOCAL0. Também deve ser vista a documentação do syslog do sistema.
- syslog_ident (string)
-
Quando o registro via syslog está habilitado, esta opção determina o nome de programa utilizado para identificar as mensagens do PostgreSQL nos registros do syslog. O valor padrão é postgres.
- client_min_messages (string)
-
Controla que níveis de mensagem são enviadas para o cliente. Os valores válidos são DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, LOG, NOTICE, WARNING e ERROR. Cada nível inclui todos os níveis que o seguem. Quanto mais para o final estiver o nível, menos mensagens são enviadas. O valor padrão é NOTICE. Deve ser observado que aqui LOG possui uma situação relativa diferente da que tem em log_min_messages.
- log_min_messages (string)
-
Controla que níveis de mensagem são escritas no log do servidor. Os valores válidos são DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO, NOTICE, WARNING, ERROR, LOG, FATAL e PANIC. Cada nível inclui todos os níveis que o seguem. Quanto mais para o final estiver o nível, menos mensagens são enviadas. O valor padrão é NOTICE. Deve ser observado que aqui LOG possui uma situação relativa diferente da que tem em client_min_messages. Somente os superusuários podem alterar esta definição.
- log_error_verbosity (string)
-
Controla a quantidade de detalhes escritos no log do servidor para cada mensagem que é registrada. Os valores válidos são TERSE (sucinto), DEFAULT e VERBOSE, cada um adicionando mais campos às mensagens escritas.
- log_min_error_statement (string)
-
Controla se o comando SQL causador da condição de erro também será registrado no log do servidor. Todas as declarações SQL causadoras de um erro do nível especificado, ou de nível mais alto, são registradas. O valor padrão é PANIC (tornando de fato esta funcionalidade desabilitada para o uso normal). Os valores válidos são DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO, NOTICE, WARNING, ERROR, FATAL e PANIC. Por exemplo, se for definido como ERROR então todas as declarações SQL causadoras de erro, erros fatais ou pânicos serão registradas. Habilitar esta opção pode ser útil para encontrar a origem de qualquer erro que apareça no log do servidor. Somente os superusuários podem alterar esta definição.
- log_min_duration_statement (integer)
-
Define o tempo de execução mínimo da declaração (em milissegundos) para que a declaração seja registrada. Todas as declarações SQL cujo tempo de execução for igual ou superior ao tempo especificado serão registradas juntamente com sua duração. Definir como zero registra todos os comandos e sua duração. O valor -1 (o padrão) desabilita esta funcionalidade. Por exemplo, se for definido como 250 então todas as declarações SQL com tempo de execução de 250ms ou superior serão registradas. Habilitar esta opção pode ser útil para encontrar comandos não otimizados nas aplicações. Somente os superusuários podem alterar esta definição.
- silent_mode (boolean)
-
Executa o servidor em silêncio. Quando o valor deste parâmetro é definido como true, o servidor executa automaticamente em segundo plano, e se desvincula do terminal controlador (o mesmo efeito da opção -S do postmaster). A menos que seja habilitado registrar em syslog, a utilização desta opção é desencorajada uma vez que torna impossível ver as mensagens de erro.
Abaixo segue a relação dos vários níveis de severidade de mensagem utilizados nestas definições:
- DEBUG[1-5]
-
Fornece informações para uso pelos desenvolvedores.
- INFO
-
Fornece informações requisitadas implicitamente pelo usuário como, por exemplo, durante VACUUM VERBOSE.
- NOTICE
-
Fornece informações que podem ser úteis para os usuários como, por exemplo, o truncamento de identificadores longos e a criação de índices como parte das chaves primárias.
- WARNING
-
Fornece advertências para o usuário como, por exemplo, COMMIT fora do bloco de transação.
- ERROR
-
Relata o erro que fez com que o comando corrente fosse interrompido.
- LOG
-
Relata informações de interesse dos administradores como, por exemplo, atividade de ponto de controle.
- FATAL
-
Relata o erro que fez com que a sessão corrente fosse interrompida.
- PANIC
-
Relata o erro que fez com que todas as sessões fossem interrompidas.
- debug_print_parse (boolean)
debug_print_rewritten (boolean)
debug_print_plan (boolean)
debug_pretty_print (boolean)
-
Estes parâmetros habilitam a emissão de várias saídas de depuração para o cliente ou para o log do servidor. Para cada comando executado, imprimem a árvore de análise resultante, a saída do reescritor de comando, ou o plano de execução. debug_pretty_print introduz recuos na mensagem mostrada, produzindo um formato de saída mais legível, mas muito mais longo. client_min_messages e log_min_messages devem estar em DEBUG1 ou abaixo, para ser enviada a saída para o log do cliente ou do servidor, respectivamente. Estes parâmetros estão desabilitados por padrão.
- log_connections (boolean)
-
Gera uma linha para o log do servidor detalhando cada conexão bem-sucedida. O valor padrão é desabilitado embora, provavelmente, seja muito útil. Somente pode ser definido na inicialização do servidor, ou no arquivo postgresql.conf.
- log_duration (boolean)
-
Faz com que seja registrada a duração de toda declaração completada. Para utilizar esta opção devem ser habilitados log_statement e log_pid, para que a declaração possa ser ligada à duração utilizando o ID do processo. O valor padrão é desabilitado. Somente os superusuários podem desabilitar esta opção se estiver habilitada pelo administrador.
- log_pid (boolean)
-
Prefixa toda mensagem no arquivo de log do servidor com o ID de processo de cada processo servidor. É útil para identificar qual mensagem pertence a qual conexão. O valor padrão é desabilitado. Este parâmetro não afeta as mensagens registradas via syslog, que sempre contêm o ID do processo.
- log_statement (boolean)
-
Faz com que a declaração SQL seja registrada. O valor padrão é desabilitado. Somente os superusuários podem desabilitar esta opção se estiver habilitada pelo administrador.
- log_timestamp (boolean)
-
Prefixa cada mensagem do log do servidor com um carimbo do tempo. O padrão é desabilitado.
- log_hostname (boolean)
-
Por padrão as mensagens de registro de conexão mostram somente o endereço de IP do hospedeiro se conectando. Habilitar esta opção faz com que seja registrado o nome do hospedeiro também. Deve ser observado que dependendo da configuração da resolução de nome de hospedeiro pode ser imposta uma penalidade de desempenho não desprezível. Somente pode ser definido na inicialização do servidor.
- log_source_port (boolean)
-
Mostra o número da porta de saída do hospedeiro se conectando nas mensagens de log de conexão. É possível seguir o número da porta para descobrir que usuário iniciou a conexão. Não tem muita utilidade além desta e, portanto, está desabilitado por padrão. Somente pode ser definido na inicialização do servidor.
- log_statement_stats (boolean)
log_parser_stats (boolean)
log_planner_stats (boolean)
log_executor_stats (boolean)
-
Para cada comando, são registradas estatísticas de desempenho do respectivo módulo no log do servidor. É um instrumento rudimentar para traçar um perfil. Todos estes parâmetros estão desabilitados por padrão. Somente os superusuários podem desabilitar qualquer um destes parâmetros, caso tenha sido habilitado pelo administrador.
- stats_start_collector (boolean)
-
Controla se o servidor deve inicializar o subprocesso coletor de estatísticas. Está habilitado por padrão, mas pode ser desabilitado quando se sabe que não há interesse em coletar estatísticas. Somente pode ser definido na inicialização do servidor.
- stats_command_string (boolean)
-
Habilita a coleta de estatísticas para o comando executando no momento em cada sessão, junto com o momento em que o comando começou a executar. Esta opção está desabilitada por padrão. Deve ser observado que, mesmo quando está habilitada, esta informação não é visível por todos os usuários, mas somente pelos superusuários e o usuário dono da sessão sendo relatada; portanto, não deve representar um risco à segurança. Este dado pode ser acessado através da visão do sistema pg_stat_activity; para obter mais informações deve ser consultado o
Capítulo 23
.
- stats_block_level (boolean)
stats_row_level (boolean)
-
Habilitam a coleta de estatísticas no nível de bloco e no nível de linha da atividade do banco de dados, respectivamente. Estas opções estão desabilitadas por padrão. Os dados produzidos podem ser acessados através da família de visões do sistema pg_stat e pg_statio; para obter mais informações deve ser consultado o
Capítulo 23
.
- stats_reset_on_server_start (boolean)
-
Se estiver habilitado, as estatísticas coletadas são zeradas sempre que o servidor é reinicializado. Se estiver desabilitado, as estatísticas são acumuladas entre as reinicializações do servidor. O valor padrão é habilitado. Somente pode ser definido na inicialização do servidor.
- search_path (string)
-
Esta variável especifica a ordem de procura nos esquemas quando um objeto (tabela, tipo de dado, função, etc.) é referenciado simplesmente por um nome, sem o componente do esquema. Quando existem objetos com nomes idênticos em esquemas diferentes, é utilizado o que for encontrado primeiro no caminho de procura. Um objeto que não está em nenhum dos esquemas do caminho de procura, somente pode ser referenciado especificando o esquema que o contém usando um nome qualificado (com ponto).
O valor de search_path deve ser uma lista de nomes de esquemas separados por vírgula. Se um dos itens da lista for o valor especial $user, então este valor é substituído pelo esquema que tem o nome retornado por
SESSION_USER
, caso este esquema exista (caso contrário, $user é ignorado).
É sempre feita a procura no esquema do catálogo do sistema, pg_catalog, esteja presente no caminho de procura ou não. Se estiver mencionado no caminho de procura, então a procura será feita na ordem especificada. Se pg_catalog não estiver presente no caminho de procura, então será feita a procura neste esquema antes de ser feita a procura em qualquer um dos esquemas do caminho de procura. Também deve ser observado que é feita a procura no esquema de tabela temporária, pg_temp_nnn, antes de ser feita em qualquer um dos outros esquemas.
Quando os objetos são criados sem especificar o esquema de destino, são colocados no primeiro esquema da lista do caminho de procura. Quando o caminho de procura está vazio é gerado um erro.
O valor padrão para este parâmetro é '$user, public' (onde a segunda parte é ignorada quando não há um esquema chamado public). Dá suporte ao uso compartilhado de um banco de dados (onde nenhum usuário possui um esquema privativo, e todos compartilham o esquema public), esquemas privativos por usuário, e a combinação destes. Podem ser obtidos outros resultados mudando a definição do caminho de procura padrão, tanto globalmente quanto por usuário.
O valor efetivo corrente do caminho de procura pode ser examinado através da função SQL current_schemas()
. Não é exatamente o mesmo que examinar o valor de search_path, uma vez que current_schemas()
mostra como as solicitações que aparecem em search_path foram resolvidas. Para obter mais informações sobre a função current_schemas()
deve ser vista a
Tabela 9-37
.
Para obter mais informações sobre manuseio de esquemas deve ser vista a
Seção 5.8
.
- check_function_bodies (boolean)
-
Quando é definido como false, desabilita a validação da cadeia de caracteres do corpo da função durante a execução do comando
CREATE FUNCTION
. Normalmente definido como true. Ocasionalmente é útil desabilitar a validação para evitar problemas como referências à frente ao restaurar as definições das funções a partir de cópia de segurança.
- default_transaction_isolation (string)
-
Cada transação SQL possui um nível de isolamento, que pode ser "READ COMMITTED" ou "SERIALIZABLE". Este parâmetro controla o nível de isolamento padrão de cada nova transação. O valor padrão é "READ COMMITTED".
Para obter mais informações devem ser consultados o
Capítulo 12
e
SET TRANSACTION
- default_transaction_read_only (boolean)
-
Uma transação SQL apenas de leitura não pode alterar tabelas que não sejam temporárias. Este parâmetro controla o status de apenas para leitura padrão para cada nova transação. O valor padrão é false (leitura/escrita).
Para obter mais informações deve ser consultado
SET TRANSACTION
.
- statement_timeout (integer)
-
Interrompe qualquer declaração que exceda o número de milissegundos especificado. O valor zero, que é o valor padrão, desabilita esta limitação.
- datestyle (string)
-
Define o formato de exibição para os valores de data e hora, assim como as regras para interpretar valores de entrada de data ambíguos. Por motivos históricos esta variável contém dois componentes independentes: a especificação do formato de saída (ISO, Postgres, SQL ou German), e a especificação para entrada/saída da ordem de dia, mês e ano na data (DMY, MDY, ou YMD). Podem ser definidos separadamente ou juntos. As palavras chave Euro e European são sinônimos para DMY; as palavras chave US, NonEuro, e NonEuropean são sinônimos para MDY. Para obter mais informações deve ser vista a
Seção 8.5
. O valor padrão é ISO, MDY.
- timezone (string)
-
Define a zona horária para exibir e interpretar os carimbos do tempo. O valor padrão é 'unknown', o que significa utilizar o que estiver especificado no ambiente do sistema operacional para zona horária. Para obter mais informações deve ser vista a
Seção 8.5
.
- australian_timezones (boolean)
-
Se estiver definido como verdade, ACST, CST, EST e SAT são interpretados como zonas horárias da Austrália, em vez de zonas horárias das Américas e Sábado. O valor padrão é falso.
- extra_float_digits (integer)
-
Ajusta o número de dígitos mostrados em valores de ponto flutuante, incluindo float4, float8 e tipos de dado geométricos. O valor do parâmetro é adicionado ao número de dígitos padrão (FLT_DIG e DBL_DIG, conforme seja apropriado). O valor pode ser definido tão alto quanto 2, para incluir dígitos parcialmente significativos; é especialmente útil para dados de ponto flutuante em cópias de segurança, que precisem ser restaurados com exatidão. Também pode ser definido com um valor negativo para suprimir dígitos não desejados.
- client_encoding (string)
-
Define a codificação (conjunto de caracteres) do lado cliente. O padrão é utilizar a codificação do banco de dados.
- lc_messages (string)
-
Define a linguagem em que as mensagens são mostradas. Os valores aceitos são dependentes do sistema; para obter mais informações deve ser vista a
Seção 20.1
. Se esta variável for definida como uma cadeia de caracteres vazia (que é o padrão), então o valor é herdado do ambiente de execução do servidor de uma maneira dependente do sistema.
Em alguns sistemas esta categoria de localização não existe; definir esta variável funciona, mas não produz nenhum efeito. Existe, também, a chance de não haver mensagens traduzidas para o idioma desejado; neste caso, vão continuar sendo vistas mensagens em Inglês.
- lc_monetary (string)
-
Define a localização a ser utilizada para formatar quantias monetárias como, por exemplo, na família de funções
to_char
. Os valores aceitos são dependentes do sistema; para obter mais informações deve ser vista a
Seção 20.1
. Se esta variável for definida como uma cadeia de caracteres vazia (que é o padrão), então o valor é herdado do ambiente de execução do servidor de uma maneira dependente do sistema.
- lc_numeric (string)
-
Define a localização a ser utilizada para formatar números como, por exemplo, na família de funções
to_char()
. Os valores aceitos são dependentes do sistema; para obter mais informações deve ser vista a
Seção 20.1
. Se esta variável for definida como uma cadeia de caracteres vazia (que é o padrão), então o valor é herdado do ambiente de execução do servidor de uma maneira dependente do sistema.
- lc_time (string)
-
Define a localização a ser utilizada para formatar valores de data e hora (Atualmente esta definição não faz nada, mas poderá fazer no futuro). Os valores aceitos são dependentes do sistema; para obter mais informações deve ser vista a
Seção 20.1
. Se esta variável for definida como uma cadeia de caracteres vazia (que é o padrão), então o valor é herdado do ambiente de execução do servidor de uma maneira dependente do sistema.
- explain_pretty_print (boolean)
-
Determina se EXPLAIN VERBOSE utiliza a formatação com recuos ou sem recuos para mostrar o conteúdo detalhado das árvores de comando. O valor padrão é habilitado.
- dynamic_library_path (string)
-
Havendo necessidade de abrir um módulo carregável dinamicamente, sem que o nome de arquivo especificado no comando CREATE FUNCTION ou no comando LOAD possua componente de diretório (ou seja, o nome não contém o caractere barra), o sistema procura pelo arquivo requisitado usando este caminho.
O valor de dynamic_library_path deve ser uma lista de caminhos absolutos de diretório separados por dois-pontos. Se o elemento da lista começar pela cadeia de caracteres especial $libdir, este valor é substituído pelo diretório de biblioteca do pacote PostgreSQL compilado. Este é o local onde os módulos fornecidos na distribuição do PostgreSQL são instalados (deve ser utilizado o comando pg_config --pkglibdir para descobrir o nome deste diretório
). Por exemplo:
dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
O valor padrão deste parâmetro é '$libdir'. Se o valor for definido como uma cadeia de caracteres vazia, é desabilitada a procura automática no caminho.
Este parâmetro pode ser modificado em tempo de execução pelos superusuários, mas a definição feita desta maneira somente é preservada até o final da conexão do cliente, portanto este método deve ser reservado para fins de desenvolvimento. A maneira recomendada para definir este parâmetro é através do arquivo de configuração postgresql.conf.
- max_expr_depth (integer)
-
Define a profundidade máxima de aninhamento de expressão do analisador. O valor padrão, igual a 10000, é alto o suficiente para qualquer comando normal, mas pode ser aumentado caso haja necessidade (Mas se for aumentado muito, há risco de queda do servidor devido ao estouro da pilha).
- deadlock_timeout (integer)
-
Quantidade de tempo, em milissegundos, para aguardar pelo término do bloqueio antes de verificar a existência de uma condição de impasse (deadlock). A verificação de impasse é relativamente lenta e, portanto, o servidor não faz esta verificação toda vez que aguarda pelo término do bloqueio. Nós (otimistas?) assumimos que os bloqueios não são comuns em aplicações em produção e, simplesmente, aguardamos pelo término do bloqueio por algum tempo antes de começar a verificar a situação de impasse. O aumento deste valor reduz a quantidade de tempo desperdiçada em verificações de impasse desnecessárias, mas atrasa o relato de erros de impasse verdadeiros. O valor padrão é 1000 (ou seja, um segundo), que provavelmente é o menor valor desejado na prática. Em servidores muito carregados pode ser desejado aumentar este valor. A definição ideal deve ser um valor superior ao tempo típico de uma transação, para melhorar a chance do bloqueio ser liberado antes de decidir verificar o impasse.
- max_locks_per_transaction (integer)
-
A tabela de bloqueio compartilhada é dimensionada pela hipótese de que é necessário bloquear, no máximo, max_locks_per_transaction * max_connections objetos distintos de uma vez. O valor padrão, 64, tem se mostrado historicamente suficiente, mas pode ser necessário aumentar este valor quando há clientes que acessam muitas tabelas diferentes em uma única transação. Somente pode ser definido na inicialização do servidor.
- add_missing_from (boolean)
-
Quando o valor for igual a true, as tabelas referenciadas por uma consulta serão automaticamente adicionadas à cláusula FROM, caso não estejam presentes. O valor padrão é true para manter a compatibilidade com as versões anteriores do PostgreSQL. Entretanto, este comportamento não é SQL-padrão, e muitas pessoas não gostam porque pode esconder enganos. Deve ser definido como false para obter o comportamento SQL-padrão de rejeitar referências a tabelas que não estão presentes na cláusula FROM.
- regex_flavor (string)
-
A "variedade" (flavor>) de expressão regular pode ser definida como advanced, extended ou basic. O valor padrão é advanced. Definir como extended pode ser útil para manter a compatibilidade exata com as versões do PostgreSQL anteriores a 7.4. Para obter detalhes deve ser vista a
Seção 9.6.3.1
.
- sql_inheritance (boolean)
-
Controla a semântica da herança, em particular se as subtabelas são incluídas por padrão em vários comandos. Não eram incluídas nas versões anteriores a 7.1. Se for necessário usar o comportamento antigo esta variável pode ser definida como desabilitada, mas a longo prazo incentiva-se mudar as aplicações para que passem a utilizar a palavra chave ONLY para excluir as subtabelas. Para obter mais informações sobre herança deve ser vista a
Seção 5.5
.
- transform_null_equals (boolean)
-
Quando habilitado, as expressões da forma expr = NULL (ou NULL = expr) são tratadas como expr IS NULL, ou seja, retornam verdade se expr resultar em um valor nulo, e falso caso contrário. O comportamento correto de expr = NULL é sempre retornar nulo (desconhecido). Portanto, o valor padrão desta opção é desabilitado.
Entretanto, no Microsoft Access formulários filtrados produzem consultas que parecem utilizar expr = NULL para testar valores nulos e, portanto, se for utilizada esta interface para acessar o banco de dados pode ser necessário habilitar esta opção. Uma vez que as expressões da forma expr = NULL sempre retornam o valor nulo (utilizando a interpretação correta), não são muito úteis e, por isso, não aparecem com freqüência em aplicações normais, portanto esta opção produz pouco dano na prática. Porém, os novos usuários ficam freqüentemente confusos sobre a semântica das expressões que envolvem valores nulos e, portanto, esta opção não é habilitada por padrão.
Deve ser observado que esta opção afeta apenas a forma exata = NULL, e não os outros operadores de comparação ou outras expressões computacionalmente equivalentes a alguma expressão envolvendo o operador de igual (como o IN). Portanto, esta opção não é uma solução geral para má programação.
Para ver informações relacionadas deve ser consultada a
Seção 9.2
.
As opções a seguir foram feitas para funcionar no código fonte do PostgreSQL e, em alguns casos, ajudar na recuperação de bancos de dados seriamente danificados. Não deve haver razão para usá-las na configuração de um banco de dados de produção. Por isso, foram excluídas do arquivo postgresql.conf modelo. Deve ser observado que muitas destas opções requerem sinalizadores especiais na compilação do código fonte para que funcionem.
- debug_assertions (boolean)
-
Habilita várias verificações de asserção. É uma ajuda de depuração. Se estiverem acontecendo problemas estranhos, ou quedas, pode se querer habilitá-la, porque podem ser mostrados erros de programação. Para utilizar esta opção a macro USE_ASSERT_CHECKING deverá estar definida quando o PostgreSQL for construído (realizado pela opção --enable-cassert do configure). Deve ser observado que debug_assertions é habilitado por padrão quando o PostgreSQL é construído com as asserções habilitadas.
- pre_auth_delay (integer)
-
Se for diferente de zero, logo após um novo processo servidor ser lançado (forked) ocorre um retardo desta quantidade de segundos, antes de realizar o processo de autenticação. Tem por finalidade dar oportunidade de anexar o processo servidor a um depurador para acompanhar um mal comportamento na autenticação.
- trace_notify (boolean)
-
Gera uma grande quantidade de saída de depuração para os comandos LISTEN e NOTIFY. O valor do parâmetro client_min_messages ou log_min_messages deve ser DEBUG1, ou inferior, para que esta saída seja enviada para o log do cliente ou do servidor, respectivamente.
- trace_locks (boolean)
trace_lwlocks (boolean)
trace_userlocks (boolean)
trace_lock_oidmin (boolean)
trace_lock_table (boolean)
debug_deadlocks (boolean)
log_btree_build_stats (boolean)
-
Várias outras opções de rastreamento e depuração de código.
- wal_debug (integer)
-
Se for diferente de zero habilita a saída de depuração relacionada com o WAL.
- zero_damaged_pages (boolean)
-
A detecção de um cabeçalho de página danificado normalmente faz com que o PostgreSQL relate um erro e interrompa o comando corrente. Definir zero_damaged_pages como verdade faz com que em vez disto o sistema relate uma advertência, limpe a página danificada, e continue o processamento. Este comportamento destrói os dados, especificamente todas as linhas na página danificada, mas permite prosseguir após o erro e ler as linhas da tabela porventura presentes em páginas não danificadas. Portanto, é útil para recuperar dados se a corrupção tiver ocorrido devido à erro de máquina ou de software. Geralmente esta opção não deve ser definida como verdade, até que se tenha perdido a esperança de recuperar os dados das páginas danificadas da tabela. A definição padrão é desabilitado, e somente pode ser modificado por um superusuário.
Para facilitar também estão disponíveis, para alguns parâmetros, chaves de opção de linha de comando de uma única letra, conforme descrito na
Tabela 16-1
.
Tabela 16-1. Chave de opção curta
Opção curta |
Equivalente |
-B x |
shared_buffers = x |
-d x |
log_min_messages = DEBUGx |
-F |
fsync = off |
-h x |
virtual_host = x |
-i |
tcpip_socket = on |
-k x |
unix_socket_directory = x |
-l |
ssl = on |
-N x |
max_connections = x |
-p x |
port = x |
-fi, -fh, -fm, -fn, -fs, -ft
|
enable_indexscan=off, enable_hashjoin=off, enable_mergejoin=off, enable_nestloop=off, enable_seqscan=off, enable_tidscan=off |
-s
|
log_statement_stats = on |
-S x
|
sort_mem = x |
-tpa, -tpl, -te
|
log_parser_stats=on, log_planner_stats=on, log_executor_stats=on |
Notas:
a.
Por motivos históricos estas opções devem ser passadas para os processos servidor individuais através da opção -o do postmaster como, por exemplo,
$ postmaster -o '-S 1024 -s'
ou através da variável de ambiente PGOPTIONS no lado cliente, conforme explicado acima.
|