Revisão do postgresql.conf

download Revisão do postgresql.conf

If you can't read please download the document

Transcript of Revisão do postgresql.conf

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 [email protected] para que este documento possa ser melhorado.

Notas de CopyrightEste 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 OPLA 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

Parmetro8.28.18.07.4EscopoPadroConfigurado emDocumentaoOBS

data_directory (string)XXXDiretrioConfigDirInicializaoEspecifica o diretrio a ser utilizado para armazenamento dos dados.

config_file (string)XXXArquivoConfigDir/
postgresql.confInicializaoEspecifica o arquivo principal de configurao do servidor.

hba_file (string)XXXArquivoConfigDir/
pg_hba.confInicializaoEspecifica o arquivo de configurao para autenticao baseada no hospedeiro.

ident_file (string)XXXArquivoConfigDir/
pg_ident.confInicializaoEspecifica o arquivo de configurao para a autenticao ident.

Estas configuraes permitem a fcil administrao de uma instalao do PostgreSQL onde vrias configuraes e arquivos de monitoramento so separados do banco de dados em si, usualmente para propsitos de arquivos de administrao com especificaes particulares, ou para automatizar testes com diferentes configuraes.Se voc usar isto, ser necessrio apenas 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.

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

Conexes e Autenticao

Parmetro8.28.18.07.4EscopoPadroConfigurado em-oDocumentaoOBS

Definies da Conexolisten_addresses (string)XXXlocalhostInicializao-h x
-iEspecifica 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).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.

tcpip_socket (boolean)Xon / offoffInicializaoSe for verdade, ento o servidor aceita conexes TCP/IP. Seno, somente so aceitas conexes oriundas do soquete do domnio Unix local. O valor padro desabilitado.Substitudo pelo listen_addreses a partir da verso 8.0.

virtual_host (string)XInicializaoEspecifica 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.

port (integer)XXXX129 a 327685432Inicializao-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.

max_connections (integer)

XXXX2 a 262143100Inicializao- N #Determina o nmero mximo de conexes 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.Mantenha o mais baixo possvel para a 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_reserved_connections (integer)

XXXX0 a max_connections -12InicializaoDetermina 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.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_directory (string)XXXX''InicializaoEspecifica 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.

unix_socket_group (string)XXXX''InicializaoDefine 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 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_permissions (integer)

XXXX0777InicializaoDefine 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 .

bonjour_name (string)XX''InicializaoEspecifica 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.

tcp_keepalives_idle (integer)

XX0InicializaoEm sistemas com suporte a opo de soquete TCP_KEEPIDLE, especifica o nmero de 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.

tcp_keepalives_interval (integer)XX0InicializaoEm 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.

tcp_keepalives_count (integer)XXInicializaoEm 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.

rendezvous_name (string)XX''InicializaoEspecifica 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.

Segurana e autenticaoauthentication_timeout (integer)

XXXX1 a 600 seg.60ReloadTempo 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.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.

ssl (boolean)XXXXon / offoffInicializaoHabilita conexes SSL. Por favor leia a Seo 16.7 antes de utilizar este parmetros. 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.

password_encryption (boolean)XXXXon / offOnInicializaoQuando 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.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.

krb_server_keyfile (string)XXXX''InicializaoConfigura a localizao do arquivo com a chave do servidor Kerberos. Veja Seco 19.2.3 para detalhes.Apenas utilizado para usurios com autenticao Kerberos.

krb_srvname (string)

XX''InicializaoConfigura o nome do servio Kerberos. Veja a Seo 20.2.3 para detalhes.

krb_server_hostname (string)

XX''InicializaoConfigura 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.

krb_caseins_users (boolean)

XXon / offoffInicializaoConfigura de os nomes dos usurios Kerberos devem ser tratados como insensveis a maisculas e minsculas (case-insensitive). O padro off (case sensitive).

db_user_namespace (boolean)XXoffInicializaoPermite 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 removida. 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.

Consumo de recursos

Parmetro8.28.18.07.4EscopoPadroConfigurado em-oDocumentaoOBS

MemriaiAumentando 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

shared_buffers (integer)XXXX16 a 26211431000 (4000 na na verso 8.2)Inicializao-B xDefine 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.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.

sort_mem (integer)X1024InicializaoEquivalente a opo work_men.

vacuum_mem (integer)X8192InicializaoEquivalente a opo maintenance_work_mem.

temp_buffers (integer)

XX1000InicializaoAjusta 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 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).

max_prepared_transactions (integer)

XX5InicializaoAjusta 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.

work_mem (integer)

