mirror of
https://github.com/postgres/postgres.git
synced 2025-04-22 23:02:54 +03:00
Update Brazilian FAQ.
Euler Taveira de Oliveira
This commit is contained in:
parent
a3f208539c
commit
c5156c646b
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
Perguntas Frequentes (FAQ) sobre PostgreSQL
|
Perguntas Frequentes (FAQ) sobre PostgreSQL
|
||||||
|
|
||||||
Última atualização: Sáb Out 14 19:08:19 EDT 2006
|
Última atualização: Sex Nov 16 10:53:50 EST 2007
|
||||||
|
|
||||||
Mantenedor atual: Bruce Momjian (bruce@momjian.us)
|
Mantenedor atual: Bruce Momjian (bruce@momjian.us)
|
||||||
|
|
||||||
@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
Perguntas Gerais
|
Perguntas Gerais
|
||||||
|
|
||||||
1.1) O que é PostgreSQL? Como ele é pronunciado?
|
1.1) O que é PostgreSQL? Como ele é pronunciado? O que é Postgres?
|
||||||
1.2) Quem controla o PostgreSQL?
|
1.2) Quem controla o PostgreSQL?
|
||||||
1.3) Qual é a licença do PostgreSQL?
|
1.3) Qual é a licença do PostgreSQL?
|
||||||
1.4) Quais plataformas o PostgreSQL pode ser executado?
|
1.4) Quais plataformas o PostgreSQL pode ser executado?
|
||||||
@ -33,6 +33,8 @@
|
|||||||
1.12) Como posso submeter uma correção (patch) ou me juntar a equipe
|
1.12) Como posso submeter uma correção (patch) ou me juntar a equipe
|
||||||
de desenvolvimento?
|
de desenvolvimento?
|
||||||
1.13) Como é o PostgreSQL comparado a outros SGBDs?
|
1.13) Como é o PostgreSQL comparado a outros SGBDs?
|
||||||
|
1.14) O PostgreSQL gerenciará as mudanças de horário devido ao horário
|
||||||
|
de verão em vários países?
|
||||||
|
|
||||||
Perguntas sobre Clientes
|
Perguntas sobre Clientes
|
||||||
|
|
||||||
@ -51,8 +53,8 @@
|
|||||||
3.4) Quais características de depuração estão disponíveis?
|
3.4) Quais características de depuração estão disponíveis?
|
||||||
3.5) Por que eu recebo "Sorry, too many clients" quando eu tento
|
3.5) Por que eu recebo "Sorry, too many clients" quando eu tento
|
||||||
conectar?
|
conectar?
|
||||||
3.6) Qual é o processo de atualização do PostgreSQL? 3.7) Que tipo de
|
3.6) Qual é o processo de atualização do PostgreSQL?
|
||||||
hardware eu devo usar?
|
3.7) Que tipo de hardware eu devo usar?
|
||||||
|
|
||||||
Perguntas Operacionais
|
Perguntas Operacionais
|
||||||
|
|
||||||
@ -74,7 +76,8 @@
|
|||||||
expressões regulares sem diferenciar mauúsculas de minúsculas? Como eu
|
expressões regulares sem diferenciar mauúsculas de minúsculas? Como eu
|
||||||
utilizo um índice para buscas sem distinguir maiúsculas de minúsculas?
|
utilizo um índice para buscas sem distinguir maiúsculas de minúsculas?
|
||||||
4.9) Em uma consulta, como eu detecto se um campo é NULL? Como eu
|
4.9) Em uma consulta, como eu detecto se um campo é NULL? Como eu
|
||||||
posso ordenar por um campo que é NULL ou não?
|
posso concatenar possíveis NULLs? Como eu posso ordenar por um campo
|
||||||
|
que é NULL ou não?
|
||||||
4.10) Qual é a diferença entre os vários tipos de dado de caracteres?
|
4.10) Qual é a diferença entre os vários tipos de dado de caracteres?
|
||||||
4.11.1) Como eu crio um campo serial/auto incremento?
|
4.11.1) Como eu crio um campo serial/auto incremento?
|
||||||
4.11.2) Como eu consigo o valor de um campo SERIAL?
|
4.11.2) Como eu consigo o valor de um campo SERIAL?
|
||||||
@ -95,16 +98,16 @@
|
|||||||
exist" ao acessar tabelas temporárias em funções PL/PgSQL?
|
exist" ao acessar tabelas temporárias em funções PL/PgSQL?
|
||||||
4.20) Quais soluções de replicação estão disponíveis?
|
4.20) Quais soluções de replicação estão disponíveis?
|
||||||
4.21) Por que os nomes de minhas tabelas e colunas não são
|
4.21) Por que os nomes de minhas tabelas e colunas não são
|
||||||
reconhecidos em minha consulta?
|
reconhecidos em minha consulta? Por que as maiúsculas não são
|
||||||
|
preservadas?
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
Perguntas Gerais
|
Perguntas Gerais
|
||||||
|
|
||||||
1.1) O que é PostgreSQL? Como ele é pronunciado?
|
1.1) O que é PostgreSQL? Como ele é pronunciado? O que é Postgres?
|
||||||
|
|
||||||
PostgreSQL é pronunciado Post-Gres-Q-L, e é, às vezes, referido apenas
|
PostgreSQL é pronunciado Post-Gres-Q-L. (Para os curiosos que querem
|
||||||
como Postgres. Um arquivo de áudio está disponível em formato MP3 para
|
saber como se diz "PostgreSQL", um arquivo de áudio está disponível).
|
||||||
aqueles que gostariam de ouvir a pronúncia.
|
|
||||||
|
|
||||||
O PostgreSQL é um sistema de banco de dados objeto-relacional que tem
|
O PostgreSQL é um sistema de banco de dados objeto-relacional que tem
|
||||||
as características de sistemas de bancos de dados comerciais
|
as características de sistemas de bancos de dados comerciais
|
||||||
@ -116,8 +119,12 @@
|
|||||||
desenvolvedores voluntários (na sua maioria) espalhados pelo mundo e
|
desenvolvedores voluntários (na sua maioria) espalhados pelo mundo e
|
||||||
que se comunicam via Internet. É um projeto da comunidade e não é
|
que se comunicam via Internet. É um projeto da comunidade e não é
|
||||||
controlado por nenhuma empresa. Para se envolver, veja a FAQ do
|
controlado por nenhuma empresa. Para se envolver, veja a FAQ do
|
||||||
desenvolvedor em
|
desenvolvedor em http://www.postgresql.org/docs/faqs.FAQ_DEV.html
|
||||||
http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html
|
|
||||||
|
Postgres é um apelido para o PostgreSQL amplamente utilizado. Era o
|
||||||
|
nome original do projeto em Berkeley e dentre os outros apelidos é o
|
||||||
|
preferido. Se você acha 'PostgreSQL' difícil de pronunciar, diga
|
||||||
|
apenas 'Postgres'.
|
||||||
|
|
||||||
1.2) Quem controla o PostgreSQL?
|
1.2) Quem controla o PostgreSQL?
|
||||||
|
|
||||||
@ -189,11 +196,11 @@
|
|||||||
1.5) Onde eu posso conseguir o PostgreSQL?
|
1.5) Onde eu posso conseguir o PostgreSQL?
|
||||||
|
|
||||||
Via navegador web, utilize http://www.postgresql.org/ftp/ e via ftp,
|
Via navegador web, utilize http://www.postgresql.org/ftp/ e via ftp,
|
||||||
utilize ftp://ftp.PostgreSQL.org/pub/.
|
utilize ftp://ftp.postgresql.org/pub/.
|
||||||
|
|
||||||
1.6) Qual é a última versão?
|
1.6) Qual é a última versão?
|
||||||
|
|
||||||
A última versão do PostgreSQL é a versão 8.1.5.
|
A última versão do PostgreSQL é a versão 8.2.5.
|
||||||
|
|
||||||
Nós planejamos lançar versões novas a cada ano com versões corretivas
|
Nós planejamos lançar versões novas a cada ano com versões corretivas
|
||||||
em alguns meses.
|
em alguns meses.
|
||||||
@ -220,14 +227,14 @@
|
|||||||
Visite o formulário que reporta bugs do PostgreSQL em
|
Visite o formulário que reporta bugs do PostgreSQL em
|
||||||
http://www.postgresql.org/support/submitbug.
|
http://www.postgresql.org/support/submitbug.
|
||||||
|
|
||||||
Verifique também o nosso ftp ftp://ftp.PostgreSQL.org/pub para ver se
|
Verifique também o nosso ftp ftp://ftp.postgresql.org/pub para ver se
|
||||||
há uma versão mais recente do PostgreSQL.
|
há uma versão mais recente do PostgreSQL.
|
||||||
|
|
||||||
Bugs submetidos utilizando o formulário ou informado a qualquer lista
|
Bugs submetidos utilizando o formulário ou informado a qualquer lista
|
||||||
de discussão do PostgreSQL tipicamente gera uma das seguintes
|
de discussão do PostgreSQL tipicamente gera uma das seguintes
|
||||||
respostas:
|
respostas:
|
||||||
* Não é um bug e o porquê
|
* Não é um bug e o porquê
|
||||||
* É um bug conhecido e já está na lista de AFAZERES (TODO)
|
* É um bug conhecido e já está na lista de AFAZERES
|
||||||
* O bug foi corrigido na versão atual
|
* O bug foi corrigido na versão atual
|
||||||
* O bug foi corrigido mas não foi empacotado em um versão oficial
|
* O bug foi corrigido mas não foi empacotado em um versão oficial
|
||||||
* Um pedido foi feito para obter informações detalhadas:
|
* Um pedido foi feito para obter informações detalhadas:
|
||||||
@ -239,48 +246,50 @@
|
|||||||
* O bug é novo. O seguinte pode ocorrer:
|
* O bug é novo. O seguinte pode ocorrer:
|
||||||
+ Uma correção é criada e será incluída na próxima versão
|
+ Uma correção é criada e será incluída na próxima versão
|
||||||
+ O bug não pode ser corrigido imediatamente e é adicionado a
|
+ O bug não pode ser corrigido imediatamente e é adicionado a
|
||||||
lista de AFAZERES (TODO)
|
lista de AFAZERES
|
||||||
|
|
||||||
1.9) Como eu posso saber quais são os bugs conhecidos ou funcionalidades
|
1.9) Como eu posso saber quais são os bugs conhecidos ou funcionalidades
|
||||||
ausentes?
|
ausentes?
|
||||||
|
|
||||||
O PostgreSQL suporta um subconjunto extendido do SQL:2003. Veja nossa
|
O PostgreSQL suporta um subconjunto extendido do SQL:2003. Veja nossa
|
||||||
lista de AFAZERES (TODO) que contém bugs conhecidos, funcionalidades
|
lista de AFAZERES que contém bugs conhecidos, funcionalidades ausentes
|
||||||
ausentes e planos futuros.
|
e planos futuros.
|
||||||
|
|
||||||
Uma solicitação de funcionalidade geralmente resulta em uma das
|
Uma solicitação de funcionalidade geralmente resulta em uma das
|
||||||
seguintes respostas:
|
seguintes respostas:
|
||||||
* A funcionalidade já está na lista de AFAZERES (TODO)
|
* A funcionalidade já está na lista de AFAZERES
|
||||||
* A funcionalidade não é desejável porque:
|
* A funcionalidade não é desejável porque:
|
||||||
+ Ela duplica uma funcionalidade existente que já segue o
|
+ Ela duplica uma funcionalidade existente que já segue o
|
||||||
padrão SQL
|
padrão SQL
|
||||||
+ A funcionalidade aumentará a complexidade do código mas
|
+ A funcionalidade aumentará a complexidade do código mas
|
||||||
adicionará pouco benefício
|
adicionará pouco benefício
|
||||||
+ A funcionalidade será insegura ou não-confiável
|
+ A funcionalidade será insegura ou não-confiável
|
||||||
* A nova funcionalidade é adicionada a lista de AFAZERES (TODO)
|
* A nova funcionalidade é adicionada a lista de AFAZERES
|
||||||
|
|
||||||
O PostgreSQL não utiliza sistema de acompanhamento de bugs porque nós
|
O PostgreSQL não utiliza sistema de acompanhamento de bugs porque nós
|
||||||
achamos mais eficiente responder diretamente o e-mail e manter a lista
|
achamos mais eficiente responder diretamente o e-mail e manter a lista
|
||||||
de AFAZERES (TODO) atualizada. Na prática, bugs não duram muito no
|
de AFAZERES atualizada. Na prática, bugs não duram muito no programa;
|
||||||
programa; e bugs que afetam uma grande quantidade de usuários são
|
e bugs que afetam uma grande quantidade de usuários são corrigidos
|
||||||
corrigidos rapidamente. O único lugar para encontrar todas as
|
rapidamente. O único lugar para encontrar todas as mudanças, melhorias
|
||||||
mudanças, melhorias e correções em uma versão do PostgreSQL é ler as
|
e correções em uma versão do PostgreSQL é ler as mensagens de log do
|
||||||
mensagens de log do CVS. Até mesmo as notas de lançamento não listam
|
CVS. Até mesmo as notas de lançamento não listam todas as mudanças
|
||||||
todas as mudanças feitas no programa.
|
feitas no programa.
|
||||||
|
|
||||||
1.10) Que documentação está disponível?
|
1.10) Que documentação está disponível?
|
||||||
|
|
||||||
O PostgreSQL inclui vasta documentação, incluindo um manual extenso,
|
O PostgreSQL inclui vasta documentação, incluindo um manual extenso,
|
||||||
páginas de manuais (man pages) e alguns exemplos teste. Veja o
|
páginas de manuais (man pages) e alguns exemplos teste. Veja o
|
||||||
diretório /doc. Você também pode pesquisar os manuais online em
|
diretório /doc. Você também pode pesquisar os manuais online em
|
||||||
http://www.PostgreSQL.org/docs.
|
http://www.postgresql.org/docs.
|
||||||
|
|
||||||
Há dois livros sobre PostgreSQL disponíveis online em
|
Há dois livros sobre PostgreSQL disponíveis online em
|
||||||
http://www.postgresql.org/docs/books/awbook.html e
|
http://www.postgresql.org/docs/books/awbook.html e
|
||||||
http://www.commandprompt.com/ppbook/. Há uma lista de livros sobre
|
http://www.commandprompt.com/ppbook/. Há uma lista de livros sobre
|
||||||
PostgreSQL disponíveis para compra. Um dos mais populares é o do Korry
|
PostgreSQL disponíveis para compra. Um dos mais populares é o do Korry
|
||||||
Douglas. Uma lista de análise sobre os livros pode ser encontrada em
|
Douglas. Uma lista de análise sobre os livros pode ser encontrada em
|
||||||
http://techdocs.PostgreSQL.org/techdocs/bookreviews.php.
|
http://www.postgresql.org/docs/books/. Há também uma coleção de
|
||||||
|
artigos técnicos sbore PostgreSQL em
|
||||||
|
http://www.postgresql.org/docs/techdocs/.
|
||||||
|
|
||||||
O programa cliente de linha de comando psql tem alguns comandos \d
|
O programa cliente de linha de comando psql tem alguns comandos \d
|
||||||
para mostrar informações sobre tipos, operadores, funções, agregações,
|
para mostrar informações sobre tipos, operadores, funções, agregações,
|
||||||
@ -291,11 +300,9 @@
|
|||||||
1.11) Como eu posso aprender SQL?
|
1.11) Como eu posso aprender SQL?
|
||||||
|
|
||||||
Primeiro, considere os livros específicos sobre PostgreSQL mencionados
|
Primeiro, considere os livros específicos sobre PostgreSQL mencionados
|
||||||
acima. Outro é o "Teach Yourself SQL in 21 Days, Second Edition" e
|
acima. Muitos de nossos usuários gostam do The Practical SQL Handbook,
|
||||||
http://members.tripod.com/er4ebus/sql/index.htm. Muitos de nossos
|
Bowman, Judith S., et al., Addison-Wesley. Outros do The Complete
|
||||||
usuários gostam do The Practical SQL Handbook, Bowman, Judith S., et
|
Reference SQL, Groff et al., McGraw-Hill.
|
||||||
al., Addison-Wesley. Outros do The Complete Reference SQL, Groff et
|
|
||||||
al., McGraw-Hill.
|
|
||||||
|
|
||||||
Há também bons tutoriais disponíveis online:
|
Há também bons tutoriais disponíveis online:
|
||||||
* http://www.intermedia.net/support/sql/sqltut.shtm
|
* http://www.intermedia.net/support/sql/sqltut.shtm
|
||||||
@ -347,13 +354,23 @@
|
|||||||
manuais e o código fonte faz com que o suporte do PostgreSQL
|
manuais e o código fonte faz com que o suporte do PostgreSQL
|
||||||
seja superior ao de outros SGBDs. Há suporte comercial por
|
seja superior ao de outros SGBDs. Há suporte comercial por
|
||||||
incidente disponíveis para aqueles que precisam de um. (Veja
|
incidente disponíveis para aqueles que precisam de um. (Veja
|
||||||
seção 1.7 da FAQ.)
|
seção 1.7 da FAQ).
|
||||||
|
|
||||||
Preço
|
Preço
|
||||||
Nós somos livres para uso dele tanto comercial quanto não
|
Nós somos livres para uso dele tanto comercial quanto não
|
||||||
comercial. Você pode adicionar nosso código ao seu produto sem
|
comercial. Você pode adicionar nosso código ao seu produto sem
|
||||||
limitações, exceto aquelas descritas na nossa licença BSD
|
limitações, exceto aquelas descritas na nossa licença BSD
|
||||||
mencionada acima.
|
mencionada acima.
|
||||||
|
|
||||||
|
1.14) O PostgreSQL gerenciará mudanças no horário devido ao horário de verão
|
||||||
|
em vários países?
|
||||||
|
|
||||||
|
Mudanças no horário de verão dos USA foram incluídas nas versões 8.0
|
||||||
|
.[4+] do PostgreSQL e em todas as versões grandes, i.e. 8.1. Mudanças
|
||||||
|
no Canadá e Austrália Oeste foram incluídas na 8.0.[10+], 8.1.[6+] e
|
||||||
|
em todas as versões grandes subsequentes. Versões do PostgreSQL
|
||||||
|
anteriores a 8.0 utilizam o banco de dados de zona horária do sistema
|
||||||
|
operacional para informações sobre horário de verão.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
Perguntas sobre Clientes
|
Perguntas sobre Clientes
|
||||||
@ -367,8 +384,7 @@
|
|||||||
|
|
||||||
Algumas linguagens de programação como PHP incluem uma interface para
|
Algumas linguagens de programação como PHP incluem uma interface para
|
||||||
PostgreSQL. Interfaces para linguagens como Perl, TCL, Python e muitas
|
PostgreSQL. Interfaces para linguagens como Perl, TCL, Python e muitas
|
||||||
outras estão disponíveis em http://gborg.postgresql.org na seção de
|
outras estão disponíveis em http://www.pgfoundry.org.
|
||||||
Drivers/Interfaces ou via busca na Internet.
|
|
||||||
|
|
||||||
2.2) Quais ferramentas estão disponíveis para utilizar o PostgreSQL com
|
2.2) Quais ferramentas estão disponíveis para utilizar o PostgreSQL com
|
||||||
páginas Web?
|
páginas Web?
|
||||||
@ -450,29 +466,17 @@
|
|||||||
|
|
||||||
3.5) Por que eu recebo "Sorry, too many clients" quando eu tento conectar?
|
3.5) Por que eu recebo "Sorry, too many clients" quando eu tento conectar?
|
||||||
|
|
||||||
Você atingiu o limite padrão que é de 100 sessões. Você precisa
|
Você atingiu o limite padrão de 100 sessões. Você precisa aumentar o
|
||||||
aumentar o limite do postmaster, que diz quantos processos servidor
|
limite do servidor PostgreSQL, que diz quantos processos servidor
|
||||||
concorrentes ele pode iniciar, alterando o valor max_connections no
|
concorrentes ele pode iniciar, alterando o valor max_connections no
|
||||||
postgresql.conf e reiniciando o postmaster.
|
postgresql.conf e reiniciando o postmaster.
|
||||||
|
|
||||||
3.6) Qual é o processo de atualização do PostgreSQL?
|
3.6) Qual é o processo de atualização do PostgreSQL?
|
||||||
|
|
||||||
O time do PostgreSQL faz somente pequenas mudanças entre versões
|
Veja http://www.postgresql.org/support/versioning para discussão geral
|
||||||
corretivas, então atualizar da versão 7.4.8 para 7.4.9 não requer uma
|
sobre atualizações e
|
||||||
exportação e uma importação; basta para o servidor de banco de dados,
|
http://www.postgresql.org/docs/current/static/install-upgrading.html
|
||||||
instalar os binários atualizados e reiniciar o servidor.
|
para instruções específicas.
|
||||||
|
|
||||||
Todos os usuários devem atualizar para as versões corretivas mais
|
|
||||||
recentes assim que elas estiverem disponíveis. Enquanto cada
|
|
||||||
atualização tem algum risco, versões corretivas do PostgreSQL são
|
|
||||||
projetadas para corrigir somente bugs comuns com um risco mínimo. A
|
|
||||||
comunidade considera não atualizar mais perigoso do que atualizar.
|
|
||||||
|
|
||||||
Versõ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ças
|
|
||||||
geralmente são complexas, então nós não mantemos compatibilidade para
|
|
||||||
os arquivos de dados. Uma exportação/importação de um banco de dados é
|
|
||||||
necessária para atualizações entre versões.
|
|
||||||
|
|
||||||
3.7) Que tipo de hardware eu devo usar?
|
3.7) Que tipo de hardware eu devo usar?
|
||||||
|
|
||||||
@ -585,24 +589,24 @@
|
|||||||
inteiro e uma descrição em cada linha. Suponha que o tamanho médio da
|
inteiro e uma descrição em cada linha. Suponha que o tamanho médio da
|
||||||
descrição é de vinte bytes. O arquivo terá 2,8 MB. O tamanho do
|
descrição é de vinte bytes. O arquivo terá 2,8 MB. O tamanho do
|
||||||
arquivo do banco de dados PostgreSQL que contém esses dados pode ser
|
arquivo do banco de dados PostgreSQL que contém esses dados pode ser
|
||||||
estimado em 5,6 MB:
|
estimado em 5,2 MB:
|
||||||
28 bytes: cada cabeçalho de registro (aproximadamente)
|
24 bytes: cada cabeçalho de registro (aproximadamente)
|
||||||
24 bytes: um campo int e um campo texto
|
24 bytes: um campo int e um campo texto
|
||||||
+ 4 bytes: ponteiro na página para a tupla
|
+ 4 bytes: ponteiro na página para a tupla
|
||||||
-------------------------------------------
|
-------------------------------------------
|
||||||
56 bytes por registro
|
52 bytes por registro
|
||||||
|
|
||||||
O tamanho de uma página de dados no PostgreSQL é 8192 bytes (8 KB), então:
|
O tamanho de uma página de dados no PostgreSQL é 8192 bytes (8 KB), então:
|
||||||
|
|
||||||
8192 bytes por página
|
8192 bytes por página
|
||||||
------------------------ = 146 registros por página do banco de dados (arredondado para baixo)
|
------------------------ = 158 registros por página do banco de dados (arredondado para baixo)
|
||||||
56 bytes por registro
|
52 bytes por registro
|
||||||
|
|
||||||
100000 registros de dados
|
100000 registros de dados
|
||||||
---------------------------- = 685 páginas do banco de dados (arredondadopara cima)
|
---------------------------- = 633 páginas do banco de dados (arredondadopara cima)
|
||||||
146 registros por página
|
158 registros por página
|
||||||
|
|
||||||
685 páginas do banco de dados * 8192 bytes por página = 5.611.520 bytes (5,6MB)
|
633 páginas do banco de dados * 8192 bytes por página = 5.185.536 bytes (5,2MB)
|
||||||
|
|
||||||
Índices não requerem muito espaço, mas contém dados que foram
|
Índices não requerem muito espaço, mas contém dados que foram
|
||||||
indexados, então eles podem ocupar algum espaço.
|
indexados, então eles podem ocupar algum espaço.
|
||||||
@ -650,10 +654,12 @@
|
|||||||
* Busca que não diferenciam maiúsculas de minúsculas tais como ILIKE
|
* Busca que não diferenciam maiúsculas de minúsculas tais como ILIKE
|
||||||
e ~* não utilizam índices. Em vez disso, utilize índice de
|
e ~* não utilizam índices. Em vez disso, utilize índice de
|
||||||
expressão, que é descrito na seção 4.8.
|
expressão, que é descrito na seção 4.8.
|
||||||
* O idioma padrção C deve ser usando durante o initdb porque não é
|
* O idioma padrão C deve ser usando durante o initdb porque não é
|
||||||
possível saber o próximo caracter em idiomas que não sejam o C.
|
possível saber o próximo caracter em idiomas que não sejam o C.
|
||||||
Você pode criar um índice especial text_pattern_ops para tais
|
Você pode criar um índice especial text_pattern_ops para tais
|
||||||
casos que funcionam somente para indexação com LIKE.
|
casos que funcionam somente para indexação com LIKE. Também é
|
||||||
|
possível utilizar indexação de busca textual para buscas por
|
||||||
|
palavras.
|
||||||
|
|
||||||
Em versões anteriores a 8.0, índices frequentemente não podem ser
|
Em versões anteriores a 8.0, índices frequentemente não podem ser
|
||||||
utilizados a menos que os tipos de dados correspondam aos tipos de
|
utilizados a menos que os tipos de dados correspondam aos tipos de
|
||||||
@ -690,13 +696,18 @@
|
|||||||
utilize uma restrição CHECK ou um gatilho.
|
utilize uma restrição CHECK ou um gatilho.
|
||||||
|
|
||||||
4.9) Em uma consulta, como eu detecto se um campo é NULL? Como eu posso
|
4.9) Em uma consulta, como eu detecto se um campo é NULL? Como eu posso
|
||||||
ordenar por um campo que é NULL ou não?
|
concatenar possíveis NULLs? Como eu posso ordenar por um campo que é NULL ou
|
||||||
|
não?
|
||||||
|
|
||||||
Você testa a coluna com IS NULL e IS NOT NULL, como a seguir:
|
Você testa a coluna com IS NULL e IS NOT NULL, como a seguir:
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM tab
|
FROM tab
|
||||||
WHERE col IS NULL;
|
WHERE col IS NULL;
|
||||||
|
|
||||||
|
Para concatenar com possíveis NULLs, utilize COALESCE(), assim:
|
||||||
|
SELECT COALESCE(col1, '') || COALESCE(col2, '')
|
||||||
|
FROM tab
|
||||||
|
|
||||||
Para ordenar pelo status NULL, utilize os modificadores IS NULL e IS
|
Para ordenar pelo status NULL, utilize os modificadores IS NULL e IS
|
||||||
NOT NULL na sua cláusula ORDER BY. Coisas que são verdadeiro serão
|
NOT NULL na sua cláusula ORDER BY. Coisas que são verdadeiro serão
|
||||||
ordenadas acima das coisas que são falso, então a consulta a seguir
|
ordenadas acima das coisas que são falso, então a consulta a seguir
|
||||||
@ -754,28 +765,21 @@
|
|||||||
nome TEXT
|
nome TEXT
|
||||||
);
|
);
|
||||||
|
|
||||||
Veja a página sobre create_sequence no manual para obter informações
|
Sequências automaticamente criadas são nomeadas como
|
||||||
adicionais sobre sequências.
|
<tabela>_<colunaserial>_seq, onde tabela e colunaserial são os nomes
|
||||||
|
da tabela e da coluna serial, respectivamente. Veja a página sobre
|
||||||
|
create_sequence no manual para obter informações adicionais sobre
|
||||||
|
sequências.
|
||||||
|
|
||||||
4.11.2) Como eu consigo o valor de um campo SERIAL?
|
4.11.2) Como eu consigo o valor de um campo SERIAL?
|
||||||
|
|
||||||
Uma abordagem é obter o próximo valor SERIAL de uma sequência com a
|
A maneira mais simples de obter o próximo valor SERIAL de uma
|
||||||
função nextval() antes de inserir e então inserir com o valor
|
sequência é com RETURNING. Utilizando o exemplo da tabela em 4.11.1,
|
||||||
explicitamente. Utilizando o exemplo da tabela em 4.11.1, um exemplo
|
ele ficaria assim:
|
||||||
em pseudo-linguagem se pareceria com isto:
|
INSERT INTO pessoa (nome) VALUES ('Blaise Pascal') RETURNING id;
|
||||||
novo_id = execute("SELECT nextval('pessoa_id_seq')");
|
|
||||||
execute("INSERT INTO pessoa (id, nome) VALUES (novo_id, 'Blaise Pascal')");
|
|
||||||
|
|
||||||
Você poderia então ter também o novo valor armazenado em novo_id para
|
Você também pode chamar nextval() e utilizar o valor no INSERT ou
|
||||||
utilizar em outras consultas (i.e., como uma chave estrangeira da
|
chamar currval() após o INSERT.
|
||||||
tabela pessoa). Note que o nome da SEQUENCE criada automaticamente
|
|
||||||
será <tabela>_<coluna>_seq, onde tabela e coluna são os nomes da
|
|
||||||
tabela e da coluna SERIAL, respectivamente.
|
|
||||||
|
|
||||||
Alternativamente, você poderia obter o valor SERIAL atribuído com a
|
|
||||||
função currval() depois de tê-lo inserido por padrão, i.e.,
|
|
||||||
execute("INSERT INTO pessoa (nome) VALUES ('Blaise Pascal')");
|
|
||||||
novo_id = execute("SELECT currval('pessoa_id_seq')");
|
|
||||||
|
|
||||||
4.11.3) currval() não lida com condição de corrida com outros usuários?
|
4.11.3) currval() não lida com condição de corrida com outros usuários?
|
||||||
|
|
||||||
@ -791,14 +795,13 @@
|
|||||||
finalizada. Isso causa intervalos na numeração por causa de transações
|
finalizada. Isso causa intervalos na numeração por causa de transações
|
||||||
abortadas.
|
abortadas.
|
||||||
|
|
||||||
4.16) O que é um OID? O que é um CTID?
|
4.12) O que é um OID? O que é um CTID?
|
||||||
|
|
||||||
Cada registro que é criado no PostgreSQL recebe um OID único a menos
|
Se uma tabela é criada com WITH OIDS, cada registro recebe um OID
|
||||||
que seja criado com WITHOUT OIDS. OIDs são automaticamente atribuídos
|
único. OIDs são automaticamente atribuídos como inteiros de 4 bytes
|
||||||
como inteiros de 4 bytes que são únicos ao longo de toda instalação.
|
que são únicos ao longo de toda instalação. Contudo, eles são
|
||||||
Contudo, eles são limitados em 4 bilhões, e então os OIDs começam a
|
limitados em 4 bilhões e, então, os OIDs começam a ser duplicados. O
|
||||||
ser duplicados. O PostgreSQL utiliza OIDs para ligar as tabelas do
|
PostgreSQL utiliza OIDs para ligar as tabelas do sistema.
|
||||||
sistema.
|
|
||||||
|
|
||||||
Para numerar registros nas tabelas do usuários, é melhor utilizar
|
Para numerar registros nas tabelas do usuários, é melhor utilizar
|
||||||
SERIAL ao invés de OIDs porque sequências SERIAL são únicas somente em
|
SERIAL ao invés de OIDs porque sequências SERIAL são únicas somente em
|
||||||
@ -814,7 +817,7 @@
|
|||||||
|
|
||||||
Você provavelmente está sem memória virtual no seu sistema, ou o seu
|
Você provavelmente está sem memória virtual no seu sistema, ou o seu
|
||||||
núcleo (kernel) tem um limite baixo para certos recursos. Tente isto
|
núcleo (kernel) tem um limite baixo para certos recursos. Tente isto
|
||||||
antes de iniciar o postmaster:
|
antes de iniciar o servidor PostgreSQL:
|
||||||
ulimit -d 262144
|
ulimit -d 262144
|
||||||
limit datasize 256m
|
limit datasize 256m
|
||||||
|
|
||||||
@ -834,7 +837,7 @@
|
|||||||
Utilize CURRENT_TIMESTAMP:
|
Utilize CURRENT_TIMESTAMP:
|
||||||
CREATE TABLE teste (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP);
|
CREATE TABLE teste (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP);
|
||||||
|
|
||||||
4.23) Como eu faço uma junção externa (outer join)?
|
4.16) Como eu faço uma junção externa (outer join)?
|
||||||
|
|
||||||
PostgreSQL suporta junções externas utilizando a sintaxe padrão do
|
PostgreSQL suporta junções externas utilizando a sintaxe padrão do
|
||||||
SQL. Aqui temos dois exemplos:
|
SQL. Aqui temos dois exemplos:
|
||||||
@ -852,7 +855,7 @@
|
|||||||
retornaria os registros combinados mais todos os registros não
|
retornaria os registros combinados mais todos os registros não
|
||||||
combinados de t1 e t2. A palavra OUTER é opcional e é assumida nas
|
combinados de t1 e t2. A palavra OUTER é opcional e é assumida nas
|
||||||
junções LEFT, RIGHT e FULL. Junções ordinárias são chamadas junções
|
junções LEFT, RIGHT e FULL. Junções ordinárias são chamadas junções
|
||||||
naturais (INNER).
|
internas (INNER).
|
||||||
|
|
||||||
4.17) Como eu faço consultas utilizando múltiplos bancos de dados?
|
4.17) Como eu faço consultas utilizando múltiplos bancos de dados?
|
||||||
|
|
||||||
@ -869,18 +872,20 @@
|
|||||||
4.18) Como eu retorno múltiplos registros ou colunas de uma função?
|
4.18) Como eu retorno múltiplos registros ou colunas de uma função?
|
||||||
|
|
||||||
É fácil utilizando funções que retornam conjunto,
|
É fácil utilizando funções que retornam conjunto,
|
||||||
http://techdocs.postgresql.org/guides/SetReturningFunctions.
|
http://www.postgresql.org/docs/techdocs.17.
|
||||||
|
|
||||||
4.19) Por que eu obtenho erros "relation with OID ###### does not exist" ao
|
4.19) Por que eu obtenho erros "relation with OID ###### does not exist" ao
|
||||||
acessar tabelas temporárias em funções PL/PgSQL?
|
acessar tabelas temporárias em funções PL/PgSQL?
|
||||||
|
|
||||||
PL/PgSQL armazena o conteúdo da função, e o efeito indesejado é que se
|
Em versões do PostgreSQL < 8.3, PL/PgSQL armazena o conteúdo da
|
||||||
uma função PL/PgSQL acessa uma tabela temporária, e aquela tabela é
|
função, e o efeito indesejado é que se uma função PL/PgSQL acessa uma
|
||||||
removida e criada novamente, e a função é chamada novamente, a função
|
tabela temporária, e aquela tabela é removida e criada novamente, e a
|
||||||
irá falhar porque o conteúdo armazenado da função ainda apontará para
|
função é chamada novamente, a função irá falhar porque o conteúdo
|
||||||
a tabela temporária antiga. A solução é utilizar o EXECUTE para acesso
|
armazenado da função ainda apontará para a tabela temporária antiga. A
|
||||||
a tabelas temporárias no PL/PgSQL. Isto irá fazer com que a consulta
|
solução é utilizar o EXECUTE para acesso a tabelas temporárias no
|
||||||
seja avaliada toda vez.
|
PL/PgSQL. Isto irá fazer com que a consulta seja avaliada toda vez.
|
||||||
|
|
||||||
|
Este problema não ocorre no PostgreSQL 8.3 ou superior.
|
||||||
|
|
||||||
4.20) Quais soluções de replicação estão disponíveis?
|
4.20) Quais soluções de replicação estão disponíveis?
|
||||||
|
|
||||||
@ -895,22 +900,23 @@
|
|||||||
Replicação com múltiplos mestres permite que consultas leitura/escrita
|
Replicação com múltiplos mestres permite que consultas leitura/escrita
|
||||||
sejam enviadas para múltiplos computadores replicadores. Esta
|
sejam enviadas para múltiplos computadores replicadores. Esta
|
||||||
capacidade também tem um sério impacto na performance por causa da
|
capacidade também tem um sério impacto na performance por causa da
|
||||||
necessidade de sincronizar as mudanças entre os servidores. Pgcluster
|
necessidade de sincronizar as mudanças entre os servidores. PGCluster
|
||||||
é a solução mais popular disponível livremente para PostgreSQL.
|
é a solução mais popular disponível livremente para PostgreSQL.
|
||||||
|
|
||||||
Há também soluções de replicação comerciais e baseadas em hardware
|
Há também soluções de replicação comerciais e baseadas em hardware
|
||||||
disponíveis que suportam uma variedade de modelos de replicação.
|
disponíveis que suportam uma variedade de modelos de replicação.
|
||||||
|
|
||||||
4.21) Por que os nomes de minhas tabelas e colunas não são reconhecidos em
|
4.21) Por que os nomes de minhas tabelas e colunas não são reconhecidos em
|
||||||
minha consulta?
|
minha consulta? Por que as maiúsculas não são preservadas?
|
||||||
|
|
||||||
O caso mais comum é o uso de aspas ao redor dos nomes da tabela ou
|
A causa mais comum de nomes desconhecidos é o uso de aspas ao redor
|
||||||
coluna durante a criação da tabela. Ao utilizar aspas, nomes de tabela
|
dos nomes da tabela ou coluna durante a criação da tabela. Ao utilizar
|
||||||
e coluna (chamados de identificadores) são armazenados como
|
aspas, nomes de tabela e coluna (chamados de identificadores) são
|
||||||
especificado, significando que você deve utilizar aspas quando se
|
armazenados como especificado, significando que você deve utilizar
|
||||||
referir aos nomes na consulta. Algumas interfaces, como pgAdmin,
|
aspas quando se referir aos nomes na consulta. Algumas interfaces,
|
||||||
automaticamente coloca aspas nos identificadores durante a criação da
|
como pgAdmin, automaticamente colocam aspas nos identificadores
|
||||||
tabela. Então, para identificadores serem reconhecidos, você deve:
|
durante a criação da tabela. Então, para identificadores serem
|
||||||
|
reconhecidos, você deve:
|
||||||
* Evitar colocar aspas no identificador ao criar tabelas
|
* Evitar colocar aspas no identificador ao criar tabelas
|
||||||
* Utilizar somente caracteres minúsculos em identificadores
|
* Utilizar somente caracteres minúsculos em identificadores
|
||||||
* Colocar aspas em identificadores ao referenciá-los nas consultas
|
* Colocar aspas em identificadores ao referenciá-los nas consultas
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
alink="#0000ff">
|
alink="#0000ff">
|
||||||
<H1>Perguntas Frequentes (FAQ) sobre PostgreSQL</H1>
|
<H1>Perguntas Frequentes (FAQ) sobre PostgreSQL</H1>
|
||||||
|
|
||||||
<P>Última atualização: Qui Set 27 02:14:24 EDT 2007</P>
|
<P>Última atualização: Sex Nov 16 10:53:50 EST 2007</P>
|
||||||
|
|
||||||
<P>Mantenedor atual: Bruce Momjian (<A href=
|
<P>Mantenedor atual: Bruce Momjian (<A href=
|
||||||
"mailto:bruce@momjian.us">bruce@momjian.us</A>)
|
"mailto:bruce@momjian.us">bruce@momjian.us</A>)
|
||||||
@ -30,7 +30,8 @@
|
|||||||
<HR>
|
<HR>
|
||||||
|
|
||||||
<H2 align="center">Perguntas Gerais</H2>
|
<H2 align="center">Perguntas Gerais</H2>
|
||||||
<A href="#item1.1">1.1</A>) O que é PostgreSQL? Como ele é pronunciado?<BR>
|
<A href="#item1.1">1.1</A>) O que é PostgreSQL? Como ele é pronunciado?
|
||||||
|
O que é Postgres?<BR>
|
||||||
<A href="#item1.2">1.2</A>) Quem controla o PostgreSQL?<BR>
|
<A href="#item1.2">1.2</A>) Quem controla o PostgreSQL?<BR>
|
||||||
<A href="#item1.3">1.3</A>) Qual é a licença do PostgreSQL?<BR>
|
<A href="#item1.3">1.3</A>) Qual é a licença do PostgreSQL?<BR>
|
||||||
<A href="#item1.4">1.4</A>) Quais plataformas o PostgreSQL pode ser executado?<BR>
|
<A href="#item1.4">1.4</A>) Quais plataformas o PostgreSQL pode ser executado?<BR>
|
||||||
@ -96,9 +97,9 @@
|
|||||||
|
|
||||||
<H2 align="center">Perguntas Gerais</H2>
|
<H2 align="center">Perguntas Gerais</H2>
|
||||||
|
|
||||||
<H3 id="item1.1">1.1) O que é PostgreSQL? Como ele é pronunciado?</H3>
|
<H3 id="item1.1">1.1) O que é PostgreSQL? Como ele é pronunciado? O que é Postgres?</H3>
|
||||||
|
|
||||||
<P>PostgreSQL é pronunciado <I>Post-Gres-Q-L</I>, mas também pode ser referido apenas como <I>Postgres</I> principalmente em conversações.
|
<P>PostgreSQL é pronunciado <I>Post-Gres-Q-L</I>.
|
||||||
(Para os curiosos que querem saber como se diz "PostgreSQL", um
|
(Para os curiosos que querem saber como se diz "PostgreSQL", um
|
||||||
<a href="http://www.postgresql.org/files/postgresql.mp3">arquivo de áudio</a> está disponível).</P>
|
<a href="http://www.postgresql.org/files/postgresql.mp3">arquivo de áudio</a> está disponível).</P>
|
||||||
|
|
||||||
@ -111,10 +112,14 @@
|
|||||||
voluntários (na sua maioria) espalhados pelo mundo e que se comunicam via
|
voluntários (na sua maioria) espalhados pelo mundo e que se comunicam via
|
||||||
Internet. É um projeto da comunidade e não é controlado por nenhuma
|
Internet. É um projeto da comunidade e não é controlado por nenhuma
|
||||||
empresa. Para se envolver, veja a FAQ do desenvolvedor em <A href=
|
empresa. Para se envolver, veja a FAQ do desenvolvedor em <A href=
|
||||||
"http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html">
|
"http://www.postgresql.org/docs/faqs.FAQ_DEV.html">
|
||||||
http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html</A>
|
http://www.postgresql.org/docs/faqs.FAQ_DEV.html</A>
|
||||||
</P>
|
</P>
|
||||||
|
|
||||||
|
<P>Postgres é um apelido para o PostgreSQL amplamente utilizado. Era o nome original do
|
||||||
|
projeto em Berkeley e dentre os outros apelidos é o preferido. Se você acha
|
||||||
|
'PostgreSQL' difícil de pronunciar, diga apenas 'Postgres'.</P>
|
||||||
|
|
||||||
<H3 id="item1.2">1.2) Quem controla o PostgreSQL?<BR></H3>
|
<H3 id="item1.2">1.2) Quem controla o PostgreSQL?<BR></H3>
|
||||||
|
|
||||||
<P>Se você está procurando por um mantenedor, comitê central ou empresa
|
<P>Se você está procurando por um mantenedor, comitê central ou empresa
|
||||||
@ -125,7 +130,7 @@
|
|||||||
você precisa é se inscrever nas listas de discussão e participar das
|
você precisa é se inscrever nas listas de discussão e participar das
|
||||||
discussões. Veja a <a href="http://www.postgresql.org/docs/faqs.FAQ_DEV.html">
|
discussões. Veja a <a href="http://www.postgresql.org/docs/faqs.FAQ_DEV.html">
|
||||||
FAQ do desenvolvedor</A> para obter informações como se envolver com o
|
FAQ do desenvolvedor</A> para obter informações como se envolver com o
|
||||||
desenvolvimento do Postgres.</P>
|
desenvolvimento do PostgreSQL.</P>
|
||||||
|
|
||||||
<H3 id="item1.3">1.3) Qual é a licença do PostgreSQL?</H3>
|
<H3 id="item1.3">1.3) Qual é a licença do PostgreSQL?</H3>
|
||||||
|
|
||||||
@ -169,7 +174,7 @@
|
|||||||
baseados no NT tais como Win200 SP4, WinXP e Win2003. Um instalador pré-empacotado está
|
baseados no NT tais como Win200 SP4, WinXP e Win2003. Um instalador pré-empacotado está
|
||||||
disponível em <a href= "http://pgfoundry.org/projects/pginstaller">
|
disponível em <a href= "http://pgfoundry.org/projects/pginstaller">
|
||||||
http://pgfoundry.org/projects/pginstaller</a>. Versões do Windows baseadas no MS-DOS
|
http://pgfoundry.org/projects/pginstaller</a>. Versões do Windows baseadas no MS-DOS
|
||||||
(Win95, Win98, WinMe) podem executar o Postgres utilizando o Cygwin.</P>
|
(Win95, Win98, WinMe) podem executar o PostgreSQL utilizando o Cygwin.</P>
|
||||||
|
|
||||||
<p>Há também uma versão para o Novell Netware 6 em
|
<p>Há também uma versão para o Novell Netware 6 em
|
||||||
<a href="http://forge.novell.com">http://forge.novell.com</a>
|
<a href="http://forge.novell.com">http://forge.novell.com</a>
|
||||||
@ -212,7 +217,7 @@
|
|||||||
"http://www.postgresql.org/support/submitbug">http://www.postgresql.org/support/submitbug</A>.</P>
|
"http://www.postgresql.org/support/submitbug">http://www.postgresql.org/support/submitbug</A>.</P>
|
||||||
<P>Verifique também o nosso ftp <A href=
|
<P>Verifique também o nosso ftp <A href=
|
||||||
"ftp://ftp.postgresql.org/pub">ftp://ftp.postgresql.org/pub</A> para
|
"ftp://ftp.postgresql.org/pub">ftp://ftp.postgresql.org/pub</A> para
|
||||||
ver se há uma versão mais recente do Postgres.</P>
|
ver se há uma versão mais recente do PostgreSQL.</P>
|
||||||
|
|
||||||
<P>Bugs submetidos utilizando o formulário ou informado a qualquer
|
<P>Bugs submetidos utilizando o formulário ou informado a qualquer
|
||||||
lista de discussão do PostgreSQL tipicamente gera uma das seguintes
|
lista de discussão do PostgreSQL tipicamente gera uma das seguintes
|
||||||
@ -271,7 +276,7 @@
|
|||||||
atualizada. Na prática, bugs não duram muito no programa; e bugs que afetam
|
atualizada. Na prática, bugs não duram muito no programa; e bugs que afetam
|
||||||
uma grande quantidade de usuários são corrigidos rapidamente. O único lugar
|
uma grande quantidade de usuários são corrigidos rapidamente. O único lugar
|
||||||
para encontrar todas as mudanças, melhorias e correções em uma versão do
|
para encontrar todas as mudanças, melhorias e correções em uma versão do
|
||||||
Postgres é ler as mensagens de log do
|
PostgreSQL é ler as mensagens de log do
|
||||||
<a href="http://www.postgresql.org/developer/sourcecode/">CVS</a>. Até mesmo
|
<a href="http://www.postgresql.org/developer/sourcecode/">CVS</a>. Até mesmo
|
||||||
as notas de lançamento não listam todas as mudanças feitas no programa.</P>
|
as notas de lançamento não listam todas as mudanças feitas no programa.</P>
|
||||||
|
|
||||||
@ -290,8 +295,8 @@
|
|||||||
Há uma lista de livros sobre PostgreSQL disponíveis para compra. Um dos mais
|
Há uma lista de livros sobre PostgreSQL disponíveis para compra. Um dos mais
|
||||||
populares é o do Korry Douglas. Uma lista de análise sobre os livros pode ser
|
populares é o do Korry Douglas. Uma lista de análise sobre os livros pode ser
|
||||||
encontrada em <A href=
|
encontrada em <A href=
|
||||||
"http://techdocs.postgresql.org/techdocs/bookreviews.php">http://techdocs.postgresql.org/techdocs/bookreviews.php</A>.
|
"http://www.postgresql.org/docs/books/">http://www.postgresql.org/docs/books/</A>.
|
||||||
Há também uma coleção de artigos técnicos sbore PostgreSQL em <A href="http://techdocs.postgresql.org/">http://techdocs.postgresql.org/</A>.</P>
|
Há também uma coleção de artigos técnicos sbore PostgreSQL em <A href="http://www.postgresql.org/docs/techdocs/">http://www.postgresql.org/docs/techdocs/</A>.</P>
|
||||||
|
|
||||||
<P>O programa cliente de linha de comando <I>psql</I> tem alguns comandos \d para
|
<P>O programa cliente de linha de comando <I>psql</I> tem alguns comandos \d para
|
||||||
mostrar informações sobre tipos, operadores, funções, agregações, etc. - utilize \?
|
mostrar informações sobre tipos, operadores, funções, agregações, etc. - utilize \?
|
||||||
@ -302,9 +307,7 @@
|
|||||||
<H3 id="item1.11">1.11) Como eu posso aprender <SMALL>SQL</SMALL>?</H3>
|
<H3 id="item1.11">1.11) Como eu posso aprender <SMALL>SQL</SMALL>?</H3>
|
||||||
|
|
||||||
<P>Primeiro, considere os livros específicos sobre PostgreSQL mencionados
|
<P>Primeiro, considere os livros específicos sobre PostgreSQL mencionados
|
||||||
acima. Outro é o "Teach Yourself SQL in 21 Days, Second Edition" e <A href=
|
acima. Muitos de nossos usuários gostam do <I>The Practical SQL Handbook</I>,
|
||||||
"http://members.tripod.com/er4ebus/sql/index.htm">http://members.tripod.com/er4ebus/sql/index.htm</A>.
|
|
||||||
Muitos de nossos usuários gostam do <I>The Practical SQL Handbook</I>,
|
|
||||||
Bowman, Judith S., et al., Addison-Wesley. Outros do <I>The
|
Bowman, Judith S., et al., Addison-Wesley. Outros do <I>The
|
||||||
Complete Reference SQL</I>, Groff et al., McGraw-Hill.</P>
|
Complete Reference SQL</I>, Groff et al., McGraw-Hill.</P>
|
||||||
|
|
||||||
@ -382,8 +385,7 @@
|
|||||||
<P>Algumas linguagens de programação como <SMALL>PHP</SMALL> incluem uma
|
<P>Algumas linguagens de programação como <SMALL>PHP</SMALL> incluem uma
|
||||||
interface para PostgreSQL. Interfaces para linguagens como Perl,
|
interface para PostgreSQL. Interfaces para linguagens como Perl,
|
||||||
<SMALL>TCL</SMALL>, Python e muitas outras estão disponíveis em
|
<SMALL>TCL</SMALL>, Python e muitas outras estão disponíveis em
|
||||||
<a href="http://gborg.postgresql.org">http://gborg.postgresql.org</A>
|
<a href="http://www.pgfoundry.org">http://www.pgfoundry.org</A>.
|
||||||
na seção de <I>Drivers/Interfaces</I> ou via busca na Internet.
|
|
||||||
</P>
|
</P>
|
||||||
|
|
||||||
<H3 id="item2.2">2.2) Quais ferramentas estão disponíveis para utilizar o PostgreSQL com páginas Web?</H3>
|
<H3 id="item2.2">2.2) Quais ferramentas estão disponíveis para utilizar o PostgreSQL com páginas Web?</H3>
|
||||||
@ -447,7 +449,7 @@
|
|||||||
|
|
||||||
<DD>Um grande número de configurações que afetam a performance.
|
<DD>Um grande número de configurações que afetam a performance.
|
||||||
Para obter detalhes adicionais, veja <a href=
|
Para obter detalhes adicionais, veja <a href=
|
||||||
"http://www.postgresql.org/docs/current/static/runtime.html">
|
"http://www.postgresql.org/docs/current/static/runtime-config.html">
|
||||||
Administration Guide/Server Run-time Environment/Run-time
|
Administration Guide/Server Run-time Environment/Run-time
|
||||||
Configuration</a> para listagem completa, e para
|
Configuration</a> para listagem completa, e para
|
||||||
comentários veja <a href=
|
comentários veja <a href=
|
||||||
@ -479,8 +481,8 @@
|
|||||||
|
|
||||||
<H3 id="item3.5">3.5) Por que eu recebo <I>"Sorry, too many clients"</I> quando eu tento conectar?</H3>
|
<H3 id="item3.5">3.5) Por que eu recebo <I>"Sorry, too many clients"</I> quando eu tento conectar?</H3>
|
||||||
|
|
||||||
<P>Você atingiu o limite padrão que é de 100 sessões. Você
|
<P>Você atingiu o limite padrão de 100 sessões. Você
|
||||||
precisa aumentar o limite do <I>postmaster</I>, que diz
|
precisa aumentar o limite do servidor PostgreSQL, que diz
|
||||||
quantos processos servidor concorrentes ele pode iniciar, alterando
|
quantos processos servidor concorrentes ele pode iniciar, alterando
|
||||||
o valor <I>max_connections</I> no <I>postgresql.conf</I> e
|
o valor <I>max_connections</I> no <I>postgresql.conf</I> e
|
||||||
reiniciando o <I>postmaster</I>.</P>
|
reiniciando o <I>postmaster</I>.</P>
|
||||||
@ -603,7 +605,7 @@
|
|||||||
-------------------------------------------
|
-------------------------------------------
|
||||||
52 bytes por registro
|
52 bytes por registro
|
||||||
|
|
||||||
O tamanho de uma página de dados no Postgres é 8192 bytes (8 KB), então:
|
O tamanho de uma página de dados no PostgreSQL é 8192 bytes (8 KB), então:
|
||||||
|
|
||||||
8192 bytes por página
|
8192 bytes por página
|
||||||
------------------------ = 158 registros por página do banco de dados (arredondado para baixo)
|
------------------------ = 158 registros por página do banco de dados (arredondado para baixo)
|
||||||
@ -664,10 +666,11 @@
|
|||||||
<LI>Busca que não diferenciam maiúsculas de minúsculas tais como <SMALL>ILIKE</SMALL> e
|
<LI>Busca que não diferenciam maiúsculas de minúsculas tais como <SMALL>ILIKE</SMALL> e
|
||||||
<I>~*</I> não utilizam índices. Em vez disso, utilize índice de expressão, que
|
<I>~*</I> não utilizam índices. Em vez disso, utilize índice de expressão, que
|
||||||
é descrito na seção <a href="#item4.8">4.8</a>.</LI>
|
é descrito na seção <a href="#item4.8">4.8</a>.</LI>
|
||||||
<LI>O idioma padrção <I>C</I> deve ser usando durante o <i>initdb</i>
|
<LI>O idioma padrão <I>C</I> deve ser usando durante o <i>initdb</i>
|
||||||
porque não é possível saber o próximo caracter em idiomas que não sejam o C.
|
porque não é possível saber o próximo caracter em idiomas que não sejam o C.
|
||||||
Você pode criar um índice especial <CODE>text_pattern_ops</CODE> para tais casos
|
Você pode criar um índice especial <CODE>text_pattern_ops</CODE> para tais casos
|
||||||
que funcionam somente para indexação com <SMALL>LIKE</SMALL>.
|
que funcionam somente para indexação com <SMALL>LIKE</SMALL>. Também é
|
||||||
|
possível utilizar indexação de busca textual para buscas por palavras.
|
||||||
</LI>
|
</LI>
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
@ -778,37 +781,27 @@ comprimento</TD></TR>
|
|||||||
);
|
);
|
||||||
</PRE>
|
</PRE>
|
||||||
|
|
||||||
Veja a página sobre <I>create_sequence</I> no manual para
|
<P>Sequências automaticamente criadas são nomeadas como
|
||||||
obter informações adicionais sobre sequências.
|
<<i>tabela</i>>_<<i>colunaserial</i>>_<i>seq</i>, onde
|
||||||
|
<i>tabela</i> e <i>colunaserial</i> são os nomes da tabela e
|
||||||
|
da coluna serial, respectivamente. Veja a página sobre
|
||||||
|
<I>create_sequence</I> no manual para obter informações
|
||||||
|
adicionais sobre sequências.
|
||||||
|
|
||||||
<H3 id="item4.11.2">4.11.2) Como eu consigo o valor de um campo
|
<H3 id="item4.11.2">4.11.2) Como eu consigo o valor de um campo
|
||||||
<SMALL>SERIAL</SMALL>?</H3>
|
<SMALL>SERIAL</SMALL>?</H3>
|
||||||
|
|
||||||
<P>Uma abordagem é obter o próximo valor <SMALL>SERIAL</SMALL>
|
<P>A maneira mais simples de obter o próximo valor <SMALL>SERIAL</SMALL>
|
||||||
de uma sequência com a função <I>nextval()</I>
|
de uma sequência é com <SMALL>RETURNING</SMALL>. Utilizando o
|
||||||
<I>antes</I> de inserir e então inserir com o valor explicitamente. Utilizando o
|
exemplo da tabela em <A href="#item4.11.1">4.11.1</A>, ele ficaria assim:
|
||||||
exemplo da tabela em <A href="#item4.11.1">4.11.1</A>, um exemplo em
|
|
||||||
pseudo-linguagem se pareceria com isto:</P>
|
|
||||||
<PRE>
|
<PRE>
|
||||||
novo_id = execute("SELECT nextval('pessoa_id_seq')");
|
INSERT INTO pessoa (nome) VALUES ('Blaise Pascal') RETURNING id;
|
||||||
execute("INSERT INTO pessoa (id, nome) VALUES (novo_id, 'Blaise Pascal')");
|
|
||||||
</PRE>
|
</PRE>
|
||||||
|
|
||||||
Você poderia então ter também o novo valor armazenado em
|
Você também pode chamar <I>nextval()</I> e utilizar o valor no
|
||||||
<CODE>novo_id</CODE> para utilizar em outras consultas (i.e., como uma chave
|
<SMALL>INSERT</SMALL> ou chamar <I>currval()</I> <I>após</I> o
|
||||||
estrangeira da tabela <CODE>pessoa</CODE>). Note que o nome da
|
<SMALL>INSERT</SMALL>.
|
||||||
<SMALL>SEQUENCE</SMALL> criada automaticamente será
|
|
||||||
<<I>tabela</I>>_<<I>coluna</I>>_<I>seq</I>, onde
|
|
||||||
<I>tabela</I> e <I>coluna</I> são os nomes da tabela
|
|
||||||
e da coluna <SMALL>SERIAL</SMALL>, respectivamente.
|
|
||||||
|
|
||||||
<P>Alternativamente, você poderia obter o valor <SMALL>SERIAL</SMALL>
|
|
||||||
atribuído com a função <I>currval()</I> <I>depois</I>
|
|
||||||
de tê-lo inserido por padrão, i.e.,</P>
|
|
||||||
<PRE>
|
|
||||||
execute("INSERT INTO pessoa (nome) VALUES ('Blaise Pascal')");
|
|
||||||
novo_id = execute("SELECT currval('pessoa_id_seq')");
|
|
||||||
</PRE>
|
|
||||||
|
|
||||||
<H3 id="item4.11.3">4.11.3) <I>currval()</I> não lida com condição de corrida com outros usuários?</H3>
|
<H3 id="item4.11.3">4.11.3) <I>currval()</I> não lida com condição de corrida com outros usuários?</H3>
|
||||||
|
|
||||||
@ -840,7 +833,7 @@ comprimento</TD></TR>
|
|||||||
|
|
||||||
<H3 id="item4.13">4.13) Por que eu recebo o erro <I>"ERROR: Memory exhausted in AllocSetAlloc()"</I>?</H3>
|
<H3 id="item4.13">4.13) Por que eu recebo o erro <I>"ERROR: Memory exhausted in AllocSetAlloc()"</I>?</H3>
|
||||||
|
|
||||||
<P>Você provavelmente está sem memória virtual no seu sistema, ou o seu núcleo (kernel) tem um limite baixo para certos recursos. Tente isto antes de iniciar o <I>postmaster</I>:</P>
|
<P>Você provavelmente está sem memória virtual no seu sistema, ou o seu núcleo (kernel) tem um limite baixo para certos recursos. Tente isto antes de iniciar o servidor PostgreSQL:</P>
|
||||||
<PRE>
|
<PRE>
|
||||||
ulimit -d 262144
|
ulimit -d 262144
|
||||||
limit datasize 256m
|
limit datasize 256m
|
||||||
@ -904,7 +897,9 @@ comprimento</TD></TR>
|
|||||||
<H3 id="item4.19">4.19) Por que eu obtenho erros "relation with OID ######
|
<H3 id="item4.19">4.19) Por que eu obtenho erros "relation with OID ######
|
||||||
does not exist" ao acessar tabelas temporárias em funções PL/PgSQL?</H3>
|
does not exist" ao acessar tabelas temporárias em funções PL/PgSQL?</H3>
|
||||||
|
|
||||||
<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>
|
<P>Em versões do PostgreSQL < 8.3, 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>
|
||||||
|
|
||||||
|
<P>Este problema não ocorre no PostgreSQL 8.3 ou superior.</P>
|
||||||
|
|
||||||
<H3 id="item4.20">4.20) Quais soluções de replicação estão disponíveis?</H3>
|
<H3 id="item4.20">4.20) Quais soluções de replicação estão disponíveis?</H3>
|
||||||
|
|
||||||
@ -914,7 +909,7 @@ comprimento</TD></TR>
|
|||||||
<P>Replicação mestre/escravo permite que um mestre receba consultas de leitura e
|
<P>Replicação mestre/escravo permite que um mestre receba consultas de leitura e
|
||||||
escrita, enquanto os escravos só podem aceitar leitura/consultas <SMALL>SELECT</SMALL>.
|
escrita, enquanto os escravos só podem aceitar leitura/consultas <SMALL>SELECT</SMALL>.
|
||||||
A solução mais popular de replicação mestre-escravo para PostgreSQL disponível livremente
|
A solução mais popular de replicação mestre-escravo para PostgreSQL disponível livremente
|
||||||
é <A href="http://gborg.postgresql.org/project/slony1/projdisplay.php">Slony-I</A>.</P>
|
é <A href="http://main.slony.info">Slony-I</A>.</P>
|
||||||
|
|
||||||
<P>Replicação com múltiplos mestres permite que consultas leitura/escrita sejam
|
<P>Replicação com múltiplos mestres permite que consultas leitura/escrita sejam
|
||||||
enviadas para múltiplos computadores replicadores. Esta capacidade também tem
|
enviadas para múltiplos computadores replicadores. Esta capacidade também tem
|
||||||
@ -931,7 +926,7 @@ comprimento</TD></TR>
|
|||||||
<P>A causa mais comum de nomes desconhecidos é o uso de aspas ao redor dos nomes da tabela ou coluna
|
<P>A causa mais comum de nomes desconhecidos é o uso de aspas ao redor dos nomes da tabela ou coluna
|
||||||
durante a criação da tabela. Ao utilizar aspas, nomes de tabela e coluna
|
durante a criação da tabela. Ao utilizar aspas, nomes de tabela e coluna
|
||||||
(chamados de identificadores) são armazenados <a
|
(chamados de identificadores) são armazenados <a
|
||||||
href="http://www.postgresql.org/docs/current/static/sql-syntax.html#SQL-SYNTAX-IDENTIFIERS">
|
href="http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS">
|
||||||
como especificado</a>, significando que você deve utilizar aspas quando se
|
como especificado</a>, significando que você deve utilizar aspas quando se
|
||||||
referir aos nomes na consulta. Algumas interfaces, como pgAdmin,
|
referir aos nomes na consulta. Algumas interfaces, como pgAdmin,
|
||||||
automaticamente colocam aspas nos identificadores durante a criação da tabela.
|
automaticamente colocam aspas nos identificadores durante a criação da tabela.
|
||||||
@ -941,6 +936,7 @@ comprimento</TD></TR>
|
|||||||
<LI>Utilizar somente caracteres minúsculos em identificadores</LI>
|
<LI>Utilizar somente caracteres minúsculos em identificadores</LI>
|
||||||
<LI>Colocar aspas em identificadores ao referenciá-los nas consultas</LI>
|
<LI>Colocar aspas em identificadores ao referenciá-los nas consultas</LI>
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
</BODY>
|
</BODY>
|
||||||
</HTML>
|
</HTML>
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user