diff --git a/doc/FAQ_brazilian b/doc/FAQ_brazilian index 617c73a2b4..a44ed10c20 100644 --- a/doc/FAQ_brazilian +++ b/doc/FAQ_brazilian @@ -1,18 +1,19 @@ Perguntas Frequentes (FAQ) sobre PostgreSQL - �ltima atualiza��o: Sat Nov 20 17:28:23 EDT 2004 + �ltima atualiza��o: Dom Jan 9 14:44:04 EDT 2005 Mantenedor atual: Bruce Momjian (pgman@candle.pha.pa.us) Traduzido por: Euler Taveira de Oliveira (eulerto@yahoo.com.br) A vers�o mais recente desse documento pode ser vista em - http://www.PostgreSQL.org/docs/faqs/FAQ.html (EN). - http://www.PostgreSQL.org/docs/faqs/FAQ_brazilian.html (pt_BR). + http://www.postgresql.org/files/documentation/faqs/FAQ.html (EN). + http://www.postgresql.org/files/documentation/faqs/FAQ_brazilian.html + (pt_BR). Perguntas sobre plataformas espec�ficas s�o respondidas em - http://www.PostgreSQL.org/docs/index.html. + http://www.postgresql.org/docs/faq/. _________________________________________________________________ Perguntas Gerais @@ -92,8 +93,8 @@ 4.14) Qual � a diferen�a entre os v�rios tipos de dados de caracteres? 4.15.1) Como eu crio um campo serial/auto incremento? 4.15.2) Como eu consigo o valor de um campo SERIAL? - 4.15.3) currval() e nextval() n�o lidam com condi��o de corrida com - outros usu�rios? + 4.15.3) currval() n�o lida com condi��o de corrida com outros + usu�rios? 4.15.4) Por que os n�meros da minha sequ�ncia n�o s�o reutilizados quando uma transa��o � abortada? Por que h� intervalos nos n�meros da minha sequ�ncia/coluna SERIAL? @@ -128,9 +129,7 @@ 1.1) O que � PostgreSQL? Como ele � pronunciado? - PostgreSQL � pronunciado Post-Gres-Qui-El. Um arquivo de �udio est� - dispon�vel em http://www.postgresql.org/postgresql.mp3 para aqueles - que gostariam de ouvir a pron�ncia. + PostgreSQL � pronunciado Post-Gres-Q-L. PostgreSQL � um melhoramento do sistema de ger�ncia de banco de dados POSTGRES (e tamb�m �, �s vezes, chamado simplesmente de "Postgres"), @@ -147,7 +146,7 @@ ao grupo). O grupo � respons�vel por todo o desenvolvimento do PostgreSQL. � um projeto da comunidade e n�o � controlado por nenhuma empresa. Para se juntar ao grupo, veja a FAQ do desenvolvedor em - http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html + http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html Os autores do PostgreSQL 1.01 foram Andrew Yu e Jolly Chen. Muitos outros contribuiram para portar, testar, depurar e melhorar o c�digo. @@ -166,7 +165,7 @@ PostgreSQL Sistema de Ger�ncia de Banco de Dados - Portions copyright (c) 1996-2004, PostgreSQL Global Development Group + Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group Portions Copyright (c) 1994-6 Regents of the University of California Permiss�o de uso, c�pia, modifica��o e distribui��o desse software e @@ -204,9 +203,14 @@ Iniciando com a vers�o 8.0, o PostgreSQL agora pode ser executado nativamente nos sistemas operacionais Microsoft Windows baseados no NT tais como Win2000, WinXP e Win2003. Um instalador est� dispon�vel em - http://pgfoundry.org/projects/pginstaller. + http://pgfoundry.org/projects/pginstaller Vers�es do Windows baseados + no MSDOS (Win95, Win98, WinMe) podem executar o PostgreSQL utilizando + o Cygwin. - H� tamb�m um porte para Novell Netware 6 em http://forge.novell.com. + H� tamb�m um porte para Novell Netware 6 em http://forge.novell.com e + uma vers�o para OS/2 (eComStation) em + http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre + SQL&stype=all&sort=type&dir=%2F. 1.5) Onde eu posso conseguir o PostgreSQL? @@ -251,16 +255,19 @@ http://www.PostgreSQL.org - H� tamb�m um canal de IRC na Freenode e EFNet, canal PostgreSQL. Voc� - pode utilizar o comando Unix irc -c '#PostgreSQL' "$USER" - irc.phoenix.net. ou irc -c '#PostgreSQL' "$USER" irc.freenode.net. + O principal canal de IRC � o #postgresql na Freenode + (irc.freenode.net). Para se conectar voc� pode utilizar o comando Unix + irc -c '#postgresql' "$USER" irc.freenode.net ou utilizar qualquer + outro cliente de IRC. Um canal hisp�nico (#postgresql-es) e um franc�s + (#postgresqlfr) tamb�m existem na mesma rede. H� tamb�m um canal + PostgreSQL na EFNet. Uma lista de empresas que prestam suporte comercial est� dispon�vel em http://techdocs.postgresql.org/companies.php. 1.7) Qual � a �ltima vers�o? - A �ltima vers�o do PostgreSQL � a vers�o 7.4.5. + A �ltima vers�o do PostgreSQL � a vers�o 7.4.6. N�s planejamos lan�ar vers�es novas a cada seis ou oito meses. @@ -278,8 +285,9 @@ cole��o de artigos t�cnicos sobre PostgreSQL em http://techdocs.PostgreSQL.org/. - psql tem alguns comandos \d para mostrar informa��o sobre tipos, - operadores, fun��es, agrega��es, etc. + O programa cliente de linha de comando psql tem alguns comandos \d + para mostrar informa��o sobre tipos, operadores, fun��es, agrega��es, + etc. Use \? para mostrar os comandos dispon�veis. Nosso web site cont�m ainda mais documenta��o. @@ -327,9 +335,8 @@ 1.13) Como eu informo a exist�ncia de um bug? - Por favor visite a p�gina da ferramenta que reporta bugs em - http://www.PostgreSQL.org/bugs/bugs.php, que ir� lher dar as - instru��es e dire��es de como submeter um bug. + Visite o formul�rio que reporta bugs do PostgreSQL em + http://www.postgresql.org/support/submitbug. Verifique tamb�m o nosso ftp ftp://ftp.PostgreSQL.org/pub para ver se h� uma vers�o mais recente do PostgreSQL ou patches. @@ -349,23 +356,17 @@ travamentos (locks). Performance - PostgreSQL tem a performance similar a outros bancos de dados - comerciais e de c�digo livre. Ele � mais r�pido em algumas - coisas, mais lento em outras. Comparado ao MySQL ou sistemas de - bancos de dados "leves", n�s somos mais r�pidos com m�ltiplos - usu�rios, consultas complexas e carga de consultas de + A performance do PostgreSQL � compar�vel a outros bancos de + dados comerciais e de c�digo livre. Ele � mais r�pido em + algumas coisas, mais lento em outras. Comparado ao MySQL ou + sistemas de bancos de dados "leves", n�s somos mais r�pidos com + m�ltiplos usu�rios, consultas complexas e carga de consultas de leitura/escrita. MySQL � mais r�pido para consultas simples com SELECT feitas por poucos usu�rios. � claro que o MySQL n�o tem muitas das caracter�sticas mencionadas na se��o Caracter�sticas acima. N�s desenvolvemos buscando confiabilidade e caracter�sticas, e n�s continuamos a melhorar a performance a - cada vers�o. H� uma p�gina interessante comparando o PostgreSQL - com o MySQL em - http://openacs.org/philosophy/why-not-mysql.html. MySQL � uma - empresa que distribui seu produto via c�digo livre, e requer - uma licen�a comercial para software de c�digo fechado, e n�o - uma comunidade de desenvolvimento de c�digo livre como o - PostgreSQL. + cada vers�o. Confiabilidade N�s sabemos que um SGBD deve ser confi�vel ou ele � in�til. N�s @@ -413,10 +414,10 @@ para apoiar o projeto PostgreSQL e n�o financia nenhuma empresa espec�fica. Se voc� preferir, voc� pode enviar um cheque para o endere�o de contato. - _________________________________________________________________ Se voc� tiver uma hist�ria de sucesso sobre o PostgreSQL, envie-a para - nosso website em http://advocacy.postgresql.org. + nossa lista advocacy em pgsql-advocacy@postgresql.org. + _________________________________________________________________ Perguntas sobre Clientes @@ -451,12 +452,12 @@ 2.3) O PostgreSQL tem interfaces gr�ficas para iteragir com o usu�rio? Sim, h� v�rias interfaces gr�ficas para PostgreSQL dispon�veis. Entre - elas o PgAccess http://www.pgaccess.org), PgAdmin III - (http://www.pgadmin.org, RHDB Admin (http://sources.redhat.com/rhdb/ ) - e o Rekall ( http://www.thekompany.com/products/rekall/, - propriet�ria). H� tamb�m o PhpPgAdmin ( - http://phppgadmin.sourceforge.net/ ), uma interface web para - PostgreSQL. + elas o PgAccess http://www.pgaccess.org), pgAdmin III + (http://www.pgadmin.org, RHDB Admin (http://sources.redhat.com/rhdb/ + ), TORA (http://www.globecom.net/tora/, parcialmente comercial) e o + Rekall ( http://www.thekompany.com/products/rekall/, propriet�ria). H� + tamb�m o PhpPgAdmin ( http://phppgadmin.sourceforge.net/ ), uma + interface web para PostgreSQL. Veja http://techdocs.postgresql.org/guides/GUITools para uma lista mais detalhada. @@ -500,9 +501,10 @@ kernel. A quantidade exata que voc� precisa vai depender da arquitetura e de quantos buffers e processos do servidor voc� configurou para o postmaster. Muitos sistemas, com o n�mero padr�o de - buffers e processos, precisam de aproximadamente 1 MB. Veja o Guia do - Administrador do PostgreSQL para mais informa��o sobre mem�ria - compartilhada e sem�foros. + buffers e processos, precisam de aproximadamente 1 MB. Veja a se��o + PostgreSQL Administrator's Guide/Server Run-time Environment/Managing + Kernel Resources para mais informa��o sobre mem�ria compartilhada e + sem�foros. 3.4) Quando eu tento iniciar o postmaster, eu recebo erros IpcSemaphoreCreate. Por que? @@ -546,21 +548,22 @@ remover e criar �ndices novamente quando estiver fazendo muitas mudan�as nos dados. - H� v�rias op��es de ajuste. Voc� pode desabilitar o fsync() iniciando - o postmaster com a op��o -o -F. Isso ir� impedir que fsync()s enviem - os dados para disco ap�s cada transa��o. + H� v�rias op��es de ajuste em Administration Guide/Server Run-time + Environment/Run-time Configuration. Voc� pode desabilitar o fsync() + utilizando a op��o fsync. Isso ir� impedir que fsync()s enviem os + dados para disco ap�s cada transa��o. - Voc� tamb�m pode utilizar a op��o -B do postmaster para aumentar o - n�mero de buffers de mem�ria compartilhada utilizados pelos processos - do servidor. Se voc� definiu este par�metro com um valor muito alto, o + Voc� pode utilizar a op��o shared_buffers para aumentar o n�mero de + buffers de mem�ria compartilhada utilizados pelos processos do + servidor. Se voc� definiu este par�metro com um valor muito alto, o postmaster pode n�o iniciar porque voc� excedeu o limite de espa�o de mem�ria compartilhada do kernel. Cada buffer � de 8K e o padr�o � de - 64 buffers. + 1000 buffers. - Voc� tamb�m pode utilizar a op��o -S do backend para aumentar a m�xima - quantidade de mem�ria utilizada pelo processo servidor para ordena��es - tempor�rias. O valor de -S � medido em kilobytes e o padr�o � de 512 - (ou seja 512K). + Voc� tamb�m pode utilizar a op��o sort_mem (no PostgreSQL 8.0: + work_mem) para aumentar a m�xima quantidade de mem�ria utilizada pelo + processo servidor para cada ordena��o tempor�ria. O valor padr�o � + 1024 (ou seja 1MB). Voc� tamb�m pode utilizar o comando CLUSTER para agrupar dados em tabelas para combinar um �ndice. Veja o manual sobre CLUSTER para mais @@ -598,8 +601,24 @@ ambiente id�ntico e problemas de itera��o com o n�cleo/travamento n�o podem ser reproduzidos. - O programa postgres possue as op��es -s, -A, e -t que podem ser muito - �teis para depura��o e medidas de performance. + Se o postmaster est� sendo executado, inicie o psql em uma janela, e + ent�o encontre o PID do processo postgres utilizado pelo psql + utilizando +SELECT pg_backend_pid() + + . Utilize um depurador para anexar ao PID do postgres. Voc� pode + definir pontos de parada (breakpoints) no depurador e digitar + consultas no psql. Se voc� est� depurando a inicializa��o do postgres, + voc� pode definir PGOPTIONS="-W n" e ent�o iniciar o psql. Isto + retardar� a inicializa��o por n segundos ent�o voc� pode anexar o + depurador ao processo, definir quaisquer pontos de parada e continuar + pela sequ�ncia de inicializa��o. + + H� v�rias vari�veis de configura��o do servidor +log_* + + que habilitam a exibi��o de estat�sticas que podem ser muito �teis + para depura��o e medidas de performance. Voc� tamb�m pode compilar com perfil para ver que fun��es est�o demandando tempo de execu��o. Os arquivo de perfil do n�cleo (backend) @@ -852,7 +871,13 @@ para cima) * Buscas que n�o diferenciam mai�sculas de min�sculas tais como ILIKE e ~* n�o utilizam �ndices. Ao inv�s, utilize �ndices funcionais, que s�o descritos na se��o 4.12. - * A localidade padr�o C deve ser utilizada durante o initdb. + * A localidade padr�o C deve ser utilizada durante o initdb porque + n�o � poss�vel saber o pr�ximo/maior caracter em uma localidade + que n�o seja a C. Voc� pode criar um �ndice especial +text_pattern_ops + para tais casos que funcionam somente para indexa��o utilizando +LIKE + . Em vers�es anteriores a 8.0, �ndices frequentemente n�o podiam ser usados a menos que os tipos de dados correspodessem aos tipos da @@ -999,11 +1024,10 @@ te safe) Finalmente, voc� poderia utilizar o OID retornado da senten�a INSERT para obter o valor padr�o, embora este seja a abordagem menos port�vel, pois o valor do oid n�o ultrapassa 4 bilh�es. Em Perl, - utilizando DBI com o m�dulo DBD::Pg de Edmund Mergl, o valor do oid - est� dispon�vel via $sth->{pg_oid_status} depois de $sth->execute(). + utilizando DBI com o m�dulo DBD::Pg, o valor do oid est� dispon�vel + via $sth->{pg_oid_status} depois de $sth->execute(). - 4.15.3) currval() e nextval() n�o lidam com condi��o de corrida com outros - usu�rios? + 4.15.3) currval() n�o lida com condi��o de corrida com outros usu�rios? N�o. currval() retorna o valor atual atribuido pelo seu n�cleo (backend), e n�o por todos os usu�rios. diff --git a/doc/src/FAQ/FAQ_brazilian.html b/doc/src/FAQ/FAQ_brazilian.html index 33a64c7662..a07ffbdf9c 100644 --- a/doc/src/FAQ/FAQ_brazilian.html +++ b/doc/src/FAQ/FAQ_brazilian.html @@ -10,7 +10,7 @@ alink="#0000ff"> <H1>Perguntas Frequentes (FAQ) sobre PostgreSQL</H1> - <P>Última atualização: Sat Nov 20 17:28:23 EDT 2004</P> + <P>Última atualização: Dom Jan 9 14:44:04 EDT 2005</P> <P>Mantenedor atual: Bruce Momjian (<A href= "mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR> @@ -20,12 +20,13 @@ "mailto:eulerto@yahoo.com.br">eulerto@yahoo.com.br</A>)<BR> <P>A versão mais recente desse documento pode ser vista em <A href= - "http://www.PostgreSQL.org/docs/faqs/FAQ.html">http://www.PostgreSQL.org/docs/faqs/FAQ.html</A> (EN).<BR> - <A href="http://www.postgresql.org/docs/faqs/FAQ_brazilian.html">http://www.PostgreSQL.org/docs/faqs/FAQ_brazilian.html</A> - (pt_BR).</P> + "http://www.postgresql.org/files/documentation/faqs/FAQ.html"> + http://www.postgresql.org/files/documentation/faqs/FAQ.html</A> (EN).<BR> + <A href="http://www.postgresql.org/files/documentation/faqs/FAQ_brazilian.html"> + http://www.postgresql.org/files/documentation/faqs/FAQ_brazilian.html</A> (pt_BR).</P> <P>Perguntas sobre plataformas específicas são respondidas em <A href= - "http://www.PostgreSQL.org/docs/index.html">http://www.PostgreSQL.org/docs/index.html</A>.</P> + "http://www.postgresql.org/docs/faq/">http://www.postgresql.org/docs/faq/</A>.</P> <HR> <H2 align="center">Perguntas Gerais</H2> @@ -88,8 +89,7 @@ <A href="#4.15.1">4.15.1</A>) Como eu crio um campo serial/auto incremento?<BR> <A href="#4.15.2">4.15.2</A>) Como eu consigo o valor de um campo <SMALL>SERIAL</SMALL>?<BR> - <A href="#4.15.3">4.15.3</A>) <I>currval()</I> e - <I>nextval()</I> não lidam com condição de corrida com outros usuários?<BR> + <A href="#4.15.3">4.15.3</A>) <I>currval()</I> não lida com condição de corrida com outros usuários?<BR> <A href="#4.15.4">4.15.4</A>) Por que os números da minha sequência não são reutilizados quando uma transação é abortada? Por que há intervalos nos números da minha sequência/coluna SERIAL?<BR> <A href="#4.16">4.16</A>) O que é um <SMALL>OID</SMALL>? O que é um <SMALL>TID</SMALL>?<BR> <A href="#4.17">4.17</A>) Qual é o significado de alguns termos utilizados no PostgreSQL?<BR> @@ -102,7 +102,7 @@ <A href="#4.24">4.24</A>) Como eu faço consultas utilizando múltiplos bancos de dados?<BR> <A href="#4.25">4.25</A>) Como eu retorno múltiplos registros ou colunas de uma função?<BR> <A href="#4.26">4.26</A>) Por que eu não posso confiar na criação/remoção de tabelas temporárias em funções PL/PgSQL?<BR> - <A href="#4.28">4.27</A>) Que opções para encriptação estão disponíveis?<BR> + <A href="#4.27">4.27</A>) Que opções para encriptação estão disponíveis?<BR> <H2 align="center">Extendendo o PostgreSQL</H2> @@ -118,9 +118,7 @@ <H4><A name="1.1">1.1</A>) O que é PostgreSQL? Como ele é pronunciado?</H4> - <P>PostgreSQL é pronunciado <I>Post-Gres-Qui-El</I>. Um arquivo de áudio está - disponível em http://www.postgresql.org/postgresql.mp3 para aqueles que gostariam - de ouvir a pronúncia.</P> + <P>PostgreSQL é pronunciado <I>Post-Gres-Q-L</I>.</P> <P>PostgreSQL é um melhoramento do sistema de gerência de banco de dados POSTGRES (e também é, às vezes, chamado simplesmente de "Postgres"), @@ -140,8 +138,8 @@ por todo o desenvolvimento do PostgreSQL. É um projeto da comunidade e não é controlado por nenhuma empresa. Para se juntar ao grupo, veja a FAQ do desenvolvedor em - <A href="http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html"> - http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html</A></P> + <A href="http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html"> + http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html</A></P> <P>Os autores do PostgreSQL 1.01 foram Andrew Yu e Jolly Chen. Muitos outros contribuiram para portar, testar, depurar e @@ -204,10 +202,14 @@ baseados no NT tais como Win2000, WinXP e Win2003. Um instalador está disponível em <a href= "http://pgfoundry.org/projects/pginstaller"> - http://pgfoundry.org/projects/pginstaller</a>. + http://pgfoundry.org/projects/pginstaller</a> Vers�es do Windows + baseados no MSDOS (Win95, Win98, WinMe) podem executar o PostgreSQL utilizando o Cygwin. <P>Há também um porte para Novell Netware 6 em - <A href="http://forge.novell.com">http://forge.novell.com</A>.</P> + <A href="http://forge.novell.com">http://forge.novell.com</A> + e uma vers�o para OS/2 (eComStation) em <a href= + "http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F"> + http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F</a>.</P> <H4><A name="1.5">1.5</A>) Onde eu posso conseguir o PostgreSQL?</H4> @@ -254,14 +256,14 @@ Há também uma lista de discussão dos desenvolvedores dispon <A href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A> </BLOCKQUOTE> - <P>Há também um canal de IRC na Freenode e EFNet, canal <I>PostgreSQL</I>. Você pode utilizar o comando Unix <code>irc -c '#PostgreSQL' "$USER" irc.phoenix.net.</code> ou <code>irc -c '#PostgreSQL' "$USER" irc.freenode.net.</code></P> + <P>O principal canal de IRC é o <I>#postgresql</I> na Freenode (<I>irc.freenode.net</I>). Para se conectar você pode utilizar o comando Unix <code>irc -c '#postgresql' "$USER" irc.freenode.net</code> ou utilizar qualquer outro cliente de IRC. Um canal hispânico (<I>#postgresql-es</I>) e um francês (<I>#postgresqlfr</I>) também existem na mesma rede. Há também um canal PostgreSQL na EFNet.</P> <P>Uma lista de empresas que prestam suporte comercial está disponível em <A href= "http://techdocs.postgresql.org/companies.php">http://techdocs.postgresql.org/companies.php</A>.</P> <H4><A name="1.7">1.7</A>) Qual é a última versão?</H4> - <P>A última versão do PostgreSQL é a versão 7.4.5.</P> + <P>A última versão do PostgreSQL é a versão 7.4.6.</P> <P>Nós planejamos lançar versões novas a cada seis ou oito meses.</P> @@ -280,7 +282,7 @@ Há também uma lista de discussão dos desenvolvedores dispon href= "http://techdocs.PostgreSQL.org/">http://techdocs.PostgreSQL.org/</A>.</P> - <P><I>psql</I> tem alguns comandos \d para mostrar informação sobre tipos, operadores, funções, agregações, etc.</P> + <P>O programa cliente de linha de comando <I>psql</I> tem alguns comandos \d para mostrar informação sobre tipos, operadores, funções, agregações, etc. Use \? para mostrar os comandos disponíveis.</P> <P>Nosso web site contém ainda mais documentação.</P> @@ -324,9 +326,8 @@ Há também uma lista de discussão dos desenvolvedores dispon <H4><A name="1.13">1.13</A>) Como eu informo a existência de um bug?</H4> - <P>Por favor visite a página da ferramenta que reporta bugs em <A href= - "http://www.PostgreSQL.org/bugs/bugs.php">http://www.PostgreSQL.org/bugs/bugs.php</A>, - que irá lher dar as instruções e direções de como submeter um bug.</P> + <P>Visite o formulário que reporta bugs do PostgreSQL em <A href= + "http://www.postgresql.org/support/submitbug">http://www.postgresql.org/support/submitbug</A>.</P> <P>Verifique também o nosso ftp <A href= "ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub</A> para @@ -345,7 +346,7 @@ Há também uma lista de discussão dos desenvolvedores dispon <DT><B>Performance</B></DT> - <DD>PostgreSQL tem a performance similar a outros bancos de dados comerciais e de código livre. Ele é mais rápido em algumas coisas, mais lento em outras. Comparado ao MySQL ou sistemas de bancos de dados "leves", nós somos mais rápidos com múltiplos usuários, consultas complexas e carga de consultas de leitura/escrita. MySQL é mais rápido para consultas simples com SELECT feitas por poucos usuários. É claro que o MySQL não tem muitas das características mencionadas na seção <I>Características</I> acima. Nós desenvolvemos buscando confiabilidade e características, e nós continuamos a melhorar a performance a cada versão. Há uma página interessante comparando o PostgreSQL com o MySQL em <A href="http://openacs.org/philosophy/why-not-mysql.html">http://openacs.org/philosophy/why-not-mysql.html</A>. MySQL é uma empresa que distribui seu produto via código livre, e requer uma licença comercial para software de código fechado, e não uma comunidade de desenvolvimento de código livre como o PostgreSQL.<BR> + <DD>A performance do PostgreSQL é comparável a outros bancos de dados comerciais e de código livre. Ele é mais rápido em algumas coisas, mais lento em outras. Comparado ao MySQL ou sistemas de bancos de dados "leves", nós somos mais rápidos com múltiplos usuários, consultas complexas e carga de consultas de leitura/escrita. MySQL é mais rápido para consultas simples com SELECT feitas por poucos usuários. É claro que o MySQL não tem muitas das características mencionadas na seção <I>Características</I> acima. Nós desenvolvemos buscando confiabilidade e características, e nós continuamos a melhorar a performance a cada versão.<BR> <BR> </DD> @@ -375,9 +376,10 @@ Há também uma lista de discussão dos desenvolvedores dispon <P>Infra-estrutura de qualidade é muito importante em um projeto de código aberto. Ela previne descontinuidades que podem facilmente descontinuar o andamento do projeto.</P> <P>É claro, que a infra-estrutura não é barata. Há vários custos iniciais e mensais que são necessários para manté-la. Se você ou sua empresa tem dinheiro que pode ser doado para ajudar a financiar esse esforço, acesse <A href="http://store.pgsql.com/shopping/">http://store.pgsql.com/shopping/</A> e faça uma doação.</P> <P>Embora a página mencione PostgreSQL, Inc, a "contribuição" é somente para apoiar o projeto PostgreSQL e não financia nenhuma empresa específica. Se você preferir, você pode enviar um cheque para o endereço de contato.</P> - <HR> - <P>Se você tiver uma história de sucesso sobre o PostgreSQL, envie-a para nosso website em <A href="http://advocacy.postgresql.org">http://advocacy.postgresql.org</A>.</P> + <P>Se você tiver uma história de sucesso sobre o PostgreSQL, envie-a para nossa lista <i>advocacy</i> em <a href="mailto:pgsql-advocacy@postgresql.org">pgsql-advocacy@postgresql.org</a>.</P> + + <HR> <H2 align="center">Perguntas sobre Clientes</H2> @@ -403,10 +405,11 @@ Há também uma lista de discussão dos desenvolvedores dispon <P>Sim, há várias interfaces gráficas para PostgreSQL disponíveis. Entre elas o PgAccess <A href="http://www.pgaccess.org"> - http://www.pgaccess.org</A>), PgAdmin III (<A + http://www.pgaccess.org</A>), pgAdmin III (<A href="http://www.pgadmin.org">http://www.pgadmin.org</A>, RHDB Admin (<A href="http://sources.redhat.com/rhdb/">http://sources.redhat.com/rhdb/ - </A>) e o Rekall (<A href="http://www.thekompany.com/products/rekall/"> + </A>), TORA (<a href="http://www.globecom.net/tora/">http://www.globecom.net/tora/</a>, + parcialmente comercial) e o Rekall (<A href="http://www.thekompany.com/products/rekall/"> http://www.thekompany.com/products/rekall/</A>, proprietária). Há também o PhpPgAdmin (<A href="http://phppgadmin.sourceforge.net/"> http://phppgadmin.sourceforge.net/ </A>), uma interface web para @@ -451,7 +454,7 @@ Há também uma lista de discussão dos desenvolvedores dispon <H4><A name="3.3">3.3</A>) Quando eu tento iniciar o <I>postmaster</I>, eu recebo erros <I>IpcMemoryCreate</I>. Por que?</H4> - <P>Você não configurou a memória compartilhada corretamente no seu kernel ou você precisa aumentar a memória compartilhada disponível no seu kernel. A quantidade exata que você precisa vai depender da arquitetura e de quantos buffers e processos do servidor você configurou para o <I>postmaster</I>. Muitos sistemas, com o número padrão de buffers e processos, precisam de aproximadamente 1 MB. Veja o <A href="http://www.PostgreSQL.org/docs/view.php?version=current&idoc=1&file=kernel-resources.html">Guia do Administrador do PostgreSQL</A> para mais informação sobre memória compartilhada e semáforos.</P> + <P>Você não configurou a memória compartilhada corretamente no seu kernel ou você precisa aumentar a memória compartilhada disponível no seu kernel. A quantidade exata que você precisa vai depender da arquitetura e de quantos buffers e processos do servidor você configurou para o <I>postmaster</I>. Muitos sistemas, com o número padrão de buffers e processos, precisam de aproximadamente 1 MB. Veja a seção <A href="http://www.postgresql.org/docs/current/static/kernel-resources.html">PostgreSQL Administrator's Guide/Server Run-time Environment/Managing Kernel Resources</A> para mais informação sobre memória compartilhada e semáforos.</P> <H4><A name="3.4">3.4</A>) Quando eu tento iniciar o <I>postmaster</I>, eu recebo erros <I>IpcSemaphoreCreate</I>. Por que?</H4> @@ -471,11 +474,11 @@ Há também uma lista de discussão dos desenvolvedores dispon <P>Se você está fazendo muitos <SMALL>INSERTs</SMALL>, considere fazê-los em lote utilizando o comando <SMALL>COPY</SMALL>. Isso é mais rápido do que <SMALL>INSERTs</SMALL> individuais. Segundo, sentenças que não estão em um bloco de transação <SMALL>BEGIN WORK/COMMIT</SMALL> são consideradas com se estivessem em sua própria transação. Considere executar várias sentenças em um mesmo bloco de transação. Isso reduz a quantidade de transações. Também, considere remover e criar índices novamente quando estiver fazendo muitas mudanças nos dados.</P> - <P>Há várias opções de ajuste. Você pode desabilitar o <I>fsync()</I> iniciando o <I>postmaster</I> com a opção <I>-o -F</I>. Isso irá impedir que <I>fsync()</I>s enviem os dados para disco após cada transação.</P> + <P>Há várias opções de ajuste em <a href="http://www.postgresql.org/docs/current/static/runtime.html">Administration Guide/Server Run-time Environment/Run-time Configuration</a>. Você pode desabilitar o <I>fsync()</I> utilizando a opção <i>fsync</i>. Isso irá impedir que <I>fsync()</I>s enviem os dados para disco após cada transação.</P> - <P>Você também pode utilizar a opção <I>-B</I> do <I>postmaster</I> para aumentar o número de buffers de memória compartilhada utilizados pelos processos do servidor. Se você definiu este parâmetro com um valor muito alto, o <I>postmaster</I> pode não iniciar porque você excedeu o limite de espaço de memória compartilhada do kernel. Cada buffer é de 8K e o padrão é de 64 buffers.</P> + <P>Você pode utilizar a opção <I>shared_buffers</I> para aumentar o número de buffers de memória compartilhada utilizados pelos processos do servidor. Se você definiu este parâmetro com um valor muito alto, o <I>postmaster</I> pode não iniciar porque você excedeu o limite de espaço de memória compartilhada do kernel. Cada buffer é de 8K e o padrão é de 1000 buffers.</P> - <P>Você também pode utilizar a opção <I>-S</I> do backend para aumentar a máxima quantidade de memória utilizada pelo processo servidor para ordenações temporárias. O valor de <I>-S</I> é medido em kilobytes e o padrão é de 512 (ou seja 512K).</P> + <P>Você também pode utilizar a opção <I>sort_mem</I> (no PostgreSQL 8.0: <I>work_mem</I>) para aumentar a máxima quantidade de memória utilizada pelo processo servidor para cada ordenação temporária. O valor padrão é 1024 (ou seja 1MB).</P> <P>Você também pode utilizar o comando <SMALL>CLUSTER</SMALL> para agrupar dados em tabelas para combinar um índice. Veja o manual sobre <SMALL>CLUSTER</SMALL> para mais informação.</P> @@ -496,7 +499,9 @@ Há também uma lista de discussão dos desenvolvedores dispon <P>Se o <I>postmaster</I> não está sendo executado, você pode executar o núcleo do <I>postgres</I> a partir da linha de comando, e digitar a sua sentença <SMALL>SQL</SMALL> diretamente. Isso é recomendado <B>somente</B> para fins de depuração. Note que uma nova linha termina a consulta, e não um ponto-e-vírgula. Se você compilou com símbolos de depuração, você pode utilizar um depurador para ver o que está acontecendo. Como o núcleo (backend) não foi iniciado a partir do <I>postmaster</I>, ele não está executando em um ambiente idêntico e problemas de iteração com o núcleo/travamento não podem ser reproduzidos.</P> -<P>O programa <I>postgres</I> possue as opções <I>-s, -A</I>, e <I>-t</I> que podem ser muito úteis para depuração e medidas de performance.</P> +<P>Se o <i>postmaster</i> está sendo executado, inicie o <i>psql</i> em uma janela, e então encontre o <small>PID</small> do processo <i>postgres</i> utilizado pelo <i>psql</i> utilizando <pre>SELECT pg_backend_pid()</pre>. Utilize um depurador para anexar ao <small>PID</small> do <i>postgres</i>. Você pode definir pontos de parada (<i>breakpoints</i>) no depurador e digitar consultas no <i>psql</i>. Se você está depurando a inicialização do <i>postgres</i>, você pode definir PGOPTIONS="-W n" e então iniciar o <i>psql</i>. Isto retardará a inicialização por <i>n</i> segundos então você pode anexar o depurador ao processo, definir quaisquer pontos de parada e continuar pela sequência de inicialização.</p> + +<P>Há várias variáveis de configuração do servidor <pre>log_*</pre> que habilitam a exibição de estatísticas que podem ser muito úteis para depuração e medidas de performance.</P> <P>Você também pode compilar com perfil para ver que funções estão demandando tempo de execução. Os arquivo de perfil do núcleo (backend) serão colocados no diretório <I>pgsql/data/base/dbname</I>. O arquivo de perfil do cliente será colocado no diretório atual do cliente. O Linux requer uma compilação com <I>-DLINUX_PROFILE</I> para criação dos perfis.</P> @@ -629,7 +634,8 @@ Número máximo de índices em uma tabela? ilimitado <P>Veja também o arquivo <I>pgsql/src/tutorial/syscat.source</I>. Ele ilustra muitos <SMALL>SELECT</SMALL>s necessários para obter informação das tabelas do sistema de banco de dados.</P> <H4><A name="4.8">4.8</A>) Minhas consultas estão lentas ou não estão utilizando índices. Por que?</H4> - Índices não são automaticamente utilizados por toda consulta. Índices só são + + <p>Índices não são automaticamente utilizados por toda consulta. Índices só são utilizados se uma tabela é maior do que o tamanho mínimo e uma consulta seleciona somente uma porcentagem pequena de registros de uma tabela. Isto porque o acesso randômico ao disco causado por uma busca por índice pode ser @@ -678,7 +684,11 @@ Número máximo de índices em uma tabela? ilimitado <I>~*</I> não utilizam índices. Ao invés, utilize índices funcionais, que são descritos na seção <A href="#4.12">4.12</A>.</LI> <LI>A localidade padrão <I>C</I> deve ser utilizada durante o - <I>initdb</I>.</LI> + <i>initdb</i> porque não é possível saber o próximo/maior caracter + em uma localidade que não seja a C. Você pode criar um índice + especial <PRE>text_pattern_ops</PRE> para tais casos que funcionam somente para + indexação utilizando <PRE>LIKE</PRE>. + </LI> </UL> <P> @@ -797,15 +807,15 @@ Veja a página sobre <I>create_sequence</I> no manual para mais informa&cc novo_id = execute("SELECT currval('pessoa_id_seq')"); </PRE> - Finalmente, você poderia utilizar o <A href="#4.16"><SMALL>OID</SMALL></A> + <p>Finalmente, você poderia utilizar o <A href="#4.16"><SMALL>OID</SMALL></A> retornado da sentença <SMALL>INSERT</SMALL> para obter o valor padrão, embora este seja a abordagem menos portável, pois o valor do oid não ultrapassa 4 bilhões. - Em Perl, utilizando DBI com o módulo DBD::Pg de Edmund Mergl, o valor + Em Perl, utilizando DBI com o módulo DBD::Pg, o valor do oid está disponível via <I>$sth->{pg_oid_status}</I> depois de - <I>$sth->execute()</I>. + <I>$sth->execute()</I>.</p> - <H4><A name="4.15.3">4.15.3</A>) <I>currval()</I> e <I>nextval()</I> não lidam com condição de corrida com outros usuários?</H4> + <H4><A name="4.15.3">4.15.3</A>) <I>currval()</I> não lida com condição de corrida com outros usuários?</H4> <P>Não. <I>currval()</I> retorna o valor atual atribuido pelo seu núcleo (backend), e não por todos os usuários.</P>