XXX64 a int_max1024Tempo de execuo-S #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 operaes de hash em paralelo; cada uma podendo utilizar tanta memria quanto especificado por este parmetro, antes de colocar os dados em arquivos temporrios. Alm disso, diversas sesses em execuo podem estar fazendo operaes de classificao simultaneamente. Portanto, a memria total utilizada pode ser vrias vezes o valor de work_mem; necessrio ter este fato em mente ao escolher o valor. As operaes de classificao so utilizadas por ORDER BY, DISTINCT e junes por mesclagem (merge joins). As tabelas de disperso (hash tables) so utilizadas em junes de disperso (hash joins), agregaes baseadas em disperso (hash-based aggregation), e no processamento baseado em disperso (hash-based processing) de subconsultas IN.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 baixo para: pouca memria RAM disponvel, ou muitos usurios concorrentes. Encontrar o balano correto pode ser difcil.Outra forma de configurar este valor monitorar os arquivos temp do Postgres (em PGDATA/base/DB_OID/pgsql_tmp) e ajustar sort_mem para cima se voc ver muitas consultas utilizando estes arquivos.Sempre tenha em mente que este parmetro pode ser ajustado por conexo. Ento se voc tem poucas consultas muito longas, voc pode aumentar o work_mem para elas antes de executar a consulta, e deixar este valor baixo para as demais conexes.

maintenance_work_mem (integer)

XXX1024 a int_max16384Tempo de execuoEspecifica a quantidade mxima de memria que pode ser utilizada pelas operaes de manuteno, como VACUUM, CREATE INDEX e ALTER TABLE ADD FOREIGN KEY. O valor especificado em kilobytes, e o valor padro 16384 kilobytes (16 MB). Uma vez que somente pode ser executada uma destas operaes por vez em uma mesma sesso de banco de dados, e o servidor normalmente no possui muitas delas acontecendo ao mesmo tempo, seguro definir este valor significativamente maior que work_mem. Definies maiores podem melhorar o desempenho do comando VACUUM e da restaurao de cpias de segurana.Antigamente conhecida como vacuum_mem. Renomeado para refletir o seu papel expandido na alocao de memria para a carga de ndices.O padro para ele geralmente muito baixo e resultar em VACUUMs e criao de ndices alocando E/S do sistema e/ou bloqueio de objetos enquanto pagina a memria. Um bom ajuste geralmente entre 32MB a 256MB; isso depende de quanta RAM voc tem avalivel e do tamanho esperado do seu maior objeto no banco de dados.Como work_mem, pode ser alocado em tempo de execuo para a carga/criao de chaves em tabelas muito longas.

max_stack_depth (integer)

XXX2048InicializaoEspecifica a profundidade mxima segura para a pilha de execuo do servidor. A definio ideal deste parmetro o limite do tamanho da pilha imposto pelo ncleo do sistema operacional (conforme definido pelo comando ulimit -s [1] ou seu equivalente local, menos uma margem de segurana em torno de um megabyte. A margem de segurana necessria porque a profundidade da pilha no verificada em todas as rotinas do servidor, mas somente nas rotinas potencialmente recursivas chave, como avaliao de expresso. Definir o parmetro acima do limite do ncleo significa que uma funo recursiva fora de controle pode derrubar um processo servidor individual. A definio padro 2048 KB (dois megabytes), que conservadoramente pequena e com pouca chance de risco de queda. Entretanto, pode ser muito pequena para permitir a execuo de funes complexas. Costumava ser max_expr_depth, e as unidades no casavam com as unidades utilizadas pela maioria dos kernels de sistema.No caso de voc exceder este parmetro, voc vai receber uma mensagem de erro especfica. Atualmente, aumentar cautelosamente; muitos sistemas operacionais tem limites estticos de at 8MB.

Mapa do espao livre

max_fsm_pages (integer)XXXX1000 a int_max20000InicializaoDefine 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: Entenda que a freqncia de VACUUM (regular) do seu banco de dados baseado na atividade de escrita;

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.

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_relations (integer)XXXX1000InicializaoDefine 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 compartilhada por cada encaixe. O valor padro 1000. Somente pode ser definido na inicializao do servidor.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 modelo e o esquema de sistema. O PostgreSQL desenvolve uma performance mpar uma vez que no se tenha FSM_relations o suficiente.

Utilizao de Recursos do Cerne max_files_per_process (integer)XXXX10 a int_max1000InicializaoDefine o nmero mximo permitido de arquivos abertos simultaneamente por cada subprocesso servidor. O valor padro 1000. Se o ncleo 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.Para constar, mais utilizado no BSD. No se preocupe com ele a no ser que voc receba a mensagem too many files.

preload_libraries (string)XDiretrioInicializaoEspecifica 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 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.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 pr-carga as bibliotecas GIS. Para a maioria dos sistemas, melhor deixar isto vazio.

Retardo do VACUUM baseado no custo vacuum_cost_delay (integer)XXX0Tempo de execuoA quantidade de tempo, em milissegundos, que o processo adormece quando o custo limite excedido. O valor padro 0, que desabilita a funcionalidade de retardo do VACUUM baseado no custo. Valores positivos habilitam o retardo do VACUUM baseado no custo. Deve ser observado que em muitos sistemas a resoluo efetiva de adormecimento de 10 milissegundos; definir vacuum_cost_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.Esta configurao extremamente valiosa quando estiver realizando o vacuum em grandes tabelas que de outra forma iriam concorrer pela E/S por longos perodos e bloquear numerosas consultas. Ativar o o vacuum_delay, essencialmente quebra o vacuum em uma grande tabela em segmentos definidos como quantidades de trabalhos especficos, entre o adormecimento do vacuum e o tempo definido nesta configurao. Isto tem o efeito final de aumentar o tempo requerido pelo vacuum, possivelmente em alguns mltiplos, mas reduzindo o impacto global no sistema do vacuum, em at 85%. Valores razoveis para o atraso esto entre 50ms e 200ms.

vacuum_cost_page_hit (integer)XXX1Tempo de execuoO 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. Esta configurao dever provavelmente ser deixada como est em favor de manipular o vacuum_cost_limit.

vacuum_cost_page_miss (integer)XXX10Tempo de execuoO 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. Esta configurao dever provavelmente ser deixada como est em favor de manipular o vacuum_cost_limit.

vacuum_cost_page_dirty (integer)XXX20Tempo de execuoO 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.Esta configurao dever provavelmente ser deixada como est em favor de manipular o vacuum_cost_limit.

vacuum_cost_limit (integer)200Tempo de execuoO 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 retardo do VACUUM baseado no custo no ocorre durante este tipo de operao. Portanto, possvel que o custo acumule bem acima do limite especificado. Nestes casos, para evitar retardos longos sem utilidade, o retardo real calculado como vacuum_cost_delay * accumulated_balance / vacuum_cost_limit sendo no mximo igual a vacuum_cost_delay * 4.Diminua isto para quebrar o vacuum em mais segmentos. Uma combinao bastante agressiva seria um vacuum_cost_delay de 200ms e um vacuum_cost_limit de 50; isto pode resultar num vacuum demorando 10 vezes mais tempo com quase nenhum impacto na performance. Muitos DBAs vo querer ser mais moderados.

Escrita em segundo Planobgwriter_delay (integer)XXX200InicializaoEspecifica 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.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_percent (integer)X1InicializaoA 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.Ns ainda estamos realizando testes com as configuraes do bgwriter no OSDL; no h nenhuma recomendao at o momento.

bgwriter_maxpages (integer)X100InicializaoA 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.Ns ainda estamos realizando testes com as configuraes do bgwriter no OSDL; no h nenhuma recomendao at o momento.

bgwriter_lru_percent (floating point)XX1,0InicializaoPara 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).

