Perguntas Frequentes (FAQ) sobre PostgreSQL
- Última atualização: Sex Jun 4 00:09:16 EDT 2004
+ Última atualização: Sab Fev 7 22:16:21 EST 2004
Mantenedor atual: Bruce Momjian (pgman@candle.pha.pa.us)
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-Qui-El. O nome "Postgres" é
+ utilizado frequentemente em conversações.
PostgreSQL é um melhoramento do sistema de gerência de banco de dados
- POSTGRES (e também é, às vezes, chamado simplesmente de "Postgres"),
- um protótipo de pesquisa de um SGBD de última geração. Enquanto o
- PostgreSQL retém a modelagem de dados poderosa e a grande quantidade
- de tipos de dados do POSTGRES, ele substituiu a linguagem de consulta
- PostQuel com um subconjunto extendido do SQL. PostgreSQL é livre e o
- código-fonte completo está disponível.
+ POSTGRES, um protótipo de pesquisa de um SGBD de última geração.
+ Enquanto o PostgreSQL retém a modelagem de dados poderosa e a grande
+ quantidade de tipos de dados do POSTGRES, ele substituiu a linguagem
+ de consulta PostQuel com um subconjunto extendido do SQL. PostgreSQL é
+ livre e o código-fonte completo está disponível.
O desenvolvimento do PostgreSQL é feito por um grupo de
desenvolvedores que estão inscritos na lista de e-mails de
(scrappy@PostgreSQL.org). (Veja a seção 1.6 para saber como se juntar
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
+ empresa. Para se juntar ao grupo, veja a FAQ do desenvolvedor
http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html
Os autores do PostgreSQL 1.01 foram Andrew Yu e Jolly Chen. Muitos
PostgreSQL Sistema de Gerência de Banco de Dados
- Portions copyright (c) 1996-2004, PostgreSQL Global Development Group
+ Portions copyright (c) 1996-2002, 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
1.3) Quais plataformas Unix o PostgreSQL pode ser executado?
- Em geral, qualquer plataforma moderna compatível com Unix deve ser
- capaz de executar o PostgreSQL. As plataformas que foram testadas
- antes do lançamento de uma versão são listadas nas instruções de
- instalação.
+ Em geral, uma plataforma moderna compatível com Unix deve ser capaz de
+ executar o PostgreSQL. As plataformas que foram testadas antes do
+ lançamento de uma versão são listadas nas instruções de instalação.
1.4) Quais portabilidades não-Unix estão disponíveis?
1.7) Qual é a última versão?
- A última versão do PostgreSQL é a versão 7.4.2.
+ A última versão do PostgreSQL é a versão 7.4.1.
Nós planejamos lançar versões novas a cada seis ou oito meses.
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 (
+ proprietária). Há também o PHPPgAdmin (
http://phppgadmin.sourceforge.net/ ), uma interface web para
PostgreSQL.
Por padrão, o PostgreSQL só permite conexões da máquina local
utilizando soquetes de domínio Unix. Outras máquinas não poderão
- conectar-se a menos que você habilite tcpip_sockets no
- postgresql.conf, e habilite a autenticação por máquina modificando o
- arquivo $PGDATA/pg_hba.conf. Isso irá permitir conexões TCP/IP.
+ conectar-se a menos que você adicione a opção -i no postmaster, e
+ habilite a autenticação por máquina modificando o arquivo
+ $PGDATA/pg_hba.conf. Isso irá permitir conexões TCP/IP.
3.6) Como eu ajusto o servidor de banco de dados para obter uma performance
melhor?
Certamente, índices podem acelerar consultas. O comando EXPLAIN
- ANALYZE permite que você veja como o PostgreSQL está interpretando a
- consulta, e quais os índices são utilizados.
+ permite que você veja como o PostgreSQL está interpretando a consulta,
+ e quais os índices são utilizados.
Se você está fazendo muitos INSERTs, considere fazê-los em lote
utilizando o comando COPY. Isso é mais rápido do que INSERTs
4.3) Como eu obtenho a lista de tabelas ou outras coisas que eu posso ver
no psql?
- Utilize o comando \dt para ver tabelas no psql. Para obter uma lista
- completa de comandos no psql você pode utilizar \?. Alternativamente
- você pode ler o código-fonte do psql no arquivo
+ Você pode ler o código-fonte do psql no arquivo
pgsql/src/bin/psql/describe.c. Ele contém comandos SQL que geram a
saída para os comandos do psql. Você também pode iniciar o psql com a
opção -E então serão mostradas as consultas utilizadas para executar
- os comandos que você digitou. PostgreSQL também fornece uma interface
- para o INFORMATION SCHEMA SQLi na qual você pode consultar informações
- sobre o banco de dados.
+ os comandos que você digitou.
4.4) Como eu removo uma coluna de uma tabela ou mudo o seu tipo de dados?
que é utilizada por todos os bancos de dados. Se você quer mudar o OID
de alguma coisa, ou se você quer fazer uma cópia da tabela, com os
OIDs, não há razão para que você não possa fazê-la:
- CREATE TABLE nova_tabela(minha_coluna int);
- SELECT oid as oid_antigo, minha_coluna INTO tabela_tmp FROM tabela_anti
-ga;
- COPY tabela_tmp TO '/tmp/pgtable';
- DROP TABLE tabela_tmp;
+ CREATE TABLE nova_tabela(oid_antigo oid, minha_coluna int);
+ SELECT oid_antigo, minha_coluna INTO novo FROM tabela_antiga;
+ COPY novo TO '/tmp/pgtable';
+ DELETE FROM novo;
COPY nova_tabela WITH OIDS FROM '/tmp/pgtable';
OIDs são armazenados como inteiros de 4 bytes, e não ultrapassam 4
alink="#0000ff">
<H1>Perguntas Frequentes (FAQ) sobre PostgreSQL</H1>
- <P>Última atualização: Sex Jun 4 00:09:16 EDT 2004</P>
+ <P>Última atualização: Sab Fev 7 22:16:21 EST 2004</P>
<P>Mantenedor atual: Bruce Momjian (<A href=
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR>
<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-Qui-El</I>. O nome "Postgres" é
+ utilizado frequentemente em conversações.</P>
<P>PostgreSQL é um melhoramento do sistema de gerência
- de banco de dados POSTGRES (e também é, às vezes, chamado simplesmente de "Postgres"),
- um protótipo de pesquisa de um <SMALL>SGBD</SMALL> de
+ de banco de dados POSTGRES, um protótipo de pesquisa de um <SMALL>SGBD</SMALL> de
última geração. Enquanto o PostgreSQL retém a
modelagem de dados poderosa e a grande quantidade de tipos de dados do POSTGRES, ele
substituiu a linguagem de consulta PostQuel com um subconjunto extendido do
se juntar 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
+ Para se juntar ao grupo, veja a FAQ do desenvolvedor
<A href="http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html">
http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html</A></P>
<P>PostgreSQL Sistema de Gerência de Banco de Dados</P>
- <P>Portions copyright (c) 1996-2004, PostgreSQL Global Development
+ <P>Portions copyright (c) 1996-2002, PostgreSQL Global Development
Group Portions Copyright (c) 1994-6 Regents of the University of
California</P>
<P>Permissão de uso, cópia, modificação
<H4><A name="1.3">1.3</A>) Quais plataformas Unix o PostgreSQL pode ser executado?</H4>
- <P>Em geral, qualquer plataforma moderna compatível com Unix deve ser capaz de executar o PostgreSQL. As plataformas que foram testadas antes do lançamento de uma versão são listadas nas instruções de instalação.</P>
+ <P>Em geral, uma plataforma moderna compatível com Unix deve ser capaz de executar o PostgreSQL. As plataformas que foram testadas antes do lançamento de uma versão são listadas nas instruções de instalação.</P>
<H4><A name="1.4">1.4</A>) Quais portabilidades não-Unix estão disponíveis?</H4>
<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.2.</P>
+ <P>A última versão do PostgreSQL é a versão 7.4.1.</P>
<P>Nós planejamos lançar versões novas a cada seis ou oito meses.</P>
href="http://sources.redhat.com/rhdb/">http://sources.redhat.com/rhdb/
</A>) 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/">
+ também o PHPPgAdmin (<A href="http://phppgadmin.sourceforge.net/">
http://phppgadmin.sourceforge.net/ </A>), uma interface web para
PostgreSQL.</P>
<H4><A name="3.5">3.5</A>) Como eu controlo conexões de outras máquinas?</H4>
- <P>Por padrão, o PostgreSQL só permite conexões da máquina local utilizando soquetes de domínio Unix. Outras máquinas não poderão conectar-se a menos que você habilite tcpip_sockets no postgresql.conf, <B>e</B> habilite a autenticação por máquina modificando o arquivo <I>$PGDATA/pg_hba.conf</I>. Isso irá permitir conexões TCP/IP.</P>
+ <P>Por padrão, o PostgreSQL só permite conexões da máquina local utilizando soquetes de domínio Unix. Outras máquinas não poderão conectar-se a menos que você adicione a opção <I>-i</I> no <I>postmaster</I>, <B>e</B> habilite a autenticação por máquina modificando o arquivo <I>$PGDATA/pg_hba.conf</I>. Isso irá permitir conexões TCP/IP.</P>
<H4><A name="3.6">3.6</A>) Como eu ajusto o servidor de banco de dados para obter uma performance melhor?</H4>
- <P>Certamente, índices podem acelerar consultas. O comando <SMALL>EXPLAIN ANALYZE</SMALL> permite que você veja como o PostgreSQL está interpretando a consulta, e quais os índices são utilizados.</P>
+ <P>Certamente, índices podem acelerar consultas. O comando <SMALL>EXPLAIN</SMALL> permite que você veja como o PostgreSQL está interpretando a consulta, e quais os índices são utilizados.</P>
<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>
<H4><A name="4.3">4.3</A>) Como eu obtenho a lista de tabelas ou outras coisas que eu posso ver no <I>psql</I>?</h4>
-<P>Utilize o comando \dt para ver tabelas no <I>psql</I>. Para obter uma lista completa de
-comandos no psql você pode utilizar \?. Alternativamente
-você pode ler o código-fonte do <I>psql</I> no arquivo <I>pgsql/src/bin/psql/describe.c</I>. Ele contém comandos <SMALL>SQL</SMALL> que geram a saída para os comandos do psql. Você também pode iniciar o <I>psql</I> com a opção <I>-E</I> então serão mostradas as consultas utilizadas para executar os comandos que você digitou. PostgreSQL também fornece uma interface para o INFORMATION SCHEMA <SMALL>SQLi</SMALL> na qual você pode consultar informações sobre o banco de dados.</P>
+<P>Você pode ler o código-fonte do <I>psql</I> no arquivo <I>pgsql/src/bin/psql/describe.c</I>. Ele contém comandos <SMALL>SQL</SMALL> que geram a saída para os comandos do psql. Você também pode iniciar o <I>psql</I> com a opção <I>-E</I> então serão mostradas as consultas utilizadas para executar os comandos que você digitou.</P>
<H4><A name="4.4">4.4</A>) Como eu removo uma coluna de uma tabela ou mudo o seu tipo de dados?</H4>
o <SMALL>OID</SMALL> de alguma coisa, ou se você quer fazer uma cópia da tabela,
com os <SMALL>OID</SMALL>s, não há razão para que você não possa fazê-la:</P>
<PRE>
- CREATE TABLE nova_tabela(minha_coluna int);
- SELECT oid as oid_antigo, minha_coluna INTO tabela_tmp FROM tabela_antiga;
- COPY tabela_tmp TO '/tmp/pgtable';
- DROP TABLE tabela_tmp;
+ CREATE TABLE nova_tabela(oid_antigo oid, minha_coluna int);
+ SELECT oid_antigo, minha_coluna INTO novo FROM tabela_antiga;
+ COPY novo TO '/tmp/pgtable';
+ DELETE FROM novo;
COPY nova_tabela WITH OIDS FROM '/tmp/pgtable';
</PRE>
+<!--
+ CREATE TABLE nova_tabela (minha_coluna int);
+ INSERT INTO nova_tabela (oid, minha_coluna) SELECT oid, minha_coluna FROM tabela_antiga;
+-->
<P><SMALL>OID</SMALL>s são armazenados como inteiros de 4 bytes, e
não ultrapassam 4 bilhões. Ninguém nunca reportou que isso tenha ocorrido,
e nós planejamos remover o limite antes que algúem o alcançe.</P>