Vous êtes sur la page 1sur 52

Comparaes e Observaes sobre verses do portgresql.

conf
Este documento uma comparao das verses do arquivo postgresql.conf do PostgreSQL nas verses 8.2, 8.1, 8.0 e 7.4, que sero as verses suportadas pela equipe do PostgreSQL a partir do lanamento da verso 8.2. A documentao a respeito da verso 8.2 foi realizada a partir da verso 8.2 beta3 e pode sofrer atualizaes at a verso definitiva da documentao. Erros de traduo, digitao, omisses e sugestes podem ser enviadas para Fbio Telles em fabio.telles@gmail.com para que este documento possa ser melhorado. Notas de Copyright Este documento foi compilado por Fbio Telles e pode ser modificado e redistribudo nos termos das licenas abaixo, que so as fontes as informaes utilizadas para a realizao do presente documento. As observaes deste documento so tradues do artigo Annotated POSTGRESQL.CONF Guide for PostgreSQL de Josh Berkus e Joe Conway disponvel em http://www.powerpostgresql.com/Downloads/annotated_conf_80.html Licenciado pela Licena OPL A coluna documentao baseada na traduo da documentao do PostgreSQL em portugus disponvel em http://pgdocptbr.sourceforge.net/pg80/ realizada pelo Projeto de Traduo para o Portugus do Brasil a partir da documentao oficial, Copyright 1996-2006 The PostgreSQL Global Development Group

Locais dos Arquivos


Parmetro
data_directory (string) config_file (string) hba_file (string)

8.2 8.1 8.0 7.4 Escopo X X X X X X X X X


Diretrio Arquivo Arquivo

Padro
ConfigDir

Configurado em

Documentao

OBS

Estas configuraes permitem a fcil administrao de uma instalao do PostgreSQL onde vrias configuraes e ConfigDir/ Inicializao Especifica o arquivo principal de configurao do arquivos de monitoramento so postgresql.conf servidor. separados do banco de dados em si, ConfigDir/ Inicializao Especifica o arquivo de configurao para usualmente para propsitos de arquivos pg_hba.conf autenticao baseada no hospedeiro. de administrao com especificaes particulares, ou para automatizar testes com diferentes configuraes. Se voc usar isto, ser necessrio apenas

Inicializao Especifica o diretrio a ser utilizado para armazenamento dos dados.

Locais dos Arquivos


ConfigDir/ pg_ident.conf Especifica o arquivo de configurao para a autenticao ident. especificar a localizao do arquivo postgresql.conf em si quando iniciar o postmaster (usando a opo -D ou PGDATA). Esta nova abordagem considerada melhor do que criar links simblicos, a nica opo anterior.

ident_file (string)

Arquivo

Inicializao

external_pid_file (string)

Arquivo

Isto para programas de administrao e Interfaces GUI que esperam encontrar o Especifica o nome de um arquivo de identificao PID do PostgreSQL num local especfico, de processo adicional, que o postmaster deve usualmente em /var. Tenha em mente que Inicializao criar para uso pelos programas de administrao este apenas uma cpia do PID e no do servidor. aquele checado pelo pg_ctl na inicializao do servidor, que ser checado no diretrio de dados.

Conexes e Autenticao
Parmetro
Definies da Conexo listen_addresse s (string)

8.2 8.1 8.0 7.4 Escopo Padro X X X

Configurado -o em -h x -i

Documentao
Especifica o endereo, ou endereos, de TCP/IP onde o servidor atende as conexes dos aplicativos cliente. O valor tem a forma de uma lista de nomes de hospedeiros, ou de endereos numricos de IP, separados por vrgula. A entrada especial * corresponde a todas as interfaces de IP disponveis. Se a lista estiver vazia, o servidor no atende nenhuma interface IP e, neste caso, somente podem ser utilizados soquetes do domnio Unix para conectar ao servidor de banco de dados. O valor padro localhost, que permite serem feitas apenas conexes locais "retornantes" (loopback).

OBS
Esta configurao substitui tcp_ip e virtual_host do 7.4. A maioria dos usurios iro querer configurar em '*' para escutar todos os endereos ou deixar isto em 'localhost' para uma mquina segura. Ao contrrio das verses anterioras, o padro agora suporta conexes TCP/IP em 127.0.0.1 de forma que um servidor web local possa conectar logo aps a instalao padro. Por motivo de segurana, altere isto aps configurar o seu arquivo pg_hba.conf.

localhost Inicializao

tcpip_socket (boolean)

on / off

off

Inicializao

Se for verdade, ento o servidor aceita conexes Substitudo pelo listen_addreses a partir TCP/IP. Seno, somente so aceitas conexes da verso 8.0. oriundas do soquete do domnio Unix local. O valor padro desabilitado. Especifica o nome de hospedeiro ou endereo de IP onde o servidor est escutando as conexes das aplicaes cliente. O padro escutar em todos os endereos configurados (incluindo localhost). Substitudo pelo listen_addreses a partir da verso 8.0.

virtual_host (string)

Inicializao

port (integer)

129 a 32768

5432

Inicializao

-p #

A porta TCP onde o servidor est atendendo; 5432 por padro. Deve ser observado que utilizada a mesma porta em todos os endereos de IP onde o servidor atende.

A principal razo para utilizar uma porta alternativa a necessidade de rodar mais de um servidor PostgreSQL numa mquina, como durante um upgrade. Uma alternativa a isto a opo em tempo de compilao with-port que configura uma porta alternativa em todas as bibliotecas, retirando a necessidade de lembrar da opo -p em todos os clientes utilitrios. Mantenha o mais baixo possvel para a

max_connection

2a

100

Inicializao

- N Determina o nmero mximo de conexes

Conexes e Autenticao
Parmetro
s (integer)

8.2 8.1 8.0 7.4 Escopo Padro


262143

Configurado -o em #

Documentao
simultneas ao servidor de banco de dados. O valor tpico 100, mas pode ser menor se a configurao do ncleo do sistema operacional no no tiver capacidade para suportar este valor (conforme determinado durante o initdb). Somente pode ser definido na inicializao do servidor. O aumento deste parmetro pode fazer com que o PostgreSQL requisite mais memria compartilhada System V que o permitido pela configurao padro do sistema operacional. Para obter informaes sobre como ajustar estes parmetros deve ser consultada a Seo 16.5.1 , se for necessrio. Determina o nmero de "encaixes de conexo" (connection slots), reservados para os superusurios do PostgreSQL se conectarem. Podem estar ativas at max_connections conexes simultneas. Sempre que o nmero de conexes ativas simultneas for igual ou maior a max_connections menos superuser_reserved_connections, somente sero aceitas novas conexes feitas por superusurios. O valor padro 2. O valor deve ser menor que o valor de max_connections. Especifica o diretrio do soquete do domnio Unix onde o servidor est atendendo as conexes dos aplicativos cliente. Normalmente o valor padro /tmp, mas pode ser mudado em tempo de construo. Define o grupo dono do soquete do domnio Unix (O usurio dono do soquete sempre o usurio que inicializa o servidor). Combinado com o parmetro unix_socket_permissions pode

OBS
sua aplicao, uma vez que cada conexo ativa requer recursos de sistema significativos. Aplicaes Web servindo centenas de usurios devem utilizar um pool de conexes para reduzir o nmero de conexes requeridas no banco de dados. Aumentando isto, ir requerer ajustes no limite de memria do seu SO.

superuser_reser ved_connection s (integer)

0a 2 max_con nections -1

Inicializao

Isto protege o acesso como super usurio em caso do banco de dados $$$. No configure isto em 0 a no ser que voc tiver muita certeza de que o banco de dados no pode ser quebrado. Eu sempre configuro em 1, uma vez que apenas eu conecto ao banco de dados como super usurio no caso de ocorrer algum problema. A configurao padro 2 para o caso de algum utilitrio administrativo ficar continuamente conectado como o autovacuum.

unix_socket_dir ectory (string)

''

Inicializao

unix_socket_gro up (string)

''

Inicializao

Conexes e Autenticao
Parmetro 8.2 8.1 8.0 7.4 Escopo Padro Configurado -o em Documentao
ser utilizado como um mecanismo de controle de acesso adicional para as conexes do domnio Unix. Por padro uma cadeia de caracteres vazia, que utiliza o grupo padro do usurio corrente. unix_socket_per missions (integer)

OBS

0777

Inicializao

Define as permisses de acesso do soquete do domnio Unix. Os soquetes do domnio Unix utilizam o conjunto usual de permisses do sistema de arquivos do Unix. Para o valor deste parmetro, esperada uma especificao de modo numrica, na forma aceita pelas chamadas de sistema chmod e umask (Para utilizar o formato octal, como de costume, o nmero deve comear por 0 (zero)). As permisses padro so 0777, significando que qualquer um pode se conectar. Alternativas razoveis so 0770 (somente o usurio e o grupo, consulte tambm unix_socket_group), e 0700 (somente o usurio); deve ser observado que, na verdade, para soquetes do domnio Unix somente a permisso de escrita tem importncia, no fazendo sentido conceder ou revogar permisses de leitura e de execuo. Este mecanismo de controle de acesso independente do descrito no Captulo 19 . Especifica o nome de difuso (broadcast) Bonjour. O nome do computador utilizado se o parmetro usar o valor de uma cadeia de caracteres vazia (''). Este parmetro ignorado se o servidor no for compilado com suporte ao Bonjour. Em sistemas com suporte a opo de soquete TCP_KEEPIDLE, especifica o nmero de

bonjour_name (string)

''

Inicializao

tcp_keepalives_i dle (integer)

Inicializao

Conexes e Autenticao
Parmetro 8.2 8.1 8.0 7.4 Escopo Padro Configurado -o em Documentao
segundos entre o envio de keepalives em uma conexo ociosa. O valor 0 utiliza o padro do sistema. Se TCP_KEEPIDLE no suportado, este parmetro precisa ser 0. Este parmetro ignorado para conexes feitas atravs de soquete Unix. Em sistemas que suporta ma opo de soquete TCP_KEEPINTVL, especifica o quo longa , em segundos, a espera por uma resposta para o keepalive antes de uma retransmisso. O valor 0 usa o padro do sistema. Se o TCP_KEEPINTVL no suportado, este parmetro precisa ser 0. Este parmetro ignorado para conexes feitas atravs de soquete Unix. Em sistemas que suportam a opo de soquete TCP_KEEPCNT, especifica quantos keepalives podem ser perdidos antes da conexo ser considerada morta. Um valor de 0 usa o padro do sistema. Se o TCP_KEEPCNT no suportado, este parmetro precisa ser 0. Este parmetro ignorado para conexes feitas atravs de soquete Unix. Especifica o nome de difuso (broadcast) Rendezvous. Por padro utilizado o nome do computador, especificado atravs de uma cadeia de caracteres vazia (''). ignorado quando o servidor no compilado com suporte a Rendezvous.