bgwriter_lru_maxpages (integer)XX5InicializaoEm cada rodada, no mais que estes buffers sero gravados como resultado da busca aos buffers prximos de serem reciclados.

bgwriter_all_percent (floating point)XX0,333InicializaoPara reduzir o montante de trabalho que ser necessrio para o momento do checkpoint, o escritor em segundo plano tambm faz uma busca circular atravs de todo o pool do buffer, escrevendo naqueles so encontrados sujos. Em cada rodada, ele examina at bgwriter_all_percent dos buffers para este propsito. O valor padro 0,333 (este um percentual do nmero total de shared_buffers). Com a configurao padro do bg_writer_delay, este ir permitir que todo o pool do shared_buffer seja buscado uma vez por minuto.

bgwriter_all_maxpages (integer)XX5InicializaoEm cada rodada, no mais que esta quantidade de buffers sero gravados como resultado da busca em todo o pool do buffer. (Se este limite for encontrado, a busca para e retorna na prxima rodada).

Log de escrita prvia (WAL)

Parmetro8.28.18.07.4EscopoPadroConfigurado em-oDocumentaoOBS

fsync (boolean)XXXXon / offonInicializao-FSe 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 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), pode-se 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.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.

wal_sync_method (string)XXXXfsync, fdatasync, open_sync, open_datasyncVaria com a plataformaInicializaoMtodo 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 com open() opo O_DSYNC)

fdatasync (chama fdatasync() em cada commit)

fsync_writethrough (chama fsync() em cada 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)

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.

full_page_writes (boolean)XXon / offonInicializaoQuando 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).

wal_buffers (integer)XXXX4 a max_int8InicializaoNmero 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.

commit_delay (integer)XXXX0 a 1000000Tempo de execuoRetardo 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)XXXX1 a 10005Tempo de execuoNmero 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.

checkpoint_segments (integer)XXXX1 a int_max3InicializaoDistncia 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.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 ser preciso), e seus benefcios so limitados se o seu xlog no est em um disco separado dos dados.

checkpoint_timeout (integer)XXXX30 a 3600300InicializaoTempo 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.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.

checkpoint_warning (integer)XXXX0 a int_max0InicializaoEscreve 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.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.

archive_command (string)XXXComando do ShellInicializaoO 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 = 'copy "%p" /mnt/server/archivedir/"%f"' # WindowsEsta 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.

archive_timeout (integer)XInicializaoO 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.

Planejamento de Consultas

Parmetro8.28.18.07.4EscopoPadroConfigurado em-oDocumentaoOBS

Configurao do Mtodo de Planejamentoenable_bitmapscan (boolean)XXon / offonTempo de execuoHabilita ou desabilita o uso pelo planejador de comandos dos planos do tipo bitmap-scan.

enable_hashagg (boolean)XXXXon / offonTempo de execuoHabilita ou desabilita o uso pelo planejador de comandos dos planos do tipo agregao por hash.

enable_hashjoin (boolean)XXXXon / offonTempo de execuoHabilita ou desabilita o uso pelo planejador de comandos dos planos do tipo juno por hash.

