Update Brazilian FAQ.

Euler Taveira de Oliveira
This commit is contained in:
Bruce Momjian 2007-10-09 03:21:00 +00:00
parent 30b6622ecc
commit 535b07873d
1 changed files with 66 additions and 59 deletions

View File

@ -10,7 +10,7 @@
alink="#0000ff">
<H1>Perguntas Frequentes (FAQ) sobre PostgreSQL</H1>
<P>&Uacute;ltima atualiza&ccedil;&atilde;o: S&aacute;b Out 14 19:08:19 EDT 2006</P>
<P>&Uacute;ltima atualiza&ccedil;&atilde;o: Qui Set 27 02:14:24 EDT 2007</P>
<P>Mantenedor atual: Bruce Momjian (<A href=
"mailto:bruce@momjian.us">bruce@momjian.us</A>)
@ -43,6 +43,7 @@
<A href="#item1.11">1.11</A>) Como eu posso aprender <SMALL>SQL</SMALL>?<BR>
<A href="#item1.12">1.12</A>) Como posso submeter uma corre&ccedil;&atilde;o (patch) ou me juntar a equipe de desenvolvimento?<BR>
<A href="#item1.13">1.13</A>) Como &eacute; o PostgreSQL comparado a outros <SMALL>SGBD</SMALL>s?<BR>
<A href="#item1.14">1.14</A>) O PostgreSQL gerenciará as mudan&ccedil;as de hor&aacute;rio devido ao hor&aacute;rio de ver&atilde;o em v&aacute;rios pa&iacute;ses?<BR>
<H2 align="center">Perguntas sobre Clientes</H2>
@ -57,7 +58,7 @@
<A href="#item3.3">3.3</A>) Como eu ajusto o servidor de banco de dados para obter uma performance melhor?<BR>
<A href="#item3.4">3.4</A>) Quais caracter&iacute;sticas de depura&ccedil;&atilde;o est&atilde;o dispon&iacute;veis?<BR>
<A href="#item3.5">3.5</A>) Por que eu recebo <I>"Sorry, too many clients"</I> quando eu tento conectar?<BR>
<A href="#item3.6">3.6</A>) Qual &eacute; o processo de atualiza&ccedil;&atilde;o do PostgreSQL?</H3>
<A href="#item3.6">3.6</A>) Qual &eacute; o processo de atualiza&ccedil;&atilde;o do PostgreSQL?<BR>
<A href="#item3.7">3.7</A>) Que tipo de hardware eu devo usar?<BR>
@ -70,7 +71,7 @@
<A href="#item4.6">4.6</A>) Por que minhas consultas est&atilde;o lentas? Por que elas n&atilde;o est&atilde;o utilizando meus &iacute;ndices?<BR>
<A href="#item4.7">4.7</A>) Como eu vejo como o otimizador de consultas est&aacute; avaliando minha consulta?<BR>
<A href="#item4.8">4.8</A>) Como eu fa&ccedil;o buscas com express&otilde;es regulares e buscas com express&otilde;es regulares sem diferenciar mau&uacute;sculas de min&uacute;sculas? Como eu utilizo um &iacute;ndice para buscas sem distinguir mai&uacute;sculas de min&uacute;sculas?<BR>
<A href="#item4.9">4.9</A>) Em uma consulta, como eu detecto se um campo &eacute; <SMALL>NULL</SMALL>? Como eu posso ordenar por um campo que &eacute; <SMALL>NULL</SMALL> ou n&atilde;o?<BR>
<A href="#item4.9">4.9</A>) Em uma consulta, como eu detecto se um campo &eacute; <SMALL>NULL</SMALL>? Como eu posso concatenar poss&iacute;veis <SMALL>NULL</SMALL>s? Como eu posso ordenar por um campo que &eacute; <SMALL>NULL</SMALL> ou n&atilde;o?<BR>
<A href="#item4.10">4.10</A>) Qual &eacute; a diferen&ccedil;a entre os v&aacute;rios tipos de dado de caracteres?<BR>
<A href="#item4.11.1">4.11.1</A>) Como eu crio um campo serial/auto incremento?<BR>
<A href="#item4.11.2">4.11.2</A>) Como eu consigo o valor de um campo
@ -88,7 +89,7 @@
does not exist" ao acessar tabelas tempor&aacute;rias em fun&ccedil;&otilde;es PL/PgSQL?<BR>
<A href="#item4.20">4.20</A>) Quais solu&ccedil;&otilde;es de replica&ccedil;&atilde;o est&atilde;o dispon&iacute;veis?<BR>
<A href="#item4.21">4.21</A>) Por que os nomes de minhas tabelas e colunas n&atilde;o
s&atilde;o reconhecidos em minha consulta?<BR>
s&atilde;o reconhecidos em minha consulta? Por que as mai&uacute;sculas n&atilde;o s&atilde;o preservadas?<BR>
<HR>
@ -97,10 +98,9 @@
<H3 id="item1.1">1.1) O que &eacute; PostgreSQL? Como ele &eacute; pronunciado?</H3>
<P>PostgreSQL &eacute; pronunciado <I>Post-Gres-Q-L</I>, e &eacute;, &agrave;s vezes, referido apenas como
<I>Postgres</I>. Um arquivo de &aacute;udio est&aacute; dispon&iacute;vel em
<a href="http://www.postgresql.org/files/postgresql.mp3">formato MP3</a> para
aqueles que gostariam de ouvir a pron&uacute;ncia.</P>
<P>PostgreSQL &eacute; pronunciado <I>Post-Gres-Q-L</I>, mas tamb&eacute;m pode ser referido apenas como <I>Postgres</I> principalmente em conversa&ccedil;&otilde;es.
(Para os curiosos que querem saber como se diz "PostgreSQL", um
<a href="http://www.postgresql.org/files/postgresql.mp3">arquivo de &aacute;udio</a> est&aacute; dispon&iacute;vel).</P>
<P>O PostgreSQL &eacute; um sistema de banco de dados objeto-relacional que tem as
caracter&iacute;sticas de sistemas de bancos de dados comerciais tradicionais com
@ -125,7 +125,7 @@
voc&ecirc; precisa &eacute; se inscrever nas listas de discuss&atilde;o e participar das
discuss&otilde;es. Veja a <a href="http://www.postgresql.org/docs/faqs.FAQ_DEV.html">
FAQ do desenvolvedor</A> para obter informa&ccedil;&otilde;es como se envolver com o
desenvolvimento do PostgreSQL.</P>
desenvolvimento do Postgres.</P>
<H3 id="item1.3">1.3) Qual &eacute; a licen&ccedil;a do PostgreSQL?</H3>
@ -169,7 +169,7 @@
baseados no NT tais como Win200 SP4, WinXP e Win2003. Um instalador pr&eacute;-empacotado est&aacute;
dispon&iacute;vel em <a href= "http://pgfoundry.org/projects/pginstaller">
http://pgfoundry.org/projects/pginstaller</a>. Vers&otilde;es do Windows baseadas no MS-DOS
(Win95, Win98, WinMe) podem executar o PostgreSQL utilizando o Cygwin.</P>
(Win95, Win98, WinMe) podem executar o Postgres utilizando o Cygwin.</P>
<p>H&aacute; tamb&eacute;m uma vers&atilde;o para o Novell Netware 6 em
<a href="http://forge.novell.com">http://forge.novell.com</a>
@ -181,13 +181,13 @@
<P>Via navegador web, utilize <a href="http://www.postgresql.org/ftp/">
http://www.postgresql.org/ftp/</a> e via ftp, utilize
<A href="ftp://ftp.PostgreSQL.org/pub/">
ftp://ftp.PostgreSQL.org/pub/</A>.</P>
<A href="ftp://ftp.postgresql.org/pub/">
ftp://ftp.postgresql.org/pub/</A>.</P>
<H3 id="item1.6">1.6) Qual &eacute; a &uacute;ltima vers&atilde;o?</H3>
<P>A &uacute;ltima vers&atilde;o do PostgreSQL &eacute; a vers&atilde;o 8.1.5.</P>
<P>A &uacute;ltima vers&atilde;o do PostgreSQL &eacute; a vers&atilde;o 8.2.5.</P>
<P>N&oacute;s planejamos lan&ccedil;ar vers&otilde;es novas a cada ano com vers&otilde;es
corretivas em alguns meses.</P>
@ -211,8 +211,8 @@
<P>Visite o formul&aacute;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&eacute;m o nosso ftp <A href=
"ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub</A> para
ver se h&aacute; uma vers&atilde;o mais recente do PostgreSQL.</P>
"ftp://ftp.postgresql.org/pub">ftp://ftp.postgresql.org/pub</A> para
ver se h&aacute; uma vers&atilde;o mais recente do Postgres.</P>
<P>Bugs submetidos utilizando o formul&aacute;rio ou informado a qualquer
lista de discuss&atilde;o do PostgreSQL tipicamente gera uma das seguintes
@ -220,7 +220,7 @@
<ul>
<li>N&atilde;o &eacute; um bug e o porqu&ecirc;</li>
<li>&Eacute; um bug conhecido e j&aacute; est&aacute; na lista de
<A href="http://www.postgresql.org/docs/faqs.TODO.html">AFAZERES (TODO)</A></li>
<A href="http://www.postgresql.org/docs/faqs.TODO.html">AFAZERES</A></li>
<li>O bug foi corrigido na vers&atilde;o atual</li>
<li>O bug foi corrigido mas n&atilde;o foi empacotado em um vers&atilde;o oficial</li>
<li>Um pedido foi feito para obter informa&ccedil;&otilde;es detalhadas:
@ -236,7 +236,7 @@
<ul>
<li>Uma corre&ccedil;&atilde;o &eacute; criada e ser&aacute; inclu&iacute;da na pr&oacute;xima vers&atilde;o</li>
<li>O bug n&atilde;o pode ser corrigido imediatamente e &eacute; adicionado
a lista de <A href="http://www.postgresql.org/docs/faqs.TODO.html">AFAZERES (TODO)</A></li>
a lista de <A href="http://www.postgresql.org/docs/faqs.TODO.html">AFAZERES</A></li>
</ul>
</li>
</ul>
@ -245,13 +245,13 @@
ou funcionalidades ausentes?</H3>
<P>O PostgreSQL suporta um subconjunto extendido do <SMALL>SQL:2003</SMALL>.
Veja nossa lista de <A href="http://www.postgresql.org/docs/faqs.TODO.html">AFAZERES (TODO)</A>
Veja nossa lista de <A href="http://www.postgresql.org/docs/faqs.TODO.html">AFAZERES</A>
que cont&eacute;m bugs conhecidos, funcionalidades ausentes e planos futuros.</P>
<P>Uma solicita&ccedil;&atilde;o de funcionalidade geralmente resulta em uma das
seguintes respostas:</P>
<ul>
<li>A funcionalidade j&aacute; est&aacute; na lista de <A href="http://www.postgresql.org/docs/faqs.TODO.html">AFAZERES (TODO)</A></li>
<li>A funcionalidade j&aacute; est&aacute; na lista de <A href="http://www.postgresql.org/docs/faqs.TODO.html">AFAZERES</A></li>
<li>A funcionalidade n&atilde;o &eacute; desej&aacute;vel porque:
<ul>
<li>Ela duplica uma funcionalidade existente que j&aacute; segue o
@ -262,16 +262,16 @@
</ul>
</li>
<li>A nova funcionalidade &eacute; adicionada a lista de
<A href="http://www.postgresql.org/docs/faqs.TODO.html">AFAZERES (TODO)</A></li>
<A href="http://www.postgresql.org/docs/faqs.TODO.html">AFAZERES</A></li>
</ul>
<P>O PostgreSQL n&atilde;o utiliza sistema de acompanhamento de bugs porque
n&oacute;s achamos mais eficiente responder diretamente o e-mail e manter a
lista de <A href="http://www.postgresql.org/docs/faqs.TODO.html">AFAZERES (TODO)</A>
lista de <A href="http://www.postgresql.org/docs/faqs.TODO.html">AFAZERES</A>
atualizada. Na pr&aacute;tica, bugs n&atilde;o duram muito no programa; e bugs que afetam
uma grande quantidade de usu&aacute;rios s&atilde;o corrigidos rapidamente. O &uacute;nico lugar
para encontrar todas as mudan&ccedil;as, melhorias e corre&ccedil;&otilde;es em uma vers&atilde;o do
PostgreSQL &eacute; ler as mensagens de log do
Postgres &eacute; ler as mensagens de log do
<a href="http://www.postgresql.org/developer/sourcecode/">CVS</a>. At&eacute; mesmo
as notas de lan&ccedil;amento n&atilde;o listam todas as mudan&ccedil;as feitas no programa.</P>
@ -280,7 +280,7 @@
<P>O PostgreSQL inclui vasta documenta&ccedil;&atilde;o, incluindo um manual extenso,
p&aacute;ginas de manuais (man pages) e alguns exemplos teste. Veja o diret&oacute;rio
<I>/doc</I>. Voc&ecirc; tamb&eacute;m pode pesquisar os manuais online em <A href=
"http://www.PostgreSQL.org/docs">http://www.PostgreSQL.org/docs</A>.
"http://www.postgresql.org/docs">http://www.postgresql.org/docs</A>.
</P>
<P>H&aacute; dois livros sobre PostgreSQL dispon&iacute;veis online em <A href=
@ -290,7 +290,8 @@
H&aacute; uma lista de livros sobre PostgreSQL dispon&iacute;veis para compra. Um dos mais
populares &eacute; o do Korry Douglas. Uma lista de an&aacute;lise sobre os livros pode ser
encontrada em <A href=
"http://techdocs.postgresql.org/techdocs/bookreviews.php">http://techdocs.PostgreSQL.org/techdocs/bookreviews.php</A>.
"http://techdocs.postgresql.org/techdocs/bookreviews.php">http://techdocs.postgresql.org/techdocs/bookreviews.php</A>.
H&aacute; tamb&eacute;m uma cole&ccedil;&atilde;o de artigos t&eacute;cnicos sbore PostgreSQL em <A href="http://techdocs.postgresql.org/">http://techdocs.postgresql.org/</A>.</P>
<P>O programa cliente de linha de comando <I>psql</I> tem alguns comandos \d para
mostrar informa&ccedil;&otilde;es sobre tipos, operadores, fun&ccedil;&otilde;es, agrega&ccedil;&otilde;es, etc. - utilize \?
@ -352,7 +353,7 @@
<DT><B>Suporte</B></DT>
<DD>Nossas listas de discuss&atilde;o fornecem contato com um grupo de desenvolvedores e usu&aacute;rios para ajudar a resolver muitos problemas encontrados. Enquanto n&oacute;s n&atilde;o podemos garantir o conserto, <SMALL>SGBD</SMALL>s comerciais nem sempre fornecem tamb&eacute;m. Com acesso direto aos desenvolvedores, a comunidade de usu&aacute;rios, manuais e o c&oacute;digo fonte faz com que o suporte do PostgreSQL seja superior ao de outros <SMALL>SGBD</SMALL>s. H&aacute; suporte comercial por incidente dispon&iacute;veis para aqueles que precisam de um. (Veja <A href="#item1.7">se&ccedil;&atilde;o 1.7 da FAQ</A>.)<BR>
<DD>Nossas listas de discuss&atilde;o fornecem contato com um grupo de desenvolvedores e usu&aacute;rios para ajudar a resolver muitos problemas encontrados. Enquanto n&oacute;s n&atilde;o podemos garantir o conserto, <SMALL>SGBD</SMALL>s comerciais nem sempre fornecem tamb&eacute;m. Com acesso direto aos desenvolvedores, a comunidade de usu&aacute;rios, manuais e o c&oacute;digo fonte faz com que o suporte do PostgreSQL seja superior ao de outros <SMALL>SGBD</SMALL>s. H&aacute; suporte comercial por incidente dispon&iacute;veis para aqueles que precisam de um. (Veja <A href="#item1.7">se&ccedil;&atilde;o 1.7 da FAQ</A>).<BR>
<BR>
</DD>
@ -363,6 +364,10 @@
</DD>
</DL>
<H3 id="item1.14">1.14) O PostgreSQL gerenciar&aacute; mudan&ccedil;as no hor&aacute;rio devido ao hor&aacute;rio de ver&atilde;o em v&aacute;rios pa&iacute;ses?</H3>
<P>Mudan&ccedil;as no hor&aacute;rio de ver&atilde;o dos USA foram inclu&iacute;das nas vers&otilde;es 8.0 .[4+] do PostgreSQL e em todas as vers&otilde;es grandes, i.e. 8.1. Mudan&ccedil;as no Canad&aacute; e Austr&aacute;lia Oeste foram inclu&iacute;das na 8.0.[10+], 8.1.[6+] e em todas as vers&otilde;es grandes subsequentes. Vers&otilde;es do PostgreSQL anteriores a 8.0 utilizam o banco de dados de zona hor&aacute;ria do sistema operacional para informa&ccedil;&otilde;es sobre hor&aacute;rio de ver&atilde;o.</P>
<HR>
<H2 align="center">Perguntas sobre Clientes</H2>
@ -482,15 +487,12 @@
<H3 id="item3.6">3.6) Qual &eacute; o processo de atualiza&ccedil;&atilde;o do PostgreSQL?</H3>
<P>O time do PostgreSQL faz somente pequenas mudan&ccedil;as entre vers&otilde;es corretivas, ent&atilde;o atualizar da vers&atilde;o 7.4.8 para 7.4.9 n&atilde;o requer uma exporta&ccedil;&atilde;o e uma importa&ccedil;&atilde;o; basta para o servidor de banco de dados, instalar os bin&aacute;rios atualizados e reiniciar o servidor.</P>
<P>Todos os usu&aacute;rios devem atualizar para as vers&otilde;es corretivas mais recentes
assim que elas estiverem dispon&iacute;veis. Enquanto cada atualiza&ccedil;&atilde;o tem algum risco,
vers&otilde;es corretivas do PostgreSQL s&atilde;o projetadas para corrigir somente bugs comuns
com um risco m&iacute;nimo. A comunidade considera <i>n&atilde;o</i> atualizar mais
perigoso do que atualizar.</P>
<P>Vers&otilde;es novas (i.e. da 7.3 para 7.4) geralmente muda-se o formato interno das tabelas de sistema e dos arquivo de dados. Essas mudan&ccedil;as geralmente s&atilde;o complexas, ent&atilde;o n&oacute;s n&atilde;o mantemos compatibilidade para os arquivos de dados. Uma exporta&ccedil;&atilde;o/importa&ccedil;&atilde;o de um banco de dados &eacute; necess&aacute;ria para atualiza&ccedil;&otilde;es entre vers&otilde;es.</P>
<P>Veja <a
href="http://www.postgresql.org/support/versioning">http://www.postgresql.org/support/versioning</a>
para discussão geral sobre atualizações e <a href=
"http://www.postgresql.org/docs/current/static/install-upgrading.html">
http://www.postgresql.org/docs/current/static/install-upgrading.html</a>
para instru&ccedil;&otilde;es espec&iacute;ficas.</P>
<H3 id="item3.7">3.7) Que tipo de hardware eu devo usar?</H3>
@ -589,29 +591,29 @@
melhor garantida por um &iacute;ndice de uma fun&ccedil;&atilde;o de um hash MD5 de uma coluna longa, e
indexa&ccedil;&atilde;o de texto longo permite a busca de palavras dentro da coluna.</P>
<H3 name="item4.5">4.5) Quanto espa&ccedil;o em disco &eacute; necess&aacute;rio para armazenar dados de um arquivo texto?</H3>
<H3 id="item4.5">4.5) Quanto espa&ccedil;o em disco &eacute; necess&aacute;rio para armazenar dados de um arquivo texto?</H3>
<P>Um banco de dados PostgreSQL ir&aacute; requerer at&eacute; cinco vezes a quantidade de espa&ccedil;o requerida para armazenar dados em um arquivo texto.</P>
<P>Como um exemplo, considere um arquivo com 100.000 linhas contendo um inteiro e uma descri&ccedil;&atilde;o em cada linha. Suponha que o tamanho m&eacute;dio da descri&ccedil;&atilde;o &eacute; de vinte bytes. O arquivo ter&aacute; 2,8 MB. O tamanho do arquivo do banco de dados PostgreSQL que cont&eacute;m esses dados pode ser estimado em 5,6 MB:</P>
<P>Como um exemplo, considere um arquivo com 100.000 linhas contendo um inteiro e uma descri&ccedil;&atilde;o em cada linha. Suponha que o tamanho m&eacute;dio da descri&ccedil;&atilde;o &eacute; de vinte bytes. O arquivo ter&aacute; 2,8 MB. O tamanho do arquivo do banco de dados PostgreSQL que cont&eacute;m esses dados pode ser estimado em 5,2 MB:</P>
<PRE>
28 bytes: cada cabe&ccedil;alho de registro (aproximadamente)
24 bytes: cada cabe&ccedil;alho de registro (aproximadamente)
24 bytes: um campo int e um campo texto
+ 4 bytes: ponteiro na p&aacute;gina para a tupla
-------------------------------------------
56 bytes por registro
52 bytes por registro
O tamanho de uma p&aacute;gina de dados no PostgreSQL &eacute; 8192 bytes (8 KB), ent&atilde;o:
O tamanho de uma p&aacute;gina de dados no Postgres &eacute; 8192 bytes (8 KB), ent&atilde;o:
8192 bytes por p&aacute;gina
------------------------ = 146 registros por p&aacute;gina do banco de dados (arredondado para baixo)
56 bytes por registro
------------------------ = 158 registros por p&aacute;gina do banco de dados (arredondado para baixo)
52 bytes por registro
100000 registros de dados
---------------------------- = 685 p&aacute;ginas do banco de dados (arredondado para cima)
146 registros por p&aacute;gina
---------------------------- = 633 p&aacute;ginas do banco de dados (arredondado para cima)
158 registros por p&aacute;gina
685 p&aacute;ginas do banco de dados * 8192 bytes por p&aacute;gina = 5.611.520 bytes (5,6 MB)
633 p&aacute;ginas do banco de dados * 8192 bytes por p&aacute;gina = 5.185.536 bytes (5,2 MB)
</PRE>
<P>&Iacute;ndices n&atilde;o requerem muito espa&ccedil;o, mas cont&eacute;m
@ -704,7 +706,7 @@
Para for&ccedil;ar uma letra mai&uacute;scula ou min&uacute;scula a ser armazenada na coluna, utilize
uma restri&ccedil;&atilde;o <SMALL>CHECK</SMALL> ou um gatilho.</P>
<H3 id="item4.9">4.9) Em uma consulta, como eu detecto se um campo &eacute; <SMALL>NULL</SMALL>? Como eu posso ordenar por um campo que &eacute; <SMALL>NULL</SMALL> ou n&atilde;o?</H3>
<H3 id="item4.9">4.9) Em uma consulta, como eu detecto se um campo &eacute; <SMALL>NULL</SMALL>? Como eu posso concatenar poss&iacute;veis <SMALL>NULL</SMALL>s? Como eu posso ordenar por um campo que &eacute; <SMALL>NULL</SMALL> ou n&atilde;o?</H3>
<P>Voc&ecirc; testa a coluna com <SMALL>IS NULL</SMALL> e <SMALL>IS
NOT NULL</SMALL>, como a seguir:</P>
@ -715,6 +717,12 @@
WHERE col IS NULL;
</PRE>
<P>Para concatenar com poss&iacute;veis <SMALL>NULL</SMALL>s, utilize <I>COALESCE()</I>, assim:</P>
<PRE>
SELECT COALESCE(col1, '') || COALESCE(col2, '')
FROM tab
</PRE>
<P>Para ordenar pelo status <SMALL>NULL</SMALL>, utilize os modificadores
<SMALL>IS NULL</SMALL> e <SMALL>IS NOT NULL</SMALL> na sua cl&aacute;usula
<SMALL>ORDER BY</SMALL>. Coisas que s&atilde;o <I>verdadeiro</I> ser&atilde;o ordenadas acima
@ -802,7 +810,7 @@ comprimento</TD></TR>
novo_id = execute("SELECT currval('pessoa_id_seq')");
</PRE>
<H3 name="4.11.3">4.11.3) <I>currval()</I> n&atilde;o lida com condi&ccedil;&atilde;o de corrida com outros usu&aacute;rios?</H3>
<H3 id="item4.11.3">4.11.3) <I>currval()</I> n&atilde;o lida com condi&ccedil;&atilde;o de corrida com outros usu&aacute;rios?</H3>
<P>N&atilde;o. <I>currval()</I> retorna o valor atual atribuido pela sua sess&atilde;o, e n&atilde;o por todas as sess&otilde;es.</P>
@ -810,13 +818,12 @@ comprimento</TD></TR>
<P>Para melhorar a concorr&ecirc;ncia, valores da sequ&ecirc;ncia s&atilde;o atribu&iacute;dos a transa&ccedil;&otilde;es correntes e n&atilde;o s&atilde;o travados at&eacute; que a transa&ccedil;&atilde;o seja finalizada. Isso causa intervalos na numera&ccedil;&atilde;o por causa de transa&ccedil;&otilde;es abortadas.</P>
<H3 id="4.16">4.16) O que &eacute; um <SMALL>OID</SMALL>? O que &eacute; um <SMALL>CTID</SMALL>?</H3>
<H3 id="item4.12">4.12) O que &eacute; um <SMALL>OID</SMALL>? O que &eacute; um <SMALL>CTID</SMALL>?</H3>
<P>Cada registro que &eacute; criado no PostgreSQL recebe um <SMALL>OID</SMALL> &uacute;nico
a menos que seja criado com <SMALL>WITHOUT OIDS</SMALL>.
<P>Se uma tabela &eacute; criada com <SMALL>WITH OIDS</SMALL>, cada registro recebe um <SMALL>OID</SMALL> &uacute;nico.
O<SMALL>ID</SMALL>s s&atilde;o automaticamente atribu&iacute;dos como inteiros de 4 bytes
que s&atilde;o &uacute;nicos ao longo de toda instala&ccedil;&atilde;o. Contudo, eles s&atilde;o limitados em
4 bilh&otilde;es, e ent&atilde;o os O<SMALL>ID</SMALL>s come&ccedil;am a ser duplicados. O PostgreSQL
4 bilh&otilde;es e, ent&atilde;o, os O<SMALL>ID</SMALL>s come&ccedil;am a ser duplicados. O PostgreSQL
utiliza <SMALL>OID</SMALL>s para ligar as tabelas do sistema.</P>
<P>Para numerar registros nas tabelas do usu&aacute;rios, &eacute; melhor utilizar
@ -852,7 +859,7 @@ comprimento</TD></TR>
CREATE TABLE teste (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
</PRE>
<H3 id="item4.23">4.23) Como eu fa&ccedil;o uma jun&ccedil;&atilde;o externa (outer join)?</H3>
<H3 id="item4.16">4.16) Como eu fa&ccedil;o uma jun&ccedil;&atilde;o externa (outer join)?</H3>
<P>PostgreSQL suporta jun&ccedil;&otilde;es externas utilizando a sintaxe padr&atilde;o do SQL. Aqui temos dois exemplos:</P>
<PRE>
@ -874,7 +881,7 @@ comprimento</TD></TR>
A palavra <SMALL>OUTER</SMALL> &eacute; opcional e &eacute; assumida nas
jun&ccedil;&otilde;es <SMALL>LEFT</SMALL>, <SMALL>RIGHT</SMALL> e <SMALL>FULL</SMALL>.
Jun&ccedil;&otilde;es ordin&aacute;rias s&atilde;o chamadas jun&ccedil;&otilde;es
naturais (<SMALL>INNER</SMALL>).</P>
internas (<SMALL>INNER</SMALL>).</P>
<H3 id="item4.17">4.17) Como eu fa&ccedil;o consultas utilizando m&uacute;ltiplos bancos de dados?</H3>
@ -891,8 +898,8 @@ comprimento</TD></TR>
<H3 id="item4.18">4.18) Como eu retorno m&uacute;ltiplos registros ou colunas de uma fun&ccedil;&atilde;o?</H3>
<P>&Eacute; f&aacute;cil utilizando fun&ccedil;&otilde;es que retornam conjunto,
<a href="http://techdocs.postgresql.org/guides/SetReturningFunctions">
http://techdocs.postgresql.org/guides/SetReturningFunctions</a>.</P>
<a href="http://www.postgresql.org/docs/techdocs.17">
http://www.postgresql.org/docs/techdocs.17</a>.</P>
<H3 id="item4.19">4.19) Por que eu obtenho erros "relation with OID ######
does not exist" ao acessar tabelas tempor&aacute;rias em fun&ccedil;&otilde;es PL/PgSQL?</H3>
@ -912,22 +919,22 @@ comprimento</TD></TR>
<P>Replica&ccedil;&atilde;o com m&uacute;ltiplos mestres permite que consultas leitura/escrita sejam
enviadas para m&uacute;ltiplos computadores replicadores. Esta capacidade tamb&eacute;m tem
um s&eacute;rio impacto na performance por causa da necessidade de sincronizar as mudan&ccedil;as
entre os servidores. <A href="http://pgfoundry.org/projects/pgcluster/">Pgcluster</a>
entre os servidores. <A href="http://pgfoundry.org/projects/pgcluster/">PGCluster</a>
&eacute; a solu&ccedil;&atilde;o mais popular dispon&iacute;vel livremente para PostgreSQL.</P>
<P>H&aacute; tamb&eacute;m solu&ccedil;&otilde;es de replica&ccedil;&atilde;o comerciais e baseadas em hardware dispon&iacute;veis
que suportam uma variedade de modelos de replica&ccedil;&atilde;o.</P>
<H3 id="item4.21">4.21) Por que os nomes de minhas tabelas e colunas n&atilde;o
s&atilde;o reconhecidos em minha consulta?</H3>
s&atilde;o reconhecidos em minha consulta? Por que as mai&uacute;sculas n&atilde;o s&atilde;o preservadas?</H3>
<P>O caso mais comum &eacute; o uso de aspas ao redor dos nomes da tabela ou coluna
<P>A causa mais comum de nomes desconhecidos &eacute; o uso de aspas ao redor dos nomes da tabela ou coluna
durante a cria&ccedil;&atilde;o da tabela. Ao utilizar aspas, nomes de tabela e coluna
(chamados de identificadores) s&atilde;o armazenados <a
href="http://www.postgresql.org/docs/8.0/static/sql-syntax.html#SQL-SYNTAX-IDENTIFIERS">
href="http://www.postgresql.org/docs/current/static/sql-syntax.html#SQL-SYNTAX-IDENTIFIERS">
como especificado</a>, significando que voc&ecirc; deve utilizar aspas quando se
referir aos nomes na consulta. Algumas interfaces, como pgAdmin,
automaticamente coloca aspas nos identificadores durante a cria&ccedil;&atilde;o da tabela.
automaticamente colocam aspas nos identificadores durante a cria&ccedil;&atilde;o da tabela.
Ent&atilde;o, para identificadores serem reconhecidos, voc&ecirc; deve:
<UL>
<LI>Evitar colocar aspas no identificador ao criar tabelas</LI>