OBS

tcp_keepalives_i nterval (integer)

Inicializao

tcp_keepalives_ count (integer)

Inicializao

rendezvous_na me (string)

''

Inicializao

Conexes e Autenticao
Parmetro
Segurana e autenticao

8.2 8.1 8.0 7.4 Escopo Padro

Configurado -o em

Documentao
Tempo mximo, em segundos, para completar a autenticao do cliente. Se a tentativa de tornar-se cliente no completar o protocolo de autenticao nesta quantidade de tempo, o servidor derruba a conexo. Isto impede que clientes travados fiquem ocupando a conexo indefinidamente. Somente pode ser definido na inicializao do servidor, ou no arquivo postgresql.conf.

OBS
Se voc est rodando um servidor web ocupado, voc ir querer diminuir o timeout da conexo. Certamente voc vai querer combinar com o timeout do seu middleware, ou ento voc poder ficar desnecessariamente indisponvel ou vai esperar muito durante os perodos ocupados. O SSL uma alternativa criptografada ao acesso plano a porta TCP/IP, e um requerimento para clientes preocupados com a segurana da informao, particularmente em uma rede wireless. O PostgreSQL envia consultas e dados em texto plano, mesmo quando a senha est encriptada. SSL pode ser complicado de configurar e dar manuteno, e nem todos softwares clientes podem suportar o acesso SSL. Deve estar habilitado, no arquivo de configurao e por conexo. No h nenhuma razo para ter um banco de dados com senhas de usurios no encriptados. Apenas utilizado para usurios com autenticao Kerberos.

authentication_t imeout (integer)

1 a 600 seg.

60

Reload

ssl (boolean)

on / off

off

Inicializao

Habilita conexes SSL. Por favor leia a Seo 16.7 antes de utilizar este parmetros.

password_encry ption (boolean)

on / off

On

Inicializao

Quando especificada uma senha em CREATE USER ou ALTER USER , sem que seja escrito ENCRYPTED ou UNENCRYPTED, este parmetro determina se a senha deve ser criptografada. Configura a localizao do arquivo com a chave do servidor Kerberos. Veja Seco 19.2.3 para detalhes. Configura o nome do servio Kerberos. Veja a Seo 20.2.3 para detalhes.

krb_server_keyfi le (string) krb_srvname (string)

X X

X X

''

Inicializao

''

Inicializao

Conexes e Autenticao
Parmetro
krb_server_host name (string)

8.2 8.1 8.0 7.4 Escopo Padro X X


''

Configurado -o em
Inicializao

Documentao
Configura o nome da parte hospedeira do servio principal. Este, combinado com krb_srvname, utilizado para gerar o servio completo principal que krb_srvname/ krb_server_hostname@ REALM. Se no for configurado, o padro o nome do host. Veja Seo 20.2.3 para detalhes.

OBS

krb_caseins_use rs (boolean)

on / off

off

Inicializao

Configura de os nomes dos usurios Kerberos devem ser tratados como insensveis a maisculas e minsculas (case-insensitive). O padro off (case sensitive). Permite nomes de usurio por banco de dados. O valor padro falso. Se o valor for verdade, os usurios devem ser criados como nome_do_usurio@nome_bd. Quando o nome_do_usurio passado por um cliente se conectando, so anexados @ e o nome do banco de dados ao nome do usurio, ento o servidor procura por este nome de usurio especfico do banco de dados. Deve ser observado que, no ambiente SQL, para criar nomes de usurio contendo @ necessrio colocar o nome de usurio entre aspas. Quando o valor deste parmetro verdade, ainda podem ser criados usurios globais comuns. Deve apenas ser anexado o caractere @ especificao do nome de usurio no cliente. O caractere @ ser retirado antes do nome de usurio ser procurado pelo servidor. Nota: Esta funcionalidade foi criada como uma medida temporria at que seja encontrada uma soluo definitiva, quando ento ser Esta funcionalidade suporta instalaes (como em provedores de acesso) onde necessrio usurios por banco de dados. uma forma deselegante na melhor das hipteses e ser removida quando uma soluo melhor para este problema for criada. Assim, no use esta opo se voc puder viver sem ela.

db_user_names pace (boolean)

off

Inicializao

Conexes e Autenticao
Parmetro 8.2 8.1 8.0 7.4 Escopo Padro Configurado -o em Documentao
removida.

OBS

Consumo de recursos
Parmetro
Memriai shared_buffers (integer)

8.2 8.1 8.0 7.4 Escopo Padro X X X X

Configurado -o em -B x

Documentao
Define o nmero de buffers de memria compartilhada, utilizados pelo servidor de banco de dados. O valor tpico 1000, mas pode ser menor se a configurao do ncleo do sistema operacional no no 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 necessrio definir um valor bem maior que o mnimo para obter um bom desempenho. So recomendados valores de alguns poucos milhares para instalaes de produo. Somente pode ser definido na inicializao do servidor. O aumento deste parmetro pode fazer com que o PostgreSQL requisite mais memria compartilhada System V que o permitido pela configurao padro do sistema operacional. Para obter informaes sobre como ajustar estes parmetros deve ser consultada a Seo 16.5.1 , se for necessrio. Equivalente a opo work_men. Equivalente a opo maintenance_work_mem. Ajusta o nmero mximo de buffers temporrios usados por cada seo do banco de dados. Estes buffers so locais a sesso e usados apenas no acesso a tabelas temporrias. A configurao pode ser trocada em sesses individuais, mas

OBS
Configurar o shared_buffers requer uma discusso mais longa que este espao dispe. Por favor veja outro artigo sobre este tpico. Para regras prticas: em um servidor PostgreSQL dedicado, este valor deve estar entre 1000 e 50000 (8MB e 400MB). Fatores que aumentam o montante recomendado so mais conexes, pores mais largas do banco de dados ativas, consultas longas e complexas e tabelas largas. A RAM avalivel limita o mximo shared_buffers; voc deve usar no mximo 1/3 da sua RAM avalivel.

16 a 1000 Inicializao 2621143 (4000 na na verso 8.2)

sort_mem (integer) vacuum_mem (integer) temp_buffers (integer)

X X X X

1024 8192 1000

Inicializao Inicializao Inicializao

apenas at o primeiro uso de uma tabela temporria na sesso; subseqentes tentativas de alterar o valor no tero efeito nesta sesso. Uma sesso ir alocar buffers temporrios conforme a necessidade at o limite dado por temp_buffers. O custo desta configurao em um valor grande em sesses que atualmente no necessitam de muito temporary_buffers apenas o descritor do buffer, ou cerca de 64 bytes, por incremento no temp_buffers. Contudo, se um buffer atualmente utilizado um adicional de 8192 bytes (ou geralmente, BLCKSZ bytes). Ajusta o nmero mximo de transaes que podem estar preparadas simultaneamente (veja PREPARE TRANSACTION). Configurando este parmetro para zero desabilita a funcionalidade de transaes preparadas. Se voc no est usando transaes preparadas, este parmetro poder ser configurado para zero. Se voc utiliza-las, voc provavelmente ir querer que max_prepared_transactions sejam to grandes quanto max_connections, para evitar falhas desnecessrias na etapa de preparao. Aumentando este parmetro far o PostgreSQL requisitar mais memria compartilhada ao System V que a configurao padro do seu sistema operacional permite. Veja Seo 16.4.1 para informaes sobre como ajustar estes parmetros. Especifica a quantidade de memria utilizada pelas operaes internas de classificao e tabelas de disperso (hash tables), antes de alternar para arquivos temporrios em disco. O valor especificado em kilobytes, e o valor padro 1024 kilobytes (1 MB). Deve ser observado que, em uma consulta complexa, podem ser executadas vrias classificaes ou Antigamente conhecida como sort_mem, esta configurao teve seu nome trocado para refletir o seu papel estendido em governar no apenas ordenaes. Work_mem uma troca direta. Ajuste ele para cima para: grandes bancos de dados, consultas complexas, muita memria RAM disponveis. Ajuste para

max_prepared_t ransactions (integer)

Inicializao

Mapa do espao livre

max_fsm_pages (integer)

1000 a int_max

20000

Inicializao

Define o nmero mximo de pginas de disco para as quais o espao livre ser acompanhado no mapa de espao livre compartilhado. So consumidos seis bytes de memria compartilhada para cada encaixe de pgina. O valor definido deve ser maior que 16 * max_fsm_relations. O valor padro 20000. Somente pode ser definido na inicializao do servidor.

Um ajuste propcio do FSM pode eliminar ou pelo menos adiar a necessidade de rodar um VACUUM FULL e REINDEX. A melhor forma de configurar isto a seguinte: 1)Entenda que a freqncia de VACUUM (regular) do seu banco de dados baseado na atividade de escrita; 2)Rode o banco de dados sobre carga de produo normal, e rode o VACUUM VERBOSE ANALYZE ao invs do VACUUM, gravando a sada em um arquivo. 3)Calcule o nmero mximo de pginas reparadas entre os VACUUMs baseado na sada e utilize-o. Alternativamente, se voc estiver utilizando o Autocacuum, voc pode se basear como uma porcentagem do total de pginas do seu banco de dados, para casar com a porcentagem do autovacuum. Pouca memria requerida por pgina (cerca de 6 bytes por pgina), ento melhor ser generoso do que avarento. Favor notar que bancos de dados com grandes picos de atividade (surtos de 1 milho de atualizaes tanto para minutos ou horas) este nmero pode ser impossvel de ajustar perfeitamente. Linhas inseridas no so significativas para FSM. Finalmente, se o seu servidor de banco de dados tem pouca RAM, aumentar FSM para os valores necessrios pode ser contra-produtivo.

max_fsm_relatio ns (integer)

1000

Inicializao

Define o nmero mximo de relaes (tabelas e ndices) para as quais o espao livre ser acompanhado no mapa de espao livre compartilhado. So consumidos, aproximadamente, 50 bytes de memria