enable_indexscan (boolean)XXXXon / offonTempo de execuoHabilita ou desabilita o uso pelo planejador de comandos dos planos do tipo varredura de ndice.

enable_mergejoin (boolean)XXXXon / offonTempo de execuoHabilita ou desabilita o uso pelo planejador de comandos dos planos do tipo juno por mesclagem.

enable_nestloop (boolean)XXXXon / offonTempo de execuoHabilita ou desabilita o uso pelo planejador de comandos dos planos do tipo juno por lao aninhado. No possvel suprimir junes por lao aninhado inteiramente, mas tornar o valor deste parmetro igual a off desestimula a utilizao deste mtodo pelo planejador, quando h outro mtodo disponvel.

enable_seqscan (boolean)XXXXon / offonTempo de execuoHabilita ou desabilita o uso pelo planejador de comandos dos planos do tipo varredura seqencial. No possvel suprimir as varreduras seqenciais 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)XXXXon / offonTempo de execuoHabilita 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_tidscan (boolean)XXXXon / offonTempo de execuoHabilita ou desabilita o uso pelo planejador de comandos dos planos do tipo varredura TID.

Estas opes so mais para uso apenas em testes de consultas; freqentemente configurado enable_seqscan = off para determinar se o planejador est descartando desnecessariamente um ndice, por exemplo. Contudo, podem haver circunstncias muito incomuns para trocar qualquer um para off no arquivo de configurao. De fato, se voc se encontrar fazendo-o, ento provavelmente outras opes de ajuste esto superdimencionadas e precisam ser alteradas.

Constantes de Custo do Planejadorseq_page_cost (floating point)X0 a double1,0Tempo de execuoConfigura a estimativa do planejador para o custo buscar uma pgina de disco que parte uma serie de buscas seqenciais.

effective_cache_size (floating point)XXXX0 a double1000 (16384 na verso 8.2)Tempo de execuoDefine 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.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_cost (floating point)XXXX0 a double4,0Tempo de execuoDefine 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.

Dica: Embora o sistema permita que voc use o random_page_cost sendo menor que seq_page_cost, isto no fisicamente sensvel. Contudo, ajustando eles igualmente faz sentido se todo o banco de dados estiver cacheado em RAM, uma vez que neste caso no h penalidade em acessar as pginas fora de seqncia. Ainda, em bancos de dados altamente cacheados, voc deve abaixar ambos os valores relativos aos parmetros da CPU, uma vez que o custo de acesso a uma pgina na RAM muito menor do que seria normalmente.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 configure isto em menos que 1,5; se problemas com consultas lhe indicarem para faz-lo, ento provavelmente outras configuraes (como effective_cache_size) precisam de ajuste.Quando testar o efeito de diferentes configuraes, lembre-se de testar uma variedade de consultas em sua carga.

cpu_tuple_cost (floating point)XXXX0 a double0,01Tempo de execuoDefine a estimativa do planejador de comandos do custo de processamento de cada linha durante o comando. medido como uma frao do custo da busca de uma pgina seqencial. O valor padro 0.01.

cpu_index_tuple_cost (floating point)XXXX0 a double0,001 (0,005 na verso 8.2)Tempo de execuoDefine a estimativa do planejador de comandos do custo de processamento de cada linha de ndice durante a varredura do ndice. Medido como uma frao do custo da busca de uma pgina seqencial. O valor padro 0.001.

cpu_operator_cost (floating point)XXXX0 a double0,0025Tempo de execuoDefine a estimativa do planejador de comandos do custo de processamento de cada operador na clusula WHERE. medido como uma frao do custo da busca de uma pgina seqencial. O valor padro 0.0025.

Estes custos padres so levemente arbitrrios, e por isso eles esto avaliveis para serem ajustados. Contudo, ningum na comunidade est habilitado a convincentemente demonstrar melhores custos padres, e mais comumente, alteraes que tenham um efeito adverso em algumas consultas. Ento, a no ser que voc tenha muito tempo disponvel para testar consultas, melhor deixar estas trs opes assim.

Otimizao Gentica de Consultasgeqo (boolean)XXXXon / offonTempo de execuoHabilita ou desabilita a otimizao gentica de comandos, que um algoritmo que tenta realizar um planejamento de comandos sem uma busca exaustiva. O valor padro habilitado. A varivel geqo_threshold permite uma forma mais granular para desabilitar GEQO para certas classes de comandos.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 sua execuo que as consultas normais. Foi projetado para ser utilizado quando de outra forma o planejamento da consulta possa consumir todos recursos da sua CPU.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.

geqo_threshold (integer)XXXX0 a max_int12Tempo de execuoA 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. 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.

geqo_effort (integer)XXXX1 a 105Tempo de execuoControla 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 (descritas abaixo). Caso se prefira, os demais parmetros podem ser definidos manualmente.

geqo_pool_size (integer)XXXX0 a double0Tempo de execuoControla o tamanho da amostra (pool size) utilizado pelo GEQO. O tamanho da amostra o nmero de indivduos na populao gentica. Deve ser maior ou igual 2, e os valores teis esto tipicamente no intervalo de 100 a 1000. Se for igual a zero (a definio padro), ento um valor padro adequado escolhido tomando por base geqo_effort e o nmero de tabelas no comando.

