<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>
@ -499,9 +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>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>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 <code>SELECT pg_backend_pid()</code>. 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>Há várias variáveis de configuração do servidor <code>log_*</code> 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>
@ -526,7 +526,7 @@ Há também uma lista de discussão dos desenvolvedores dispon
<H4><Aname="3.11">3.11</A>) Que tipo de hardware eu devo usar?</H4>
<P>Por causa do hardware de PC ser em sua maioria compatível, pessoas tendem a acreditar que todos os hardwares de PC são de mesma qualidade. Não é verdade. ECC RAM, SCSI e placas mãe de qualidade são mais confiáveis e têm uma melhor performance do que hardwares mais baratos. O PostgreSQL executará em quase todo hardware, mas se a confiabilidade e a performance forem importantes é prudente pesquisar sobre as opções de hardware. Nossas listas de discussão podem ser usadas para discutir opções de hardware e dilemas.</P>
<P>Por causa do hardware de PC ser em sua maioria compatível, pessoas tendem a acreditar que todos os hardwares de PC satilde;o de mesma qualidade. Natilde;o é verdade. ECC RAM, SCSI e placas mãe de qualidade são mais confiáveis e têm uma melhor performance do que hardwares mais baratos. O PostgreSQL executará em quase todo hardware, mas se a confiabilidade e a performance forem importantes é prudente pesquisar sobre as opções de hardware. Nossas listas de discussão podem ser usadas para discutir opções de hardware e dilemas.</P>
<HR>
@ -543,7 +543,7 @@ Há também uma lista de discussão dos desenvolvedores dispon
<P>Toda a consulta tem que ser avaliada, mesmo se você só quer os primeiros registros. Considere utilizar uma consulta que tenha um <SMALL>ORDER BY</SMALL>. Se há um índice que combina com o <SMALL>ORDER BY</SMALL>, o PostgreSQL pode ser capaz de avaliar somente os primeiros registros requisitados, ou toda consulta tem que ser avaliada até que os registros desejados tenham sido gerados.</P>
<P>Para obter um registro randômico, utilize:
<P>Para obter um registro randômico, utilize:</P>
<PRE>
SELECT col
FROM tab
@ -639,7 +639,7 @@ Número máximo de índices em uma tabela? ilimitado
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
mais lento do que uma leitura ao longo da tabela ou uma busca sequencial.
mais lento do que uma leitura ao longo da tabela ou uma busca sequencial.</p>
<P>Para determinar se um índice pode ser utilizado, o PostgreSQL deve ter
estatísticas sobre a tabela. Estas estatísticas são coletadas utilizando
@ -686,11 +686,10 @@ Número máximo de índices em uma tabela? ilimitado
<LI>A localidade padrão <I>C</I> deve ser utilizada durante o
<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
especial <tt>text_pattern_ops</tt> para tais casos que funcionam somente para
indexação utilizando <tt>LIKE</tt>.
</LI>
</UL>
<P>
<P>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 coluna do índice. Isto é particularmente verdadeiro para índices de coluna int2, int8 e numeric.</P>
@ -922,14 +921,15 @@ Veja a página sobre <I>create_sequence</I> no manual para mais informa&cc
FROM tab
WHERE col IN (SELECT subcol FROM subtab);
</PRE>
por:
<p>por:</p>
<PRE> SELECT *
FROM tab
WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
</PRE>
Para isto ser rápido, <CODE>subcol</CODE> deve ser uma coluna indexada. <P>A partir da versão 7.4, <CODE>IN</CODE> utiliza a mesma técnica de agrupamento do que consultas normais, e é recomendado utilizar <CODE>EXISTS</CODE>.
<p>
Para isto ser rápido, <CODE>subcol</CODE> deve ser uma coluna indexada.</P>
<P>A partir da versão 7.4, <CODE>IN</CODE> utiliza a mesma técnica de agrupamento do que consultas normais, e é recomendado utilizar <CODE>EXISTS</CODE>.
</p>
<H4><Aname="4.23">4.23</A>) Como eu faço uma junção externa (outer join)?</H4>
<P>PostgreSQL suporta junções externas utilizando a sintaxe padrão do SQL. Aqui temos dois exemplos:</P>
@ -965,7 +965,7 @@ Para isto ser rápido, <CODE>subcol</CODE> deve ser uma coluna indexada. <
<H4><Aname="4.25">4.25</A>) Como eu retorno múltiplos registros ou colunas de uma função?</H4>
<P>No 7.3, você pode facilmente retornar múltiplos registros ou colunas de uma função, <Ahref="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</A>.
<P>No 7.3, você pode facilmente retornar múltiplos registros ou colunas de uma função, <Ahref="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</A>.</P>
<H4><Aname="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?</H4>
<P>PL/PgSQL armazena o conteúdo da função, e o efeito indesejado é que se uma função PL/PgSQL acessa uma tabela temporária, e aquela tabela é removida e criada novamente, e a função é chamada novamente, a função irá falhar porque o conteúdo armazenado da função ainda apontará para a tabela temporária antiga. A solução é utilizar o <SMALL>EXECUTE</SMALL> para acesso a tabelas temporárias no PL/PgSQL. Isto irá fazer com que a consulta seja avaliada toda vez.</P>
@ -973,7 +973,7 @@ Para isto ser rápido, <CODE>subcol</CODE> deve ser uma coluna indexada. <
<H4><Aname="4.27">4.27</A>) Que opções para encriptação estão disponíveis?</H4>
<UL>
<LI>No <I>contrib/pgcrypto</I> contém muitas funções de encriptação para serem utilizados em consultas <SMALL>SQL</SMALL>.</li>
<LI>Para encriptar a transmissão do cliente ao servidor, o servidor deve ter a opção <I>ssl</I> definida como <I>true</I> no <I>postgresql.conf</I>, e um registro <I>host</I> ou <I>hostssl</I> deve existir no <I>pg_hba.conf</I>, e o <I>sslmode</I> no cliente não deve estar <I>disable</I>. (Note que também é possível utilizar outros esquemas de transporte encriptado, tais como stunnel ou ssh, ao invés da conexão SSL nativa do PostgreSQL.)
<LI>Para encriptar a transmissão do cliente ao servidor, o servidor deve ter a opção <I>ssl</I> definida como <I>true</I> no <I>postgresql.conf</I>, e um registro <I>host</I> ou <I>hostssl</I> deve existir no <I>pg_hba.conf</I>, e o <I>sslmode</I> no cliente não deve estar <I>disable</I>. (Note que também é possível utilizar outros esquemas de transporte encriptado, tais como stunnel ou ssh, ao invés da conexão SSL nativa do PostgreSQL.)</LI>
<LI>Senhas dos usuários do banco de dados são automaticamente encriptadas quando armazenadas na versão 7.3. Em versões anteriores, você deve habilitar a opção <I>PASSWORD_ENCRYPTION</I> no <I>postgresql.conf</I>.</li>
<li>O servidor pode executar utilizando um sistema de arquivos encriptado.</li>
<p>Die Liste ist Themen vorbehalten, die PostgreSQL betreffen. Die Anmeldung
erfolgt mit einer Email an die Adresse <ahref="mailto:pgsql-general-request@postgresql.org">pgsql-general-request@postgresql.org</a> mit folgenden Zeilen im Text