Poucos usurios vo precisar ajustar este nmero, mas melhor checar. Voc deve ter ao menos tantas FSM_relations quantas tabelas em todos os seus bancos de dados, incluindo o banco de dados de

compartilhada por cada encaixe. O valor padro modelo e o esquema de sistema. O PostgreSQL desenvolve uma performance 1000. Somente pode ser definido na mpar uma vez que no se tenha inicializao do servidor. FSM_relations o suficiente. max_files_per_p rocess (integer)

Utilizao de Recursos do Cerne

10 a int_max

1000

Inicializao

Define o nmero mximo permitido de arquivos Para constar, mais utilizado no BSD. No abertos simultaneamente por cada subprocesso se preocupe com ele a no ser que voc servidor. O valor padro 1000. Se o ncleo receba a mensagem too many files. tiver um limite de segurana por processo, no necessrio se preocupar com esta definio. Entretanto, em algumas plataformas (notadamente a maioria dos sistemas BSD), o ncleo permite que processos individuais abram muito mais arquivos que o sistema pode suportar, quando um grande nmero de processos tenta abrir esta quantidade de arquivos ao mesmo tempo. Se for vista a mensagem de erro "Muitos arquivos abertos" deve-se tentar reduzir esta definio. Especifica uma ou mais bibliotecas compartilhadas a serem pr-carregadas durante a inicializao do servidor. Pode ser chamada, opcionalmente, uma funo de inicializao sem parmetros para cada biblioteca. Para especific-la deve ser adicionado dois-pontos e o nome da funo de inicializao aps 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 vrgula. Se minha_bib ou minha_bib_inic no for encontrada, a inicializao do servidor no ser bem-sucedida. As bibliotecas de linguagem procedural do PostgreSQL so 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 Isto til apenas para bancos de dados especficos com propsitos especializados. Por exemplo, o mapeamento do banco de dados pode ter um pequeno de performance com a prcarga as bibliotecas GIS. Para a maioria dos sistemas, melhor deixar isto vazio.

preload_libraries (string)

Diretrio

Inicializao

compartilhada (e a inicializando, se for aplicvel), ganha-se o tempo de inicializao 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 parmetro s recomendado para bibliotecas utilizadas pela maioria das sesses. Se uma biblioteca especfica no encontrada, o servidor vai falhar na inicializao. Todas as bibliotecas suportadas pelo PostgreSQL possuem um bloco mgico que checado para garantir a compatibilidade. Por esta razo, bibliotecas no-PostgreSQL no podem ser carregadas desta forma.

vacuum_cost_de lay (integer)

Tempo de execuo

Esta configurao extremamente valiosa quando estiver realizando o vacuum em grandes tabelas que de outra A quantidade de tempo, em milissegundos, que forma iriam concorrer pela E/S por o processo adormece quando o custo limite longos perodos e bloquear numerosas excedido. O valor padro 0, que desabilita a consultas. Ativar o o vacuum_delay, funcionalidade de retardo do VACUUM baseado essencialmente quebra o vacuum em uma no custo. Valores positivos habilitam o retardo grande tabela em segmentos definidos do VACUUM baseado no custo. Deve ser como quantidades de trabalhos observado que em muitos sistemas a resoluo especficos, entre o adormecimento do efetiva de adormecimento de 10 vacuum e o tempo definido nesta milissegundos; definir vacuum_cost_delay com configurao. Isto tem o efeito final de um valor que no mltiplo de 10, pode ter o aumentar o tempo requerido pelo mesmo resultado que definir com o prximo vacuum, possivelmente em alguns mltiplo de 10 maior que o valor especificado. mltiplos, mas reduzindo o impacto global no sistema do vacuum, em at 85%. Valores razoveis para o atraso esto entre 50ms e 200ms. O custo estimado para executar o VACUUM em um buffer encontrado no buffer cache compartilhado. Representa o custo para bloquear o buffer pool, examinar a tabela hash compartilhada, e varrer o contedo da pgina. O custo estimado para executar o VACUUM em um buffer que precisa ser lido no disco. Representa o esforo para bloquear o buffer pool, examinar a tabela hash compartilhada, ler o bloco desejado no disco e varrer o seu contedo. O custo estimado cobrado quando o VACUUM modifica um bloco que foi limpo anteriormente. Representa a E/S adicional necessria para descarregar no disco novamente um bloco que foi limpo anteriormente. O custo acumulado que faz com que o processo executando o VACUUM adormea. Nota: Existem determinadas operaes que prendem bloqueios crticos e que devem, portanto, terminar o mais rpido possvel. O Diminua isto para quebrar o vacuum em mais segmentos. Uma combinao bastante agressiva seria um Esta configurao dever provavelmente ser deixada como est em favor de manipular o vacuum_cost_limit.

Retardo do VACUUM baseado no custo

vacuum_cost_pa ge_hit (integer)

Tempo de execuo

vacuum_cost_pa ge_miss (integer)

10

Tempo de execuo

Esta configurao dever provavelmente ser deixada como est em favor de manipular o vacuum_cost_limit.

vacuum_cost_pa ge_dirty (integer)

20

Tempo de execuo

Esta configurao dever provavelmente ser deixada como est em favor de manipular o vacuum_cost_limit.

bgwriter_delay (integer)

200

Inicializao

Especifica o retardo entre rodadas de atividade para escritor de segundo plano. A cada rodada o escritor escreve uma quantidade de buffers sujos (controlado pelos parmetros mostrados a seguir). Os buffers selecionados so sempre os usados menos recentemente entre os buffers sujos atuais. Em seguida adormece por bgwriter_delay milissegundos e repete a operao. Deve ser observado que em muitos sistemas a resoluo efetiva do adormecimento de 10 milissegundos; definir bgwriter_delay com um valor que no mltiplo de 10, pode ter o mesmo resultado que definir com o prximo mltiplo de 10 maior que o valor especificado. Somente pode ser definido na inicializao do servidor, ou no arquivo postgresql.conf. A cada rodada no ser escrito mais que esta percentagem de buffers sujos no momento (as fraes so arredondadas para o prximo nmero inteiro de buffers acima). Somente pode ser definido na inicializao do servidor, ou no arquivo postgresql.conf. A cada rodada no ser escrito mais que esta quantidade de buffers sujos. Somente pode ser definido na inicializao do servidor, ou no arquivo postgresql.conf. Para reduzir a probabilidade do processo do servidor precisar realizar suas prprias escritas, o escritor de segundo plano tenta gravar buffers que sero provavelmente reciclados logo. Em cada rodada, ele examina o bgwriter_lru_percent dos buffers que esto mais prximos de serem reciclados e escreve naquele que estiver sujo. O valor padro 1.0 (este um porcentual com o nmero total de shared_buffers). Em cada rodada, no mais que estes buffers sero gravados como resultado da busca aos buffers prximos de serem reciclados.

Escrita em segundo Plano

O escritor de segundo plano uma nova funcionalidade desenvolvida para aliviar a carga dos checkpoints. Ns ainda estamos realizando testes com as configuraes do bgwriter no OSDL; no h nenhuma recomendao at o momento.

bgwriter_percen t (integer)

Inicializao

Ns ainda estamos realizando testes com as configuraes do bgwriter no OSDL; no h nenhuma recomendao at o momento. Ns ainda estamos realizando testes com as configuraes do bgwriter no OSDL; no h nenhuma recomendao at o momento.

bgwriter_maxpa ges (integer)

100

Inicializao

bgwriter_lru_per cent (floating point)

1,0

Inicializao

bgwriter_lru_ma xpages (integer)

Inicializao

Log de escrita prvia (WAL)


Parmetro
fsync (boolean)

8.2 8.1 8.0 7.4 Escopo Padro X X X X


on / off on

Configurado -o em
Inicializao

Documentao
Se o valor deste parmetro for on, o servidor PostgreSQL utilizar a chamada de sistema fsync() em vrios lugares para ter certeza que as atualizaes esto fisicamente escritas no disco. Isto garante que o agrupamento de bancos de dados vai ser recuperado em um estado consistente aps um problema de mquina ou do sistema operacional Entretanto, a utilizao de fsync() produz uma degradao de desempenho: quando a transao efetivada, o PostgreSQL tem de aguardar o sistema operacional descarregar o log de escrita prvia no disco. Quando fsync est desabilitado, o sistema operacional pode desempenhar da sua melhor maneira a "buferizao", ordenao e retardo na escrita. Isto pode produzir uma melhora significativa no desempenho. Porm, no caso de uma queda do sistema, podem ser perdidos, em parte ou por inteiro, os resultados das poucas ltimas transaes efetivadas. No pior caso, os dados podem ficar corrompidos de uma forma irrecupervel (Para esta situao a queda do servidor de banco de dados no um fator de risco, somente h risco dos dados ficarem corrompidos no caso de queda do sistema operacional). Devido aos riscos envolvidos no existe uma definio universalmente aceita para fsync. Alguns administradores sempre desabilitam fsync, enquanto outros s desabilitam para cargas de dado pesadas, onde claramente existe

OBS
Desligue o WAL (fsync=off) apenas em banco de dados somente para leitura ou onde o banco de dados pode ser restaurado a partir de um software externo. Enquanto RAID mais No-breacks podem fazer muito para proteger seus dados, desligando fsync, significa que voc ir restaurar a partir do backup em caso de falha de hardware ou energia. Por outro lado, o WAL impes uma penalidade significativa a escrita em banco de dados, especialmente em sistemas com apenas um disco. Essencialmente voc est dobrando a quantidade de leitura/gravao requerida por uma atualizao e ainda requerendo que voc desabilite as funcionalidades de cache de disco do seu hardware e SO. Ento, se seus dados so dispensveis, desligar o Fsync uma boa considerao. Se o WAL estiver desligado, o resto destas opes nesta seo so irrelevantes.

-F