geqo_generations (integer)XXXX0 a double0Tempo de execuoControla o nmero de geraes utilizado pelo GEQO. As geraes especificam o nmero de interaes do algoritmo. Deve ser maior ou igual a 1, e os valores teis esto no mesmo intervalo do tamanho da amostra. Se for definido igual a zero (a definio padro), ento um valor padro adequado escolhido tomando por base geqo_pool_size.

geqo_selection_bias (floating point)XXXX1,5 a 2,02,0Tempo de execuoControla a tendncia da seleo (selection bias) utilizada pelo GEQO. A tendncia da seleo a presso seletiva dentro da populao. Os valores podem estar entre 1.50 e 2.00; este ltimo o valor padro.

Outras Opes do Planejadordefault_statistics_target (integer)XXXX1 a 100010Tempo de execuoDefine 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 .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.

constraint_exclusion (boolean)XXon / offoffTempo de execuoHabilita 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 e no h um mecanismo embutido para forar o replanejamento. (Esta deficincia provavelmente ser corrigida em uma verso futura do PostgreSQL.) Outra razo para deixar isto desligado que a checagem das restries so relativamente caras, e em muitas circunstncias elas no representaro nenhum ganho. S recomendado ligar isto se voc estiver utilizando tabelas particionadas e quiser tirar proveito deste recurso.Veja a Seo 5.9 para mais informaes sobre o uso de restries de excluso e particionamento.

from_collapse_limit (integer)XXXX1 a int_max8Tempo de execuoO planejador incorpora as subconsultas nas consultas superiores se a lista FROM resultante no 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 padro 8. Geralmente razovel manter este valor abaixo de geqo_threshold .Como muitas outras opes nesta seo, voc s ir querer alterar isto para consultas especficas e incorrigveis em tempo de execuo. Diminuindo ir forar a materializao de algumas subconsultas que so desejadas. A maioria dos DBAs no iro alterar isto.

join_collapse_limit (integer)XXXX1 a int_max8Tempo de execuoO planejador reescreve construes JOIN internas explcitas em lista de itens da clusula FROM, sempre que resultar em uma lista com no mais do que esta quantidade de itens. Antes do PostgreSQL 7.4 as junes especificadas atravs da construo JOIN nunca eram reorganizadas pelo planejador. Depois o planejador foi melhorado para que as junes internas escritas desta forma pudessem ser reordenadas; este parmetro de configurao controla at que ponto esta reordenao realizada. Nota: Atualmente a ordem das junes externas, especificadas atravs das construes JOIN, nunca ajustada pelo planejador; portanto join_collapse_limit no tem efeito sobre este comportamento. O planejador poder ser melhorado para reordenar algumas classes de juno externa em uma verso futura do PostgreSQL. O padro definir esta varivel com o mesmo valor de from_collapse_limit, o que apropriado para a maioria dos usos. Definir o valor igual a 1 impede a reordenao dos JOINs internos. Portanto, a ordem de juno especificada no comando ser a ordem real pela qual as relaes sero juntadas. O otimizador de comandos nem sempre escolhe a ordem de juno tima; os usurios avanados podem decidir definir o valor desta varivel igual a 1 temporariamente e, ento, especificar a ordem de juno desejada explicitamente. Uma outra conseqncia de definir o valor desta varivel igual a 1 fazer com que o planejador de comandos se comporte de forma mais parecida com o planejador de comandos do PostgreSQL 7.3, o que alguns usurios podem achar til por motivo de compatibilidade com verses anteriores. Definir esta varivel com um valor entre 1 e from_collapse_limit pode ser til para equilibrar o tempo de planejamento versus a qualidade de plano escolhido. (os valores maiores produzem planos melhores).Esta opo projetada para aqueles como ns que gostam de escrever suas consultas usando uma sintaxe explcita para o JOIN (ex: a join b using (1) join c using (2)) mas ainda querem que o planejador selecione a ordem para a melhor execuo. Particularmente, pessoas vindas do MS SQL Server vo querer habilitar esta opo com um valor alto, uma vez que estes bancos de dados fazem o JOIN colapsing automaticamente. Como acima, deixe este valor abaixo do geqo_threshold.

Relato de Erros e Log

Parmetro8.28.18.07.4EscopoPadroConfigurado em-oDocumentaoOBS

Onde Logarlog_destination (string)XXXstderr, syslog, eventlogstderrInicializaoO PostgreSQL dispe de vrios mtodos para registrar as mensagens do servidor, incluindo stderr e syslog. No Windows tambm h suporte para eventlog. Este parmetro definido atravs de uma lista de destinos desejados para registrar as mensagens, separados por vrgula. O padro registrar apenas em stderr. Isto anlogo ao antiga opo syslog, mas com os cdigos ocultos removidos. Tambm suporta o eventlog to Win32. Quando ajustado para o seu servidor, importante decidir como voc quer gerar o log das mensagens do PostgreSQL : syslog, que mais fcil para a administrao do sistema ou um log privado do PostgreSQL, que melhor para encontrar problemas no banco de dados. Claro que voc pode logar em ambos, mas isto provavelmente um excesso de sada.

redirect_stderr (boolean)XXXXon / offInicializaoPermite 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). 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.

log_directory (string)XXXDiretriopg_logInicializaoQuando 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.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.

log_filename (string)XXXpostgresql-%Y-%m-%d_%H%M%S.logInicializaoQuando 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 para o arquivo ser server_log.1093827753 para um registro comeando em "Dom Ago 29 19:02:33 2004 MST". 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 abaixo.

log_rotation_age (integer)XXX1 a int_max1440InicializaoQuando redirect_stderr est habilitado, este parmetro determina o tempo de vida mximo de um determinado arquivo de registro. Aps ter decorrido esta quantidade de minutos, criado um novo arquivo de registro. Definir o valor como zero desabilita a criao de novos arquivos de registro baseado no tempo. O padro (24 horas) bom para a maioria das instalaes.

log_rotation_size (integer)XXX1 a int_max10240InicializaoQuando redirect_stderr est habilitado, este parmetro determina o tamanho mximo de um arquivo de registro individual. Aps esta quantidade de kilobytes ter sido lanada no arquivo de registro, criado um novo arquivo de registro. Definir o valor como zero desabilita a criao de novos arquivos de registro baseado no tamanho. O padro (10MB) bom para a maioria das instalaes. Aqueles rodando mltiplas verses do PostgreSQL na mesma mquina iro querer lembrar de trocar esta string para indicar qual o servidor.

log_truncate_on_rotation (boolean)XXXon / offoffInicializaoQuando redirect_stderr est habilitado, este parmetro faz com que o PostgreSQL trunque (sobrescreva), em vez de anexar, um arquivo de registro com o mesmo nome. Entretanto, o truncamento somente ocorre quando est sendo aberto um novo arquivo devido a rotao baseada no tempo, e no durante a inicializao ou rotao baseada no tamanho. Quando est desabilitado, os arquivos pr-existentes so anexados em todos os casos. Por exemplo, utilizar este parmetro em combinao com um valor para log_filename, como postgresql-%H.log, resulta na gerao de arquivos de registro de vinte e quatro horas, reescritos ciclicamente.

Exemplo: Para manter registro dos ltimos 7 dias, com um arquivo de registro por dia, chamados server_log.Mon, server_log.Tue, etc., e reescrever automaticamente o registro da semana anterior com o registro da semana corrente, log_filename deve ser definido como server_log.%a, [4] log_truncate_on_rotation como on, e log_rotation_age como 1440.

Exemplo: Para manter registros de 24 horas, um arquivo de registro por hora, mas tambm rotacionando mais cedo se o tamanho do arquivo de registro exceder 1GB, log_filename deve ser definido como server_log.%H%M, [5] [6] log_truncate_on_rotation como on, log_rotation_age como 60, e log_rotation_size como 1000000. A incluso de %M em log_filename faz com que toda rotao causada pelo tamanho do arquivo use um nome de arquivo diferente do nome de arquivo inicial da hora.Esta configurao pode ser combinada com log_filename acima para criar uma substituio contnua 7-dias ou 24-horas (ou 60-minutos, para este fim) dos logs.

syslog (integer)Xinteger0InicializaoO PostgreSQL permite utilizar o syslog para registrar as mensagens. Se esta opo for definida igual a 1, as mensagens vo para syslog e para a sada padro. Se for definida igual a 2 a sada enviada apenas para syslog (Algumas mensagens ainda iro para a sada/erro padro). O valor padro zero, significando que syslog est desligado.

syslog_facility (string)XXXXLOCAL#LOCAL0InicializaoQuando o registro atravs de syslog [7] est habilitado, este parmetro determina a "facilidade" do syslog a ser utilizada. Pode ser escolhido LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7; o padro LOCAL0. Tambm deve ser consultada a documentao do processo syslog do sistema.

syslog_ident (string)XXXXpostgresInicializaoQuando o registro via syslog est habilitado, este parmetro determina o nome de programa utilizado para identificar as mensagens do PostgreSQL nos registros do syslog. O valor padro postgres. Aqueles rodando mltiplas verses do PostgreSQL na mesma mquina iro querer lembrar de trocar esta string para indicar o servidor.

Quando Logar

client_min_messages (string)

XXXX

log_min_messages (string)

XXXX

log_min_error_statement (string)XXXX

DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO, NOTICE, WARNING, ERROR, LOG, FATAL, PANICii 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.

NOTICETempo 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

NOTICETempo 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 situao relativa diferente da que tem em client_min_messages. Somente os superusurios podem aumentar esta opo.