um ponto de recomeo se algo de errado acontecer, enquanto outros administradores sempre deixam fsync habilitado. O valor padro para fsync habilitado, para obter o mximo de confiabilidade. Havendo confiana no sistema operacional, na mquina, e nos utilitrios que acompanham (ou na bateria de reserva), podese levar em considerao desabilitar fsync. Somente pode ser definido na inicializao do servidor, ou no arquivo postgresql.conf. Se voc desligar este parmetro, desligue tambm o full_page_writes. Mtodo utilizado para obrigar a colocar as atualizaes do WAL no disco. Os valores possveis so fsync (chamada funo fsync() a cada efetivao), fdatasync (chamada funo fdatasync() a cada efetivao), open_sync (escreve os arquivos WAL com a opo O_SYNC da funo open()), e open_datasync (escreve arquivos WAL com a opo O_DSYNC do open()). Nem todas estas opes esto disponveis em todas as plataformas. Somente pode ser definido na inicializao do servidor, ou no arquivo postgresql.conf.
open_datasync (escreve os arquivos WAL files

wal_sync_method (string)

fsync, fdatasyn c, open_syn c, open_dat async

Varia com a platafor ma

Inicializao

com open() opo O_DSYNC) commit)

fdatasync (chama fdatasync() em cada fsync_writethrough (chama fsync() em cada

A chamada de sistema utilizada para sincronizar o WAL no disco. O padro deve ser ajustado para cada SO baseado na documentao do SO, nas nenhum teste profundo de comparao foi postado. possvel que trocar de mtodo pode melhorar a velocidade de escrita da sua plataforma, mas no brinque com isto a no ser que voc tenha tempo e recursos para rodar testes comparativos e de falhas.

commit, forando escrever atravs de qualquer cache de escrita em disco) fsync (chama fsync() em cada commit) open_sync (escreve os arquivos WAL com open() opo O_SYNC) full_page_writes (boolean)

on / off

on

Inicializao

Quando este parmetro est ligado, o servidor PostgreSQL grava todo o contedo de cada pgina de disco para o WAL durante a primeira modificao daquela pgina aps o checkpoint. Isto preciso porque a gravao da pgina que

est em progresso durante uma queda de sistema est apenas parcialmente completada, deixando uma pgina em disco que contm um misto de dados novos e velhos. A mudana em nvel de linha normalmente armazenada no WAL no ser o suficiente para restaurar completamente a pgina durante uma recuperao ps queda. Armazenando a imagem completa da pgina garante que a pgina ser corretamente restaurada, mas ao preo de aumentar o volume de dados que precisam ser gravados no WAL. (Porque a repassagem do WAL sempre comea a partir do checkpoint, suficiente fazer custo durante a primeira alterao em cada pgina aps o checkpoint. Assim, uma forma de reduzir o custo da gravao da pgina cheia aumentar o parmetro de intervalo do checkpoint. Desligando esta opo resulta numa velocidade normal de operao, mas poder levar a corrupo do banco de dados aps uma falha no Sistema Operacional ou energia. O risco semelhante a desligar o fsync, apesar de menor. Deve ser seguro desligar este parmetro se voc tiver um hardware (como uma controladora de discos com bateria) ou software de sistema de arquivos que reduza o risco de gravaes parciais de pginas em um nvel aceitvel (ex. ReiserFS 4). Desligar este parmetro no afeta o uso do WAL archiving para point-in-time-recovery (PITR) (veja a Seo 23.3). Nmero de buffers de pgina de disco alocados na memria compartilhada para os dados do WAL. O valor padro 8. Esta definio somente precisa ser grande o suficiente para conter a quantidade de dados do WAL gerados por uma transao tpica. Somente pode ser definido na inicializao do servidor. Aumentar este parmetro tem resultado num efeito mnimo, mesmo em um sistema OLTP muito ocupado. Se voc sabe que ter transaes muito longas, voc poder aumentar isto s para estar seguro (para 16 a 64), mas foque o ajuste mais em checkpoint_segments.

wal_buffers (integer)

4a max_int

Inicializao

commit_delay (integer)

0a 100000

Tempo de execuo

Retardo entre a escrita do registro de efetivao 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 vrias transaes efetivadas, se a carga do sistema for alta o suficiente para que outras transaes fiquem prontas para efetivar dentro do intervalo especificado. Entretanto, este retardo simplesmente desperdcio se nenhuma outra transao ficar pronta para efetivar. Portanto, o retardo somente realizado se pelo menos outras commit_siblings transaes estiverem ativas no instante que o processo servidor escrever seu registro de efetivao. O valor padro zero (nenhum retardo).

Estas duas opes so configuradas juntas para um grande volume de pequenas transaes. Quando ajustadas, elas permitem um grupo de diferentes transaes serem enviadas ao disco ao mesmo tempo, com um possvel ganho significativo de performance. Contudo, este uma troca ao esperar alguns milissegundos extras em cada transao. Se voc quiser testar se isto aumenta a performance para voc, um bom ponto de partida um commit_delay de 500 ( milissegundo).

commit_siblings (integer)

1 a 1000 5

Tempo de execuo

Nmero mnimo de transaes simultneas abertas requerido para realizar o retardo commit_delay. Um valor maior torna mais provvel que pelo menos uma outra transao fique pronta para efetivar durante o perodo do retardo. O valor padro 5.

Se estiver usando o commit_delay, voc vai querer alterar esta opo dependendo do comprimento mdio das transaes no seu sistema. Se as transaes forem muito curtas (comandos de atualizao/insero simples de uma linha) ento voc ir utilizar valores baixos como um commit simultneo mais provvel. Se as transaes so longas, voc vai querer aumentar isso para evitar o uso desnecessrio do commit_delay. Esta a opo mais efetiva para lidar com grandes atualizaes, carga de dados e atividade pesada de OLTP. Para qualquer sistema com pesada atividade de escrita, voc dever aumentar isto para ao menos 8; em sistemas com grandes cargas (como a carga de alguns GB de dados), algo em torno de 128 (e ns usamos 256 para testar o DBT2). Contudo, isto requer um montante significativo de espao em disco para o xlog ((2 x segmentos + 1 ) x 16 MB, para

checkpoint_segments (integer)

1a int_max

Inicializao

Distncia mxima entre pontos de controle automtico do WAL, em segmentos de arquivo de log (cada segmento possui normalmente 16 MB). O valor padro 3. Somente pode ser definido na inicializao do servidor, ou no arquivo postgresql.conf.

ser preciso), e seus benefcios so limitados se o seu xlog no est em um disco separado dos dados. Aumentando este valor dramaticamente (at 30 minutos) para grandes cargas de dados. Para outros fins, valores entre 3 e 10 minutos so uma faixa til; use valores mais altos para atividades de escrita que venham em ondas. Aumentar o checkpoint_timeouts atualmente limitado pelo aumento no impacto que a sincronia de disco possui em longos tempos. til para detectar checkpoint_segments que precisam ser aumentados. Habilite isto no perodo de desenvolvimento e procure por alertas no log; muitos deles geralmente significam que um aumento desejvel. Esta configurao liga uma nova funcionalidade no Point In Time Recovery provendo um comando no shell para arquivar (copiar) completamente os segmentos do WAL para outro local. Veja a discusso sobre backup e recuperao para mais informaes sobre como usar isto.

checkpoint_timeout (integer)

30 a 3600

300

Inicializao

Tempo mximo, em segundos, entre pontos de controle automticos do WAL. O valor padro 300 segundos. Somente pode ser definido na inicializao do servidor, ou no arquivo postgresql.conf.

checkpoint_warning (integer)

0a int_max

Inicializao

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 nmero de segundos. O valor padro 30 segundos. Zero desabilita a advertncia. O comando a ser passado para o interpretador de comandos para executar a cpia de segurana de um segmento da srie de arquivos do WAL quando este completado. Se for uma cadeia de caracteres vazia (que o valor padro), a cpia de segurana do WAL desabilitada. Todo %p presente na cadeia de caracteres substitudo pelo caminho absoluto do arquivo cuja cpia de segurana ser feita, e todo %f substitudo apenas pelo nome do arquivo. Deve ser utilizado %% para incluir o caractere % na linha de comando. Para obter mais informaes deve ser consultada a Seo 22.3.1 . Somente pode ser definido na inicializao do servidor, ou no arquivo postgresql.conf. file. importante que o comando retorne um status de sada igual a zero se, e somente se, for bem-sucedido. Exemplos: archive_command = 'cp "%p" /mnt/server/archivedir/"%f"'

archive_command (string)

Comand o do Shell

Inicializao

archive_command = 'copy "%p" /mnt/server/archivedir/"%f"' # Windows O comando de arquivamento s invocado quando os segmentos do WAL so completados. Assim, se o seu servidor gerar pouco trfego de WAL (ou possui perodos em que fica assim), ele pode ter um longo atraso entre o trmino de uma transao e a gravao segura no storage de arquivamento. Para colocar um limite em quo antigo uma informao no arquivada pode estar, voc pode configurar o archive_timeout para forar o servidor a trocar para um novo segmento de WAL periodicamente. Quando este parmetro maior que zero, o servidor ir trocar para um novo arquivo de segmento sempre que o nmero de segundos passados a partir da ltima troca de arquivo de segmento. Note que os arquivo arquivados que so fechados antes por uma troca forada ainda possuem o mesmo comprimento de um arquivo completamente cheio. ento no recomendado ajustar um valor muito pequeno para archive_timeout ele ir esgotar o ser espao de armazenamento de arquivamento. Valores de archive_timeout de um minuto prximo a isso so usualmente razoveis.

archive_timeout (integer)

Inicializao

Planejamento de Consultas
Parmetro 8.2 8.1 8.0 7.4 Escopo Padro Configurado -o em Documentao OBS

enable_bitmaps can (boolean) enable_hashagg (boolean) enable_hashjoin (boolean) enable_indexsca n (boolean) enable_mergejoi n (boolean)

X X X X

X X X X X X X X X X

on / off

on

Tempo de execuo Tempo de execuo Tempo de execuo Tempo de execuo Tempo de execuo

Habilita ou desabilita o uso pelo planejador de comandos dos planos do tipo bitmap-scan. Habilita ou desabilita o uso pelo planejador de comandos dos planos do tipo agregao por hash. Habilita ou desabilita o uso pelo planejador de comandos dos planos do tipo juno por hash. Habilita ou desabilita o uso pelo planejador de comandos dos planos do tipo varredura de ndice. Habilita ou desabilita o uso pelo planejador de comandos dos planos do tipo juno por mesclagem.

Configurao do Mtodo de Planejamento

on / off

on

on / off

on

on / off

on

on / off

on

enable_nestloop (boolean)

on / off

on

Tempo de execuo

enable_seqscan (boolean)

on / off

on

Tempo de execuo

Estas opes so mais para uso apenas em testes de consultas; freqentemente Habilita ou desabilita o uso pelo planejador de configurado enable_seqscan = off para comandos dos planos do tipo juno por lao determinar se o planejador est aninhado. No possvel suprimir junes por descartando desnecessariamente um lao aninhado inteiramente, mas tornar o valor ndice, por exemplo. Contudo, podem deste parmetro igual a off desestimula a haver circunstncias muito incomuns utilizao deste mtodo pelo planejador, quando para trocar qualquer um para off no h outro mtodo disponvel. arquivo de configurao. De fato, se voc se encontrar fazendo-o, ento Habilita ou desabilita o uso pelo planejador de provavelmente outras opes de ajuste comandos dos planos do tipo varredura esto superdimencionadas e precisam ser seqencial. No possvel suprimir as alteradas. varreduras seqenciais inteiramente, mas tornar o valor deste parmetro igual a off desestimula a utilizao deste mtodo pelo planejador, quando h outro mtodo disponvel. Habilita ou desabilita o uso pelo planejador de comandos dos passos de classificao explcita pelo planejador de comandos. No possvel suprimir as classificaes explcitas inteiramente, mas tornar o valor deste parmetro igual a off desestimula a utilizao deste mtodo pelo planejador, quando h outro mtodo disponvel.

enable_sort (boolean)

on / off

on

Tempo de execuo

seq_page_cost (floating point)

0a double

1,0

Tempo de execuo

Configura a estimativa do planejador para o custo buscar uma pgina de disco que parte uma serie de buscas seqenciais. Define o tamanho efetivo presumido pelo planejador acerca do cache de disco disponvel para uma nica varredura de ndice. um dos elementos usados na estimativa do custo de utilizao de um ndice; um valor maior torna mais provvel a utilizao de uma varredura de ndice, enquanto um valor menor torna mais provvel a utilizao de uma varredura seqencial. Ao definir este valor devem ser considerados os buffers de memria compartilhada do PostgreSQL, e a parcela do cache de disco do ncleo que ser utilizada pelos arquivos de dado do PostgreSQL. Tambm deve ser levado em considerao o nmero esperado de comandos simultneos que utilizam ndices diferentes, uma vez que estes tm de compartilhar o espao disponvel. Este parmetro no tem efeito sobre o tamanho da memria compartilhada alocada pelo PostgreSQL, nem reserva cache de disco do ncleo; usado apenas para finalidades de estimativa. O valor medido em pginas de disco, normalmente com 8192 bytes cada. Define a estimativa do planejador de comandos do custo da busca no seqencial de uma pgina de disco. medido como um mltiplo do custo da busca seqencial de uma pgina. Um valor maior torna mais provvel a utilizao de uma varredura seqencial, enquanto um valor menor torna mais provvel a utilizao de uma uma varredura de ndice. O valor padro 4.

Constantes de Custo do Planejador

effective_cache_ size (floating point)

0a double

1000 (16384 na verso 8.2)

Tempo de execuo

Primariamente ajusta a estimativa do planejador relativo a como uma tabela ou ndice estaro na memria, e ir ter significativo efeito em como o planejador escolhe ndices ao invs de buscas seqenciais, bem como algumas outras outras estruturas de controle. Assim, deve ser configurado em cerca de 2/3 da sua RAM disponvel para garantir que o planejador ser informado adequadamente. Muitas vezes, DBAs desejam desligar o enable_seqscan ao invs de mudar esta configurao.

random_page_c ost (floating point)

0a double

4,0

Tempo de execuo

Valores teis para esta opo esto entre 2,0 e 4,0, o mais baixo para CPU rpida, I/O rpida e bancos de dados que cabem completamente na RAM e o mais alto se sua CPU e banda so taxados, ou se suas tabelas e ndices so vrias vezes maior que a sua RAM disponvel. Nunca Dica: Embora o sistema permita que voc use o configure isto em menos que 1,5; se random_page_cost sendo menor que problemas com consultas lhe indicarem seq_page_cost, isto no fisicamente sensvel. para faz-lo, ento provavelmente outras Contudo, ajustando eles igualmente faz sentido configuraes (como se todo o banco de dados estiver cacheado em effective_cache_size) precisam de ajuste.

geqo (boolean)

on / off

on

Tempo de execuo

O GEQO foi introduzido no PostgreSQL 6.5 como uma forma de lidar com otimizaes de junes (join) em consultas com muitas tabelas com uma exaustiva anlise pelo planejador. importante perceber que as consultas GEQO so em via de regra mais lentas na Habilita ou desabilita a otimizao gentica de sua execuo que as consultas normais. comandos, que um algoritmo que tenta Foi projetado para ser utilizado quando realizar um planejamento de comandos sem de outra forma o planejamento da uma busca exaustiva. O valor padro consulta possa consumir todos recursos habilitado. A varivel geqo_threshold permite uma forma mais granular para desabilitar GEQO da sua CPU. para certas classes de comandos. Voc descobrir que se sua aplicao estiver utilizando muito o GEQO , provavelmente aconselhvel comear a escrever consultas com uma ordem explcita, conforme voc conseguir exercer maior discriminao que o algoritmo. A otimizao gentica de comandos utilizada para planejar comandos com pelo menos esta quantidade de itens envolvidos na clusula FROM (Deve ser observado que uma construo de JOIN externa conta como apenas um item da clusula FROM). O valor padro 12. Para comandos simples geralmente melhor utilizar o planejamento determinstico exaustivo, mas para comandos com muitas tabelas o planejamento determinstico leva muito tempo. Controla o equilbrio entre o tempo de planejamento e a eficincia do planejamento do comando no GEQO. O valor desta varivel deve ser um nmero inteiro no intervalo de 1 a 10. O valor padro 5. Valores maiores aumentam o tempo gasto para fazer o planejamento do comando, mas tambm aumentam a chance de ser escolhido um plano de comando eficiente. Na verdade, a varivel geqo_effort no faz nada diretamente; utilizada apenas para calcular os valores padro para as outras variveis que influenciam o comportamento do GEQO possvel que em mquinas com CPUs muito rpidas (Opteron dual, por exemplo) aumentando esta opo suavemente (como em 14) seguro. Contudo, fique avisado que aumentando isto para 20, tornar isto no usual e no testado uma vez que um valor descabido.

Otimizao Gentica de Consultas

geqo_threshold (integer)

0a max_int

12

Tempo de execuo

geqo_effort (integer)

1 a 10

Tempo de execuo

default_statistic s_target (integer)

1 a 1000 10

Tempo de execuo

Define a quantidade padro de estatsticas para as colunas das tabelas que no possuem uma quantidade especfica definida atravs do comando ALTER TABLE SET STATISTICS. Valores maiores aumentam o tempo necessrio para executar o comando ANALYZE, mas podem melhorar a qualidade das estimativas do planejador. O valor padro 10. Para obter informaes adicionais sobre a utilizao das estatsticas pelo planejador de comandos do PostgreSQL deve ser consultada a Seo 13.2 . Habilita e desabilita o planejador de consultas no uso de tabelas de restries (constraints) para otimizar consultas. O padro desligado. Quando este parmetro est ligado, o planejador compara as condies da consulta com as restries CHECK das tabelas e omite a busca em tabelas que contradizem as condies das restries. Por exemplo: CREATE TABLE parent(key integer, ...); CREATE TABLE child1000(check (key between 1000 and 1999)) INHERITS(parent); CREATE TABLE child2000(check (key between 2000 and 2999)) INHERITS(parent); ... SELECT * FROM parent WHERE key = 2400; Com o constraint exclusion habilitado, este SELECT no ir buscar child1000. Isto pode aumentar a performance quando a herana for utilizada para construir tabelas particionadas. Atualmente, constraint_exclusion est desabilitado por padro, porque ele arrisca resultados incorretos no planejamento das consultas se o plano estiver cacheado se a restrio de tabela mudar ou for removida, o plano gerado anteriormente estar agora errado

No tem efeito at o prximo ANALYZE. Geralmente no recomendado como uma forma de melhorar as estatsticas exceto para bancos de dados no usuais; Um detalhe, coletando estatsticas crescentes em colunas largas (textos longos, por exemplo) pode ser pesado o suficiente para ser improdutivo. Em um banco de dados com quase todos os dados numricos, acrscimos modestos (para 100 por exemplo) podem ter um benefcio geral. Tente aumentar as estatsticas em colunas especficas.

Outras Opes do Planejador

constraint_exclu sion (boolean)

on / off

off

Tempo de execuo

Relato de Erros e Log


Parmetro 8.2 8.1 8.0 7.4 Escopo Padro Configurado -o em Documentao OBS

log_destination (string)

stderr, syslog, stderr eventlog

Inicializao

Isto anlogo ao antiga opo syslog, mas com os cdigos ocultos removidos. Tambm suporta o eventlog to Win32. O PostgreSQL dispe de vrios mtodos para Quando ajustado para o seu servidor, registrar as mensagens do servidor, incluindo importante decidir como voc quer stderr e syslog. No Windows tambm h suporte gerar o log das mensagens do para eventlog. Este parmetro definido PostgreSQL : syslog, que mais fcil atravs de uma lista de destinos desejados para para a administrao do sistema ou um registrar as mensagens, separados por vrgula. log privado do PostgreSQL, que melhor O padro registrar apenas em stderr. para encontrar problemas no banco de dados. Claro que voc pode logar em ambos, mas isto provavelmente um excesso de sada. Permite que as mensagens enviadas para stderr sejam capturadas e redirecionadas para os arquivos de registro (log). Combinada com stderr esta opo geralmente mais til que registrar em syslog, uma vez que alguns tipos de mensagem podem no aparecer na sada para syslog; um exemplo comum uma mensagem de falha do ligador dinmico (dynamic-linker). Quando redirect_stderr est habilitado, este parmetro determina o diretrio onde os arquivos de registro sero criados. Pode ser especificado como um caminho absoluto, ou como um caminho relativo ao diretrio de dados do agrupamento. Somente pode ser definido na inicializao do servidor, ou no arquivo postgresql.conf. Quando redirect_stderr est habilitado, este parmetro define os nomes dos arquivos de registro criados. O valor tratado como um padro para a funo strftime, [3] portanto podem ser utilizados os escapes de % para especificar nomes de arquivos que variam com o tempo. Se no houver nenhum escape de % presente, o PostgreSQL anexa a poca do momento de abertura do arquivo de registro ao nome do arquivo. Por exemplo, se log_filename for igual a server_log, ento o nome escolhido Este a nova funcionalidade de rotacionar logs. Ele tambm substitui a linha de comando de troca do pg_ctl -l, e/ou redirecionamento em linha de comando. Ele s aplicvel se voc escolher stderr acima, e as 5 opes seguintes s tero efeito se voc o escolher. Voc pode usar redirect_stderr e desligar a rotao nesta ordem para criar o mesmo efeito da antiga opo -l. O padro para o pg_log o seu diretrio PGDATA, que no provavelmente uma escolha sbia se voc tem outro disco/arranjo avalivel. /var/pg_log popular.

Onde Logar

redirect_stderr (boolean)

on / off

Inicializao

log_directory (string)

Diretrio pg_log

Inicializao

log_filename (string)

postgres ql-%Y%m-%d_ Inicializao %H%M %S.log

Nome do arquivo para cada segmento de log rotacionado, com escapes. O padro deve servir para a maioria dos DBAs. Se os seus logs nunca ficam acima do tamanho, ele pode simplesmente incluir a data. Outra possibilidade ter apenas o registro da hora ou apenas o dia da semana, para prevenir mais do que um certo nmero de logs. Veja log_truncate

client_min_mess ages (string)

NOTICE

Tempo de execuo

Controla que nveis de mensagem so enviadas para o cliente. Cada nvel inclui todos os nveis que o seguem. Quanto mais para o final estiver o nvel, menos mensagens so enviadas. Deve ser observado que aqui LOG possui uma situao relativa diferente da que tem em log_min_messages

Quando Logar

log_min_messag es (string)

DEBUG5, DEBUG4, DEBUG3, NOTICE DEBUG2, DEBUG1, INFO, NOTICE, WARNIN G, ERROR, LOG, FATAL, PANICii PANIC

Tempo de execuo (Superusurio)

log_min_error_st atement (string)

Tempo de execuo (Superusurio)

Controla que nveis de mensagem so escritas no log do servidor. Cada nvel inclui todos os nveis que o seguem. Quanto mais para o final estiver o nvel, menos mensagens so enviadas. Deve ser observado que aqui LOG possui uma O custo o maior uso do espao em situao relativa diferente da que tem em disco, algum custo menor de client_min_messages. Somente os superusurios performance para sada (usualmente < podem aumentar esta opo. 5%). Contudo, o custo de performance Controla se o comando SQL causador da aumenta significativamente se seus logs condio de erro tambm ser registrado no log esto no mesmo disco/arranjo que o WAL do servidor. Todas as declaraes SQL ou seu banco de dados, uma vez que uma causadoras de um erro do nvel especificado, ou sada pesada de debug ir pegar E/S da de nvel mais alto, so registradas. O valor atividade do banco de dados. O impacto padro PANIC (tornando de fato esta de debug5 em um sistema intenso de funcionalidade desabilitada para o uso normal). transaes em um nico disco pode ser Os valores vlidos so. Por exemplo, se for bem alto. Esta precauo se aplica a definido como ERROR ento todas as todas as opes abaixo. declaraes SQL causadoras de erro, erros fatais ou pnicos sero registradas. Habilitar esta opo pode ser til para encontrar a origem de qualquer erro que aparea no log do servidor. Somente os superusurios podem alterar esta definio. Controla a quantidade de detalhes escritos no log do servidor para cada mensagem que registrada. Os valores vlidos so TERSE (sucinto), DEFAULT e VERBOSE, cada um adicionando mais campos s mensagens escritas. Somente os superusurios podem alterar esta definio. Define o tempo de execuo mnimo da declarao (em milissegundos) para que a declarao seja registrada. Todas as declaraes SQL cujo tempo de execuo for Qual configurao voc usar aqui depender do seu status de produo, e qual ferramentas de monitoramento de logs voc est usando.

Aumentando o nvel de debug sempre bom para testar aplicaes/ DEBUG1 uma boa configurao para resoluo de problemas. NOTICE adequado para produo em geral, e sistemas testados provavelmente vo ser reduzidos a ERROR ou at FATAL.

log_error_verbos ity (string)

TERSE, Tempo de DEFAULT DEFAULT execuo , (Superusurio) VERBOSE

Esta opo extremamente til para um

debug_print_par se (boolean) debug_print_rew ritten (boolean) debug_print_pla n (boolean) debug_pretty_pr int (boolean)

on / off

off

Tempo de execuo (Superusurio)

Estes parmetros habilitam a emisso de vrias sadas de depurao. Para cada comando executado, imprimem a rvore de anlise resultante, a sada do reescritor de comando, ou o plano de execuo. debug_pretty_print introduz recuos na mensagem mostrada, produzindo um formato de sada mais legvel, mas muito mais longo. client_min_messages e log_min_messages devem estar em DEBUG1 ou abaixo, para ser enviada a sada para o log do cliente ou do servidor, respectivamente. Estes parmetros esto desabilitados por padro.

O que Logar

Pode ser til para detectar consultas comumente lentas se voc estiver habilitado a passar por volumosas sadas de log. Particularmente til no registro interativo olhando quando procedimentos rodarem; voc pode algumas vezes ver exatamente qual passo est rodando (algumas vezes no pode, devido a espera no registro no banco de dados).

log_connections (boolean)

on / off

off

Inicializao

log_disconnectio ns (boolean)

on / off

off

Inicializao

Gera uma linha para o log do servidor detalhando cada conexo bem-sucedida. O valor padro desabilitado embora, provavelmente, seja muito til. Somente pode ser definido na inicializao do servidor, ou no arquivo postgresql.conf. Itens de registro essenciais para qualquer aplicao segura. Gera uma linha para o log do servidor semelhante gerada por log_connections, mas no trmino da sesso, incluindo a durao da sesso. Est desabilitado por padro. Somente pode ser definido na inicializao do servidor, ou no arquivo postgresql.conf. Faz com que seja registrada a durao de toda declarao completada que satisfaz log_statement. Quando esta opo utilizada, se syslog no estiver sendo utilizado, recomenda-se que o PID ou o ID da sesso seja registrado utilizando log_line_prefix, para que seja vinculada a declarao durao utilizando o ID do processo ou o ID da sesso. O valor padro desabilitado. Somente os superusurios podem alterar esta definio. O valor deste parmetro uma cadeia de caracteres no estilo da funo printf, mostrada no comeo de cada linha de registro. O valor padro uma cadeia de caracteres vazia. Cada escape reconhecido substitudo conforme mostrado abaixo qualquer outra coisa que se parea com um escape ignorada. Os demais Essencial para um tuning do banco de dados numa primeira etapa. O utilitrio de resumo de registro PQA, por exemplo, requer que as opes log_statement e log_duration para suprir voc com uma lista das consultas mais freqentes. S tem efeito se log_statement ao menos DDL

log_duration (boolean)

on / off

off

Tempo de execuo (Superusurio)

Estatsticas de tempo de execuo


Parmetro 8.2 8.1 8.0 7.4 Escopo Padro Configurado -o em Documentao OBS

log_statement_s tats (boolean) log_parser_stats (boolean) log_planner_stat s (boolean) Tempo de execuo (Superusurio)

tp a tpl -te

Monitoramento de Estatsticas

on / off

off

log_executor_st ats (boolean)

-s

Para cada comando, so registradas estatsticas de desempenho do respectivo mdulo no log do servidor. um instrumento rudimentar para traar um perfil. log_statement_stats relata estatsticas totais da declarao, enquanto os demais relatam estatsticas por mdulo. log_statement_stats no pode ser habilitado junto com qualquer outro parmetro pormdulo. Todos estes parmetros esto desabilitados por padro. Somente os superusurios podem alterar estas definies.

A no ser que voc tenha uma ferramenta sria de tratamento de log projetada para extrair informaes teis, de utilidade limitada devido ao seu grande volume.

stats_command _string (boolean)

on / off

on

Tempo de execuo (Superusurio)

Habilita a coleta de estatsticas para o comando executando no momento em cada sesso, junto com o momento em que o comando comeou a executar. Esta opo est desabilitada por padro. Deve ser observado que, mesmo quando est habilitada, esta informao no visvel por todos os usurios, mas somente pelos superusurios e o usurio dono da sesso sendo relatada; portanto, no deve representar um risco segurana. Este dado pode ser acessado atravs da viso do sistema pg_stat_activity; para obter mais informaes deve ser consultado o Captulo 23 . Habilita a atualizao do ttulo do processo sempre que um novo comando SQL recebido pelo servidor. O ttulo do processo tipicamente visto pelo pelo comando ps ou no Windows utilizando o o Process Explorer. Controla se o servidor deve inicializar o subprocesso coletor de estatsticas. Est habilitado por padro, mas pode ser desabilitado quando se sabe que no h interesse em coletar estatsticas. Habilita a coleta de estatsticas no nvel de bloco da atividade do banco de dados. O valor padro desabilitado. Se estiver habilitado, os dados produzidos podem ser acessados atravs da famlia de vises do sistema pg_stat e pg_statio; para obter informaes adicionais deve ser consultado o Captulo 23 . Habilita a coleta de estatsticas no nvel de linha da atividade do banco de dados. O valor padro desabilitado. Se estiver habilitado, os dados produzidos podem ser acessados atravs da famlia de vises do sistema pg_stat e pg_statio; para obter informaes adicionais deve ser consultado o Captulo 23 . Se estiver habilitado, as estatsticas coletadas so zeradas sempre que o servidor reinicializado. Se estiver desabilitado, as estatsticas so acumuladas entre as

Coletor de Estatsticas de Consulta e ndice

Isto permite que voc utilize a viso pg_stat_activity para rastrear a consultas correntes, que podem ser valorosas para resolver problemas. A maioria dos DBAs iro querer ligar isto.

update_process _title (boolean)

on / off

Tempo de execuo (Superusurio)

stats_start_colle ctor (boolean)

on / off

on

Inicializao

A menos que cerca de 5% de overhead criado pelo coletor de estatsticas seja crtico para o seu sistema, voc deve ligar ao menos o start_collector e stats_command_string. Lhe d estatsticas de nvel de bloco, que so teis no monitoramento de E/S e performance de acerto no cache para tuning de variveis de sistemas e hardware. Novamente, ligue durante os testes de sistema e desligue novamente na produo. Esta opo habilita a coleta de algumas estatsticas sobre o uso de ndices e tabelas. De importncia vital para o tuning inicial do banco de dados, isto pode ser menos til em produo e provavelmente poder ser desligado. Se a rotina de reiniciar o banco de dados faz parte do seu plano de manuteno, ento provavelmente voc ir querer

stats_block_leve l (boolean)

on / off

off

Tempo de execuo (Superusurio)

stats_row_level (boolean)

on / off

off

Tempo de execuo (Superusurio)

stats_reset_on_s erver_start

on / off

off

Inicializao

Vacuum Automtico
Parmetro
autovacuum (boolean)

8.2 8.1 8.0 7.4 Escopo Padro X X

Configurado -o em

Documentao
Controla como o servidor dever rodar o daemon autovacuum. stats_start_collector e stats_row_level precisam tambm estar ativados para o autovacuum funcionar. Especifica o intervalo entre os turnos de atividades para o deamon autovacuum. Em cada turno o daemon examina um banco de dados e realiza os comandos VACUUM e ANALYZE conforme necessrio para tabelas no banco de dados. O intervalo medido em segundos. Especifica o nmero mnimo de tuplas atualizadas ou deletadas necessrias para disparar o VACUUM em qualquer tabela. Este parmetro s pode ser ajustado no arquivo postgresql.conf ou pode ser sobrescrito para tabelas individuais em entradas no pg_autovacuum. Especifica o nmero mnimo de tuplas inseridas, atualizadas ou deletadas para disparar um ANALYZE em qualquer tabela. Este parmetro s pode ser ajustado no arquivo postgresql.conf ou pode ser sobrescrito para tabelas individuais em entradas no pg_autovacuum. Especifica a frao do tamanho da tabela para adicionar no autovacuum_vacuum_threshold quando decidir se ir disparar um VACUUM. Este parmetro s pode ser ajustado no arquivo postgresql.conf ou pode ser sobrescrito para tabelas individuais em entradas no pg_autovacuum. Especifica a frao do tamanho da tabela para adicionar no autovacuum_analyze_threshold quando decidir se ir disparar um ANALYZE.

OBS

on / off

off

autovacuum_naptime (integer)

60

autovacuum_vacuum_ threshold (integer)

500

autovacuum_analyze_ threshold (integer)

250

autovacuum_vacuum_ scale_factor (floating point)

0,2

autovacuum_analyze_ scale_factor (floating point)

0,1

Este parmetro s pode ser ajustado no arquivo postgresql.conf ou pode ser sobrescrito para tabelas individuais em entradas no pg_autovacuum. Especifica o valor do custo do atraso que ir ser usado numa operao de VACUUM automtico. Se -1 especificado, o vacuum_cost_delay regular ir ser utilizado. Este parmetro s pode ser ajustado no arquivo postgresql.conf ou pode ser sobrescrito para tabelas individuais em entradas no pg_autovacuum. Especifica o valor limite de custo que ser utilizado numa operao de VACUUM automtica. Este parmetro s pode ser ajustado no arquivo postgresql.conf ou pode ser sobrescrito para tabelas individuais em entradas no pg_autovacuum. Especifica o perodo mximo (em transaes) que o campo da tabela pg_class.relfrozenxid pode se ater antes de a operao VACUUM ser forada a prevenir o esgotamento do ID de transaes na tabelas. Note que o sistema ir lanar o processo autovacuum mesmo quanto o autovacuum estiver desabilitado. Este parmetro s pode ser ajustado no arquivo postgresql.conf ou pode ser sobrescrito para tabelas individuais em entradas no pg_autovacuum. Para mais informao ver a Seo 22.1.3. Especifica o tempo de corte (em transaes) que o VACUUM deve usar para decidir se deve substituir o ID da transao com o FrozenXID enquanto busca a tabela. O VACUUM ir silenciosamente limitar o valor de autovacuum_freeze_max_age, assim no haver um curto perodo entre os autovacuums forados. Para mas informaes ver a Seo 22.1.3.

autovacuum_vacuum_ cost_delay (integer)

-1

autovacuum_vacuum_ cost_limit (integer)

-1

autovacuum_freeze_ max_age (integer)

2000000 00

vacuum_freeze_min_ age (integer)

0a 1000000 1000000 00 000

Padres de conexo do cliente


Parmetro 8.2 8.1 8.0 7.4 Escopo Padro Configurado -o em Documentao OBS

search_path (string)

Caminho

$User, public

Tempo de execuo

Esta varivel especifica a ordem de procura nos esquemas quando um objeto (tabela, tipo de dado, funo, etc.) referenciado simplesmente por um nome, sem o componente do esquema. Quando existem objetos com nomes idnticos em esquemas diferentes, utilizado o que for encontrado primeiro no caminho de procura. Um objeto que no est em nenhum dos esquemas do caminho de procura, somente pode ser referenciado especificando o esquema que o contm usando um nome qualificado (com ponto). O valor de search_path deve ser uma lista de nomes de esquemas separados por vrgula. Se um dos itens da lista for o valor especial $user, ento este valor substitudo pelo esquema que tem o nome retornado por SESSION_USER, caso este esquema exista (caso contrrio, $user ignorado). sempre feita a procura no esquema do catlogo do sistema, pg_catalog, esteja presente no caminho de procura ou no. Se estiver mencionado no caminho de procura, ento a procura ser feita na ordem especificada. Se pg_catalog no estiver presente no caminho de procura, ento ser feita a procura neste esquema antes de ser feita a procura em qualquer um dos esquemas do caminho de procura. Tambm deve ser observado que feita a procura no esquema de tabela temporria, pg_temp_nnn, antes de ser feita em qualquer um dos outros esquemas. Quando os objetos so criados sem especificar o esquema de destino, so colocados no primeiro esquema da lista do caminho de procura. Quando o caminho de procura est vazio gerado um erro. O valor padro para este parmetro '$user, public' (onde a segunda parte ignorada quando no h um esquema chamado public). D suporte ao uso compartilhado de um banco de dados (onde nenhum usurio possui um esquema privativo, e todos compartilham o esquema public), esquemas privativos por usurio, e a combinao destes. Podem ser obtidos outros

Comportamento da declarao

Esta a varivel para manipular depois de voc ter o design do esquema do banco de dados, mas no necessariamente neste arquivo. Por exemplo, voc pode ajustar o search_path por usurio, o que feito atravs do do ALTER USER. Por outro lado, se voc est usando mltiplos esquemas que precisam ser visveis por todos usurios, lembre de colocar os esquemas adicionais no search_path no postgresql.conf.

ISO, Postgres, SQL ou German DateStyle (string)

X
DMY, MDY, ou YMD

ISO, MDY

Define o formato de exibio para os valores de data e hora, assim como as regras para interpretar valores de entrada de data ambguos. Por motivos histricos esta varivel contm dois componentes independentes: a especificao do formato de sada (ISO, Postgres, SQL ou German), e a especificao para entrada/sada da ordem de dia, ms e ano na data (DMY, MDY, ou YMD). Podem ser definidos separadamente ou juntos. As palavras chave Euro e European so sinnimos para DMY; as palavras chave US, NonEuro, e NonEuropean so sinnimos para MDY. Para obter informaes adicionais deve ser consultada a Seo 8.5 . O valor padro ISO, MDY. Define a zona horria para exibir e interpretar os carimbos do tempo. O valor padro 'unknown', o que significa utilizar o que estiver especificado no ambiente do sistema operacional para zona horria. Para obter informaes adicionais deve ser consultada a Seo 8.5 . Se estiver definido como verdade, ACST, CST, EST e SAT so interpretados como zonas horrias da Austrlia, em vez de zonas horrias das Amricas e Sbado. O valor padro falso. Ajusta uma coleo de abreviaes de zonas horrias que sero aceitas pelo servidor para a entrada de data e hora. O padro Default, que uma coleo que funciona com a maior parte do mundo; h tambm 'Australia', 'India' e outras colees que podem ser definidas para instalaes particulares. Veja o Apndice B para mais informao. Ajusta o nmero de dgitos mostrados em valores de ponto flutuante, incluindo float4, float8 e tipos de dado geomtricos. O valor do parmetro adicionado ao nmero de dgitos padro (FLT_DIG e DBL_DIG, conforme seja apropriado). O valor pode ser definido to alto

Idioma e Formatao

Para trocar a exibio padro de datas e a interpretao do timezone adequado para a sua localidade.

timezone (string)

'unknow n'

australian_timez ones (boolean)

on / off

off

timezone_abbr eviations (string)

'Default'

extra_float_digit

-14 a 2

explain_pretty_p rint (boolean)

on / off

on

Determina se EXPLAIN VERBOSE utiliza a formatao com recuos ou sem recuos para mostrar o contedo detalhado das rvores de comando. O valor padro habilitado. Se for necessrio abrir um mdulo carregvel dinamicamente, sem que o nome de arquivo especificado no comando CREATE FUNCTION ou no comando LOAD possua componente de diretrio (ou seja, o nome no contm 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 diretrio separados por dois-pontos. Se o elemento da lista comear pela cadeia de caracteres especial $libdir, este valor substitudo pelo diretrio de biblioteca do pacote PostgreSQL compilado. Este o local onde os mdulos fornecidos na distribuio do PostgreSQL so instalados (deve ser utilizado o comando pg_config --pkglibdir para descobrir o nome deste diretrio [8] ). Por exemplo: dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib: $libdir' ou, no ambiente Windows: dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' O valor padro deste parmetro '$libdir'. Se o valor for definido como uma cadeia de caracteres vazia, desabilitada a procura automtica no caminho. Este parmetro pode ser modificado em tempo de execuo pelos superusurios, mas a definio feita desta maneira somente preservada at o final da conexo do cliente, portanto este mtodo deve ser reservado para fins de desenvolvimento. A maneira recomendada para definir este parmetro atravs do arquivo de configurao postgresql.conf.

Se voc precisa usar o EXPLAIN VERBOSE, pretty_print essencial para a legibilidade; ajustado para On. Em raras ocasies o VERBOSE necessrio.

Outros Padres

dynamic_library _path (string)

Gerenciamento de Lock
Parmetro 8.2 8.1 8.0 7.4 Escopo Padro Configurado em Documentao
Quantidade de tempo, em milissegundos, para aguardar pelo trmino do bloqueio antes de verificar a existncia de uma condio de impasse (deadlock). A verificao de impasse relativamente lenta e, portanto, o servidor no faz esta verificao toda vez que aguarda pelo trmino do bloqueio. Ns (otimistas?) assumimos que os bloqueios no so comuns em aplicativos em produo e, simplesmente, aguardamos pelo trmino do bloqueio por algum tempo antes de comear a verificar a situao de impasse. O aumento deste valor reduz a quantidade de tempo desperdiada em verificaes de impasse desnecessrias, mas atrasa o relato de erros de impasse verdadeiros. O valor padro 1000 (ou seja, um segundo), que provavelmente o menor valor desejado na prtica. Em servidores muito carregados pode ser desejado aumentar este valor. A definio ideal deve ser um valor superior ao tempo tpico de uma transao, para melhorar a chance do bloqueio ser liberado antes de decidir verificar o impasse. A tabela de bloqueio compartilhada dimensionada pela hiptese de que necessrio bloquear, no mximo, max_locks_per_transaction * max_connections objetos distintos de uma vez (Desta forma, o nome deste parmetro pode confundir: no um limite rgido do nmero de bloqueios de alguma transao, mas sim o valor mdio mximo). O valor padro, 64, tem se mostrado historicamente suficiente, mas pode ser Ocasionalmente pode ser necessrio aumentar este parmetro em bancos de dados em esquema de estrela com centenas de tabelas com lookup. melhor agir em resposta a um erro do que antecipa-lo.

OBS

deadlock_timeout (integer)

1a int_max

1000

max_locks_per_tran saction (integer)

10a int_max

64

Gerenciamento de Lock
Parmetro 8.2 8.1 8.0 7.4 Escopo Padro Configurado em Documentao
necessrio aumentar este valor quando h clientes que acessam muitas tabelas diferentes em uma nica transao. Somente pode ser definido na inicializao do servidor.

OBS

Compatibilidade de verso e de plataforma


Parmetro
Verses anteriores do PostgreSQL

8.2 8.1 8.0 7.4 Escopo

Padro

Configurado em

Documentao
Quando o valor for igual a on, as tabelas referenciadas por uma consulta sero automaticamente adicionadas clusula FROM, caso no estejam presentes. O valor padro on para manter a compatibilidade com as verses anteriores do PostgreSQL. Entretanto, este comportamento no SQL-padro, e muitas pessoas no gostam porque pode esconder enganos. Deve ser definido como off para obter o comportamento SQL-padro de rejeitar referncias a tabelas que no esto presentes na clusula FROM. Isto controla quando a entrada de anlise (parse) de um vetor (array) reconhece um NULL que no est entre aspas especificando um elemento do vetor como nulo. Por padro, est ligado, permitindo a entrada vetores contendo valores nulos. Contudo, verses do PostgreSQL anteriores ao 8.2 no suportavam valores nulos em vetores, e tratam o NULL como se estivessem especificando uma cadeia de caracteres com o valor NULL. Para manter a compatibilidade com aplicaes que requerem o modo antigo, esta opo pode ser desligada. Note que possvel criar valores de vetor contendo nulo mesmo com esta opo desligada. Isto controla quando um escape de cadeia de caracteres pode ser representado por um \' numa cadeia de caracteres literal. A preferncia, a forma padro SQL para representar uma marca de aspas simples dobrar as aspas simples (''), mas o PostgreSQL tem historicamente aceitado tambm o \'. Contudo o uso do \' cria um risco de segurana,

OBS

add_missing_f rom (boolean)

on/off

on

Sempre ajuste isto para Off. Se isto for ajustado para On, um simples esquecimento de referenciar um apelido de tabela pode resultar em uma ligao de tabelas sem restries, e uma consulta rodando livremente pode esgotar os recursos do sistema. Isto ser falso por padro no futuro.

array_nulls (boolean)

on/off

on

Parmetro
Compatibilidade de Plataforma e Cliente

8.2 8.1 8.0 7.4 Escopo

Padro

Configurado em

Documentao
Quando habilitado, as expresses da forma expr = NULL (ou NULL = expr) so tratadas como expr IS NULL, ou seja, retornam verdade se expr resultar em um valor nulo, e falso caso contrrio. O comportamento correto de expr = NULL sempre retornar nulo (desconhecido). Portanto, o valor padro desta opo desabilitado. Entretanto, no Microsoft Access formulrios 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 necessrio habilitar esta opo. Uma vez que as expresses da forma expr = NULL sempre retornam o valor nulo (utilizando a interpretao correta), no so muito teis e, por isso, no aparecem com freqncia nos aplicativos normais, portanto esta opo produz pouco dano na prtica. Porm, os novos usurios ficam freqentemente confusos sobre a semntica das expresses que envolvem valores nulos e, portanto, esta opo no habilitada por padro. Deve ser observado que esta opo afeta apenas a forma exata = NULL, e no os outros operadores de comparao ou outras expresses computacionalmente equivalentes a alguma expresso envolvendo o operador de igual (como o IN). Portanto, esta opo no uma soluo geral para m programao. Para ver informaes relacionadas deve ser consultada a Seo 9.2 .

OBS

transform_nul l_equals (boolean)

on/off

off

Opes Pr-definidas
Parmetro
block_size (integer) integer_datetimes (boolean) lc_collate (string) lc_ctype (string) max_function_args (integer) max_identifier_len gth (integer) max_index_keys (integer) server_encoding (string) server_version (string) standard_conformin g_strings (boolean)

8.2 8.1 8.0 7.4 Documentao X X X X X X X X X X X X X X X X X X X X X X X X X X X


Mostra o tamanho de um bloco de disco. determinado pelo valor de BLCKSZ quando o servidor construdo. O valor padro 8192 bytes. O significado de algumas variveis de configurao (como shared_buffers ) influenciado por block_size. Para obter informaes adicionais deve ser consultada a Seo 16.4.3 . Mostra se o PostgreSQL foi construdo com suporte para data e hora com inteiros de 64 bits. definido configurando com --enableinteger-datetimes quando o PostgreSQL construdo. O valor padro off. Mostra o idioma usado para fazer a classificao de dados textuais. Para obter informaes adicionais deve ser consultada a Seo 20.1 . O valor determinado quando o agrupamento de bancos de dados inicializado. Mostra o idioma que determina a classificao dos caracteres. Para obter informaes adicionais deve ser consultada a Seo 20.1 . O valor determinado quando o agrupamento de bancos de dados inicializado. Normalmente a mesma utilizada em lc_collate, mas pode ser definido um valor diferente para aplicaes especiais. Mostra o nmero mximo de argumentos de uma funo. determinado pelo valor de FUNC_MAX_ARGS quando o servidor construdo. O valor padro 32. Mostra o comprimento mximo do identificador. determinado como sendo o valor de NAMEDATALEN menos 1 quando o servidor construdo. O valor padro de NAMEDATALEN 64; portanto o valor padro de max_identifier_length 63. Mostra o nmero mximo de chaves de ndice. determinado pelo valor de INDEX_MAX_KEYS quando o servidor construdo. O valor padro 32. Mostra a codificao do banco de dados (conjunto de caracteres). determinado quando o banco de dados criado. Normalmente os clientes precisam se preocupar apenas com o valor de client_encoding . Mostra o nmero da verso do servidor. determinado pelo valor de PG_VERSION quando o servidor construdo. Mostra quando cadeias de caracteres ordinrias literais ('...') tratam barras invertidas literalmente, como especificado no padro SQL. O valor corrente sempre off, indicando que as barras invertidas so tratadas como escapes. Esta planejado que isto ir mudar em futuras verses do PostgreSQL, quando a sintaxe de cadeias de caracteres mudaro para seguir o padro. Aplicaes devero checar este parmetro para para determinar como cadeias de caractere literais sero processadas. A presena deste parmetro pode ser tomada como uma indicao de que a sintaxe de cadeias de caracteres (E'...') suportada. Reporta o nmero da verso do servidor como um inteiro. determinado pelo valor de PG_VERSION_NUM quando o servidor construdo.

server_version_num (integer)

Opes curtas
Para facilitar tambm esto disponveis, para alguns parmetros, chaves de opo de linha de comando de uma nica letra, conforme descrito na Tabela 161. Opo curta 8.2 8.1 8.0 7.4 -Ax X -B x X X X X -d x X X X X -e X -fb, -fh, -fi, -fm, X X X X -fn, -fs, -ft -F X X X X -h x X X X X -i X X X X -k x X X X X -l X X X X -N x X X X X -O X -p x X X X X -P X -s [a] X X X X -S x [a] X X X X -tpa, -tpl, -te X X X X [a] -W x X Notas: a. Por motivos histricos estas opes exemplo, Equivalente debug_assertions = x shared_buffers = x log_min_messages = DEBUGx datestyle = euro enable_bitmapscan = off, enable_hashjoin = off, enable_indexscan = off, enable_mergejoin = off, enable_nestloop = off, enable_seqscan = off, enable_tidscan = off fsync = off listen_addresses = x listen_addresses = '*' unix_socket_directory = x ssl = on max_connections = x allow_system_table_mods = on port = x ignore_system_indexes = on log_statement_stats = on work_mem = x log_parser_stats = on, log_planner_stats = on, log_executor_stats = on post_auth_delay = x devem ser passadas para os processos servidor individuais atravs da opo -o do postmaster como, por

Opo curta

8.2 8.1 8.0 7.4

Equivalente

$ postmaster -o '-S 1024 -s'

ou atravs da varivel de ambiente PGOPTIONS no lado cliente, conforme explicado acima.

Notas

Aumentando muitas destas opes tornaro necessrias alteraes no kernell do seu servidor alocados por processo do usurio. Veja a documentao on-line para sugestes de como alterar isto no seu SO. De toda forma, todas as opes iro alterar o total de memria utilizada pelo PostgreSQL ii DEBUG[1-5] Fornece informaes para uso pelos desenvolvedores. INFO Fornece informaes requisitadas implicitamente pelo usurio como, por exemplo, durante VACUUM VERBOSE. NOTICE Fornece informaes que podem ser teis para os usurios como, por exemplo, o truncamento de identificadores longos e a criao de ndices como parte das chaves primrias. WARNING Fornece advertncias para o usurio como, por exemplo, COMMIT fora do bloco de transao. ERROR Relata o erro que fez com que o comando corrente fosse interrompido. LOG Relata informaes de interesse dos administradores como, por exemplo, atividade de ponto de controle. FATAL Relata o erro que fez com que a sesso corrente fosse interrompida. PANIC Relata o erro que fez com que todas as sesses fossem interrompidas. iii Somente disponvel na verso 8.2 iv Somente disponvel na verso 8.2

Vous aimerez peut-être aussi