PANICTempo de execuo (Superusurio)Controla se o comando SQL causador da condio de erro tambm ser registrado no log do servidor. Todas as declaraes SQL causadoras de um erro do nvel especificado, ou de nvel mais alto, so registradas. O valor padro PANIC (tornando de fato esta funcionalidade desabilitada para o uso normal). Os valores vlidos so. Por exemplo, se for definido como ERROR ento todas as 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.

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.O custo o maior uso do espao em disco, algum custo menor de performance para sada (usualmente < 5%). Contudo, o custo de performance aumenta significativamente se seus logs esto no mesmo disco/arranjo que o WAL ou seu banco de dados, uma vez que uma sada pesada de debug ir pegar E/S da atividade do banco de dados. O impacto de debug5 em um sistema intenso de transaes em um nico disco pode ser bem alto. Esta precauo se aplica a todas as opes abaixo.

log_error_verbosity (string)XXXXTERSE, DEFAULT, VERBOSEDEFAULTTempo de execuo (Superusurio)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.Qual configurao voc usar aqui depender do seu status de produo, e qual ferramentas de monitoramento de logs voc est usando.

log_min_duration_statement (integer)XXXX-1 a int_max-1Define o tempo de execuo mnimo da declarao (em milissegundos) para que a declarao seja registrada. Todas as declaraes SQL cujo tempo de execuo for igual ou superior ao tempo especificado sero registradas juntamente com sua durao. Definir como zero registra todos os comandos e sua durao. O valor -1 (o padro) desabilita esta funcionalidade. Por exemplo, se for definido como 250 ento todas as declaraes SQL com tempo de execuo de 250ms ou superior sero registradas. Habilitar esta opo pode ser til para encontrar comandos no otimizados nos aplicativos. Somente os superusurios podem alterar esta definio.Esta opo extremamente til para um tuning de banco de dados numa segunda etapa. Uma vez que voc tome cuidado com os problemas de performance para indexao em volume, log_min_duration_statement ir permitir voc registrar apenas as consultas mais lentas (e possivelmente ainda quebradas).

silent_mode (boolean)XXXXon / offoffInicializaoExecuta o servidor em silncio. Quando o valor deste parmetro definido como on, o servidor executa automaticamente em segundo plano, e se desvincula do terminal controlador (o mesmo efeito da opo -S do postmaster). A sada padro e o erro padro do servidor so redirecionadas para /dev/null e, portanto, todas as mensagens enviadas para as mesmas so perdidas. A menos que seja habilitado registrar em syslog, ou que redirect_stderr esteja habilitado, a utilizao desta opo desencorajada, porque torna impossvel ver as mensagens de erro.

O que Logardebug_print_parse (boolean)

debug_print_rewritten (boolean)

debug_print_plan (boolean)

debug_pretty_print (boolean)

XXXXon / offoffTempo 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.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)XXXXon / offoffInicializaoGera 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.

log_disconnections (boolean)XXXon / offoffInicializaoGera 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.

Itens de registro essenciais para qualquer aplicao segura.

log_duration (boolean)XXXXon / offoffTempo de execuo (Superusurio)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.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_line_prefix (string)XXX''Tempo de execuo (Superusurio)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 caracteres so copiados literalmente para a linha de registro. Alguns escapes so reconhecidos apenas pelos processos de sesso, no se aplicando a processos em segundo plano como o postmaster. Syslog produz seu prprio carimbo do tempo e informao do ID do processo e, portanto, provavelmente no ser desejado utilizar estes escapes quando syslog utilizado. Somente pode ser definido na inicializao do servidor, ou no arquivo postgresql.conf.

EscapeEfeitoApenas de Sesso?

%uNome do usurio.Sim

%dNome do banco de dados.Sim

%riiiSomente disponvel na verso 8.2

Nome do hospedeiro remoto ou endereo de IP, e porta remota.Sim

%hNome do hospedeiro remoto ou endereo de IPSim

%pID do processo.No

%tCarimbo do tempo sem milissegundosNo

%mivSomente disponvel na verso 8.2

Carimbo de tempo com milissegundos.No

%iMarca do comando: O comando que gerou a linha de registro.Sim

%cID da sesso: O identificador nico de cada sesso. Nmeros hexadecimais de 2 a 4 bytes (sem zeros frente), separados por ponto. Os nmeros so o momento de incio da sesso e o ID do processo, portanto tambm pode ser utilizado como uma maneira de registrar estes itens com economia de espao.Sim

%lO nmero da linha de registro para cada processo, comeando por 1.No

%sCarimbo do tempo do incio da sesso.Sim

%xID da transao.Sim

%qNo produz nenhuma sada, mas informa aos processos que no so de sesso para pararem neste ponto da cadeia de caracteres. Ignorado pelos processos de sessoNo

%%O literal %No

Substitui log_pid, log_source_port, log_timestamp e uma gama de tcnicas de registro crescentes para suprir exatamente o detalhamento requerido em cada linha de log. Por exemplo, se voc est tentando diagnosticar um problema de deadlock, voc utilizar %t %p %u %d %x para receber as informaes que voc precisa. Sem dvida as ferramentas de registro iro desenvolver formatos especficos para isto, mas isto no existe ainda.

log_statement (string)XXXnone, dll, mod e allnoneTempo de execuo (Superusurio)Controla quais declaraes SQL so registradas. Os valores vlidos so none, ddl, mod e all. ddl registra todos os comandos de definio de dados, como CREATE, ALTER e DROP. mod registra todos as instrues de ddl, mais INSERT, UPDATE, DELETE, TRUNCATE e COPY FROM. Tambm so registradas as instrues PREPARE e EXPLAIN ANALYZE, se os comandos contidos nestas instrues forem do tipo apropriado. Somente os superusurios podem alterar esta definio.

Nota: A declarao EXECUTE no considerada como sendo uma declarao de ddl ou mod. Quando registrada somente relatado o nome da declarao preparada, e no a declarao preparada inteira. Quando uma funo definida utilizando a linguagem do lado servidor PL/pgSQL, todos os comandos executados pela funo so registrados somente na primeira vez que a funo chamada por uma determinada sesso. Isto se deve ao fato da linguagem PL/pgSQL manter um cache dos planos de comando produzidos pelas declaraes SQL na funo. Esta opo tem incrementado e expandido a habilidade de registrar apenas as alteraes no banco de dados, ou apenas updates/inserts/deletes. Por favor, veja tambm as limitaes desta funcionalidade mencionadas na documentao.

log_statement (boolean)Xon / offoffTempo de execuo (Superusurio)Faz com que a declarao SQL seja registrada. O valor padro desabilitado. Somente os superusurios podem desabilitar esta opo se estiver habilitada pelo administrador.

log_timestamp (boolean)Xon / offoffPrefixa cada mensagem do log do servidor com um carimbo do tempo.

log_hostname (boolean)XXXXon / offoffInicializaoPor padro as mensagens de registro de conexo mostram somente o endereo de IP do hospedeiro se conectando. Habilitar esta opo faz com que seja registrado o nome do hospedeiro tambm. Deve ser observado que, dependendo da configurao da resoluo de nome de hospedeiro, pode ser imposta uma penalidade de desempenho no desprezvel. Somente pode ser definido na inicializao do servidor, ou no arquivo postgresql.conf.Isto pode ser til para debug/gerenciamento de segurana, mas se o DNS no for local, poder atrasar significativamente as conexes.

Estatsticas de tempo de execuo

Parmetro8.28.18.07.4EscopoPadroConfigurado em-oDocumentaoOBS

Monitoramento de Estatsticaslog_statement_stats (boolean)

log_parser_stats (boolean)

log_planner_stats (boolean)

log_executor_stats (boolean)

XXXXon / offoffTempo de execuo (Superusurio)-tpa

-tpl

-te

-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 por-mdulo. 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.

Coletor de Estatsticas de Consulta e ndicestats_command_string (boolean)XXXXon / offonTempo 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 .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)Xon / offTempo de execuo (Superusurio)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.

stats_start_collector (boolean)XXXXon / offonInicializaoControla 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.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.

stats_block_level (boolean)XXXXon / offoffTempo de execuo (Superusurio)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 .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.

stats_row_level (boolean)XXXXon / offoffTempo de execuo (Superusurio)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 .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.

stats_reset_on_server_start (boolean)XXXXon / offoffInicializaoSe estiver habilitado, as estatsticas coletadas so zeradas sempre que o servidor reinicializado. Se estiver desabilitado, as estatsticas so acumuladas entre as reinicializaes do servidor. O valor padro habilitado. Somente pode ser definido na inicializao do servidor.Se a rotina de reiniciar o banco de dados faz parte do seu plano de manuteno, ento provavelmente voc ir querer desligar esta opo ou voc ter dificuldade em acumular estatsticas suficientes para serem teis.

Vacuum Automtico

Parmetro8.28.18.07.4EscopoPadroConfigurado em-oDocumentaoOBS

autovacuum (boolean)XXon / offoffControla como o servidor dever rodar o daemon autovacuum. stats_start_collector e stats_row_level precisam tambm estar ativados para o autovacuum funcionar.

autovacuum_naptime (integer)XX60Especifica 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.

autovacuum_vacuum_threshold (integer)XX500Especifica 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.

autovacuum_analyze_threshold (integer)XX250Especifica 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.

autovacuum_vacuum_scale_factor (floating point)XX0,2Especifica 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.

autovacuum_analyze_scale_factor (floating point)XX0,1Especifica a frao do tamanho da tabela para adicionar no autovacuum_analyze_threshold quando decidir se ir disparar um ANALYZE. Este parmetro s pode ser ajustado no arquivo postgresql.conf ou pode ser sobrescrito para tabelas individuais em entradas no pg_autovacuum.

autovacuum_vacuum_cost_delay (integer)XX-1Especifica 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.

autovacuum_vacuum_cost_limit (integer)XX-1Especifica 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.

autovacuum_freeze_max_age (integer)X200000000Especifica 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.

vacuum_freeze_min_age (integer)X0 a 1000000000100000000Especifica 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.

Padres de conexo do cliente

Parmetro8.28.18.07.4EscopoPadroConfigurado em-oDocumentaoOBS

Comportamento da declarao

search_path (string)XXXXCaminho$User, publicTempo de execuoEsta 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 resultados mudando a definio do caminho de procura padro, tanto globalmente quanto por usurio. O valor efetivo corrente do caminho de procura pode ser examinado atravs da funo SQL current_schemas(). No exatamente o mesmo que examinar o valor de search_path, uma vez que c