summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Eisentraut2009-07-21 19:20:33 +0000
committerPeter Eisentraut2009-07-21 19:20:33 +0000
commitf3f45c87d23b800913fb8ea88fe2d713f6b9dd74 (patch)
treefc823ac6d3faebdf23dd8bb4fff7c35a4ab6a136
parentf7ad9cab30aad86d60c5826cceeb7a6be4298cc8 (diff)
Remove translated FAQs
The English FAQ has been moved to the wiki, so the translated versions should have been removed at that point as well. The FAQ_MINGW.html should have been removed when the platform FAQs were integrated into the documentation (or earlier). applied to both 8.4 and 8.5
-rw-r--r--doc/FAQ_brazilian922
-rw-r--r--doc/FAQ_chinese_simp801
-rw-r--r--doc/FAQ_chinese_trad793
-rw-r--r--doc/FAQ_czech849
-rw-r--r--doc/FAQ_farsi1256
-rw-r--r--doc/FAQ_french1289
-rw-r--r--doc/FAQ_german978
-rw-r--r--doc/FAQ_hungarian1234
-rw-r--r--doc/FAQ_japanese1126
-rw-r--r--doc/FAQ_polish1279
-rw-r--r--doc/FAQ_russian988
-rw-r--r--doc/FAQ_turkish1192
-rw-r--r--doc/src/FAQ/FAQ_MINGW.html82
-rw-r--r--doc/src/FAQ/FAQ_brazilian.html942
-rw-r--r--doc/src/FAQ/FAQ_chinese_simp.html1011
-rw-r--r--doc/src/FAQ/FAQ_chinese_trad.html1003
-rw-r--r--doc/src/FAQ/FAQ_czech.html645
-rw-r--r--doc/src/FAQ/FAQ_farsi.html1533
-rw-r--r--doc/src/FAQ/FAQ_french.html1466
-rw-r--r--doc/src/FAQ/FAQ_german.html1067
-rw-r--r--doc/src/FAQ/FAQ_hungarian.html1668
-rw-r--r--doc/src/FAQ/FAQ_japanese.html1399
-rw-r--r--doc/src/FAQ/FAQ_polish.html1572
-rw-r--r--doc/src/FAQ/FAQ_russian.html1197
-rw-r--r--doc/src/FAQ/FAQ_turkish.html1019
-rw-r--r--doc/src/FAQ/README4
26 files changed, 0 insertions, 27315 deletions
diff --git a/doc/FAQ_brazilian b/doc/FAQ_brazilian
deleted file mode 100644
index 16d47428b3c..00000000000
--- a/doc/FAQ_brazilian
+++ /dev/null
@@ -1,922 +0,0 @@
-
- Perguntas Frequentes (FAQ) sobre PostgreSQL
-
- Última atualização: Sex Nov 16 10:53:50 EST 2007
-
- Mantenedor atual: Bruce Momjian (bruce@momjian.us)
-
- Traduzido por: Euler Taveira de Oliveira (euler@timbira.com)
-
- A versão mais recente desse documento pode ser vista em
- http://www.postgresql.org/files/documentation/faqs/FAQ.html (EN).
- http://www.postgresql.org/files/documentation/faqs/FAQ_brazilian.html
- (pt_BR).
-
- Perguntas sobre plataformas específicas são respondidas em
- http://www.postgresql.org/docs/faq/.
- _________________________________________________________________
-
- Perguntas Gerais
-
- 1.1) O que é PostgreSQL? Como ele é pronunciado? O que é Postgres?
- 1.2) Quem controla o PostgreSQL?
- 1.3) Qual é a licença do PostgreSQL?
- 1.4) Quais plataformas o PostgreSQL pode ser executado?
- 1.5) Onde eu posso conseguir o PostgreSQL?
- 1.6) Qual é a última versão?
- 1.7) Onde eu posso conseguir suporte?
- 1.8) Como eu posso submeter um relato de um bug?
- 1.9) Como eu posso saber quais são os bugs conhecidos ou
- características ausentes?
- 1.10) Que documentação está disponível?
- 1.11) Como eu posso aprender SQL?
- 1.12) Como posso submeter uma correção (patch) ou me juntar a equipe
- de desenvolvimento?
- 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
-
- 2.1) Quais interfaces estão disponíveis para PostgreSQL?
- 2.2) Quais ferramentas estão disponíveis para utilizar o PostgreSQL
- com páginas Web?
- 2.3) O PostgreSQL tem interfaces gráficas para interagir com usuário?
-
- Perguntas Administrativas
-
- 3.1) Como eu instalo o PostgreSQL em um local diferente de
- /usr/local/pgsql?
- 3.2) Como eu controlo conexões de outras máquinas?
- 3.3) Como eu ajusto o servidor de banco de dados para obter uma
- performance melhor?
- 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
- conectar?
- 3.6) Qual é o processo de atualização do PostgreSQL?
- 3.7) Que tipo de hardware eu devo usar?
-
- Perguntas Operacionais
-
- 4.1) Como eu faço um SELECT somente dos primeiros registros de uma
- consulta? Um registro randômico?
- 4.2) Como eu descubro quais tabelas, índices, bancos de dados e
- usuários estão definidos? Como eu vejo as consultas utilizadas pelo
- psql para mostrá-los?
- 4.3) Como você muda o tipo de dado de uma coluna?
- 4.4) Qual é o tamanho máximo de um registro, uma tabela e um banco de
- dados?
- 4.5) Quanto espaço em disco é necessário para armazenar dados de um
- arquivo texto?
- 4.6) Por que minhas consultas estão lentas? Por que elas não estão
- utilizando meus índices?
- 4.7) Como eu vejo como o otimizador de consultas está avaliando minha
- consulta?
- 4.8) Como eu faço buscas com expressões regulares e buscas com
- expressões regulares sem diferenciar mauúsculas de minúsculas? Como eu
- 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
- 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.11.1) Como eu crio um campo serial/auto incremento?
- 4.11.2) Como eu consigo o valor de um campo SERIAL?
- 4.11.3) currval() não lida com condição de corrida com outros
- usuários?
- 4.11.4) Por que os números da minha sequência não são reutilizados
- quando uma transação é abortada? Por que há intervalos nos números da
- minha sequência/coluna SERIAL?
- 4.12) O que é um OID? O que é um CTID?
- 4.13) Por que eu recebo o erro "ERROR: Memory exhausted in
- AllocSetAlloc()"?
- 4.14) Como eu informo qual versão do PostgreSQL eu estou utilizando?
- 4.15) Como eu crio uma coluna que conterá por padrão a hora atual?
- 4.16) Como eu faço uma junção externa (outer join)?
- 4.17) Como eu faço consultas utilizando múltiplos bancos de dados?
- 4.18) Como eu retorno múltiplos registros ou colunas de uma função?
- 4.19) Por que eu obtenho erros "relation with OID ###### does not
- exist" ao acessar tabelas temporárias em funções PL/PgSQL?
- 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
- reconhecidos em minha consulta? Por que as maiúsculas não são
- preservadas?
- _________________________________________________________________
-
- Perguntas Gerais
-
- 1.1) O que é PostgreSQL? Como ele é pronunciado? O que é Postgres?
-
- PostgreSQL é pronunciado Post-Gres-Q-L. (Para os curiosos que querem
- saber como se diz "PostgreSQL", um arquivo de áudio está disponível).
-
- O PostgreSQL é um sistema de banco de dados objeto-relacional que tem
- as características de sistemas de bancos de dados comerciais
- tradicionais com melhoramentos encontrados nos sistemas SGBDs de
- próxima geração. PostgreSQL é livre e o código-fonte completo está
- disponível.
-
- O desenvolvimento do PostgreSQL é feito por um grupo de
- desenvolvedores voluntários (na sua maioria) espalhados pelo mundo e
- que se comunicam via Internet. É um projeto da comunidade e não é
- controlado por nenhuma empresa. Para se envolver, veja a FAQ do
- desenvolvedor em http://www.postgresql.org/docs/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?
-
- Se você está procurando por um mantenedor, comitê central ou empresa
- controladora do PostgreSQL, desista --- não há um(a). Nós temos um
- comitê core e committers CVS, mas estes grupos são mais para questões
- administrativas do que controle. O projeto é direcionado pela
- comunidade de desenvolvedores e usuários, que qualquer um pode se
- juntar. Tudo o que você precisa é se inscrever nas listas de discussão
- e participar das discussões. Veja a FAQ do desenvolvedor para obter
- informações como se envolver com o desenvolvimento do PostgreSQL.
-
- 1.3) Qual é a licença do PostgreSQL?
-
- O PostgreSQL é distribuído sob a licença BSD clássica. Basicamente,
- ela permite que usuários façam qualquer coisa com o código, incluindo
- revender os binários sem o código-fonte. A única restrição é que você
- não nos responsabilize legalmente por problemas com o programa de
- computador. Há também a exigência de que esta licença apareça em todas
- as cópias do programa de computador. Aqui está a licença BSD que
- usamos atualmente:
-
- PostgreSQL está sujeito a seguinte licença:
-
- PostgreSQL Data Base Management System
-
- Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
- Portions Copyright (c) 1994-1996 Regents of the University of
- California
-
- Permission to use, copy, modify, and distribute this software and its
- documentation for any purpose, without fee, and without a written
- agreement is hereby granted, provided that the above copyright notice
- and this paragraph and the following two paragraphs appear in all
- copies.
-
- IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
- FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
- INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND
- ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
- PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
- CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
- UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-
- 1.4) Quais plataformas 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.
-
- O PostgreSQL também executa nativamente nos sistemas operacionais
- Microsoft Windows baseados no NT tais como Win200 SP4, WinXP e
- Win2003. Um instalador pré-empacotado está disponível em
- http://pgfoundry.org/projects/pginstaller. Versões do Windows baseadas
- no MS-DOS (Win95, Win98, WinMe) podem executar o PostgreSQL utilizando
- o Cygwin.
-
- Há também uma versão para o Novell Netware 6 em
- http://forge.novell.com e uma versão para OS/2 (eComStation) em
- http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
- SQL&stype=all&sort=type&dir=%2F.
-
- 1.5) Onde eu posso conseguir o PostgreSQL?
-
- Via navegador web, utilize http://www.postgresql.org/ftp/ e via ftp,
- utilize ftp://ftp.postgresql.org/pub/.
-
- 1.6) Qual é a última versão?
-
- 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
- em alguns meses.
-
- 1.7) Onde eu posso conseguir suporte?
-
- A comunidade do PostgreSQL fornece assistência a muitos de seus
- usuários via e-mail. O principal sítio web para inscrição nas listas
- de e-mail é http://www.postgresql.org/community/lists/. As listas
- general e bugs são um bom lugar para início.
-
- O principal canal de IRC é o #postgresql na Freenode
- (irc.freenode.net). Para se conectar você pode utilizar o comando Unix
- irc -c '#postgresql' "$USER" irc.freenode.net ou utilizar qualquer
- outro cliente de IRC. Um canal hispânico (#postgresql-es) e um francês
- (#postgresqlfr) também existem na mesma rede. Há também um canal
- PostgreSQL na EFNet.
-
- Uma lista de empresas que prestam suporte comercial está disponível em
- http://www.postgresql.org/support/professional_support.
-
- 1.8) Como eu informo a existência de um bug?
-
- Visite o formulário que reporta bugs do PostgreSQL em
- http://www.postgresql.org/support/submitbug.
-
- Verifique também o nosso ftp ftp://ftp.postgresql.org/pub para ver se
- há uma versão mais recente do PostgreSQL.
-
- Bugs submetidos utilizando o formulário ou informado a qualquer lista
- de discussão do PostgreSQL tipicamente gera uma das seguintes
- respostas:
- * Não é um bug e o porquê
- * É um bug conhecido e já está na lista de AFAZERES
- * O bug foi corrigido na versão atual
- * O bug foi corrigido mas não foi empacotado em um versão oficial
- * Um pedido foi feito para obter informações detalhadas:
- + Sistema Operacional
- + Versão do PostgreSQL
- + Exemplo de teste que reproduz o bug
- + Informações sobre depuração
- + Saída reconstituidora de vestígios (backtrace) do depurador
- * O bug é novo. O seguinte pode ocorrer:
- + Uma correção é criada e será incluída na próxima versão
- + O bug não pode ser corrigido imediatamente e é adicionado a
- lista de AFAZERES
-
- 1.9) Como eu posso saber quais são os bugs conhecidos ou funcionalidades
- ausentes?
-
- O PostgreSQL suporta um subconjunto extendido do SQL:2003. Veja nossa
- lista de AFAZERES que contém bugs conhecidos, funcionalidades ausentes
- e planos futuros.
-
- Uma solicitação de funcionalidade geralmente resulta em uma das
- seguintes respostas:
- * A funcionalidade já está na lista de AFAZERES
- * A funcionalidade não é desejável porque:
- + Ela duplica uma funcionalidade existente que já segue o
- padrão SQL
- + A funcionalidade aumentará a complexidade do código mas
- adicionará pouco benefício
- + A funcionalidade será insegura ou não-confiável
- * A nova funcionalidade é adicionada a lista de AFAZERES
-
- 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
- de AFAZERES 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 para encontrar todas as mudanças, melhorias
- e correções em uma versão do PostgreSQL é ler as mensagens de log do
- CVS. Até mesmo as notas de lançamento não listam todas as mudanças
- feitas no programa.
-
- 1.10) Que documentação está disponível?
-
- O PostgreSQL inclui vasta documentação, incluindo um manual extenso,
- páginas de manuais (man pages) e alguns exemplos teste. Veja o
- diretório /doc. Você também pode pesquisar os manuais online em
- http://www.postgresql.org/docs.
-
- Há dois livros sobre PostgreSQL disponíveis online em
- http://www.postgresql.org/docs/books/awbook.html e
- http://www.commandprompt.com/ppbook/. 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 encontrada em
- 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
- para mostrar informações sobre tipos, operadores, funções, agregações,
- etc. - utilize \? para mostrar os comandos disponíveis.
-
- Nosso sítio web contém ainda mais documentação.
-
- 1.11) Como eu posso aprender SQL?
-
- Primeiro, considere os livros específicos sobre PostgreSQL mencionados
- acima. Muitos de nossos usuários gostam do The Practical SQL Handbook,
- Bowman, Judith S., et al., Addison-Wesley. Outros do The Complete
- Reference SQL, Groff et al., McGraw-Hill.
-
- Há também bons tutoriais disponíveis online:
- * http://www.intermedia.net/support/sql/sqltut.shtm
- * http://sqlcourse.com
- * http://www.w3schools.com/sql/default.asp
- * http://mysite.verizon.net/Graeme_Birchall/id1.html
-
- 1.12) Como posso submeter uma correção (patch) ou me juntar a equipe de
- desenvolvimento?
-
- Veja a FAQ do Desenvolvedor.
-
- 1.13) Como é o PostgreSQL comparado a outros SGBDs?
-
- Há várias maneiras de se medir um software: funcionalidades,
- performance, confiabilidade, suporte e preço.
-
- Funcionalidades
- PostgreSQL tem muitas características presentes em muitos SGBDs
- comerciais como transações, subconsultas, gatilhos, visões,
- integridade referencial de chave estrangeira e bloqueio (lock)
- sofisticado. Nós temos algumas funcionalidades que eles não
- tem, como tipos definidos pelo usuário, herança, regras e
- controle de concorrência de múltiplas versões para reduzir
- bloqueios (locks).
-
- Performance
- A performance do PostgreSQL é comparável a outros bancos de
- dados comerciais e de código livre. Ele é mais rápido em
- algumas coisas, mais lento em outras. Nossa performance é
- geralmente +/- 10% comparada a de outros bancos de dados.
-
- Confiabilidade
- Nós sabemos que um SGBD deve ser confiável ou ele é inútil. Nós
- empenhamos em lançar versões bem testadas, de código estável e
- que tenha o mínimo de bugs. Cada versão tem no mínimo um mês de
- teste em versão beta, e nosso histórico de versões mostra que
- nós podemos fornecer versões estáveis e sólidas que estão
- prontas para uso em produção. Nós acreditamos que somos
- comparados a nosso favor com outros sistemas de bancos de dados
- nessa área.
-
- Suporte
- Nossas listas de discussão fornecem contato com um grupo de
- desenvolvedores e usuários para ajudar a resolver muitos
- problemas encontrados. Enquanto nós não podemos garantir o
- conserto, SGBDs comerciais nem sempre fornecem também. Com
- acesso direto aos desenvolvedores, a comunidade de usuários,
- manuais e o código fonte faz com que o suporte do PostgreSQL
- seja superior ao de outros SGBDs. Há suporte comercial por
- incidente disponíveis para aqueles que precisam de um. (Veja
- seção 1.7 da FAQ).
-
- Preço
- Nós somos livres para uso dele tanto comercial quanto não
- comercial. Você pode adicionar nosso código ao seu produto sem
- limitações, exceto aquelas descritas na nossa licença BSD
- 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
-
- 2.1) Quais interfaces estão disponíveis para PostgreSQL?
-
- A instalação do PostgreSQL inclui somente as interfaces C e C
- embutida. Todas as outras interfaces são projetos independentes que
- podem ser obtidos separadamente; sendo separados permitem que eles
- tenham suas próprias datas de lançamento e time de desenvolvedores.
-
- Algumas linguagens de programação como PHP incluem uma interface para
- PostgreSQL. Interfaces para linguagens como Perl, TCL, Python e muitas
- outras estão disponíveis em http://www.pgfoundry.org.
-
- 2.2) Quais ferramentas estão disponíveis para utilizar o PostgreSQL com
- páginas Web?
-
- Uma boa introdução para páginas web que utilizam bancos de dados pode
- ser vista em: http://www.webreview.com
-
- Para integração na Web, PHP (http://www.php.net) é uma excelente
- interface.
-
- Para casos complexos, muitos usam a Interface Perl e DBD::Pg com
- CGI.pm ou mod_perl.
-
- 2.3) O PostgreSQL tem interfaces gráficas para iteragir com o usuário?
-
- Há um vasto número de Ferramentas Gráficas (GUI), que estão
- disponíveis para o PostgreSQL, comerciais e de desenvolvedores de
- código aberto. Uma lista detalhada pode ser encontrada em Documentação
- da Comunidade PostgreSQL
- _________________________________________________________________
-
- Perguntas Administrativas
-
- 3.1) Como eu instalo o PostgreSQL em um local diferente de /usr/local/pgsql?
-
- Especifique a opção --prefix quando executar o configure.
-
- 3.2) Como eu controlo conexões de outras máquinas?
-
- Por padrão, o PostgreSQL só permite conexões da máquina local
- utilizando soquetes de domínio Unix ou conexões TCP/IP. Outras
- máquinas não poderão conectar-se a menos que você modifique
- listen_addresses no postgresql.conf, habilite a autenticação por
- máquina modificando o arquivo $PGDATA/pg_hba.conf e reinicie o
- servidor PostgreSQL.
-
- 3.3) Como eu ajusto o servidor de banco de dados para obter uma performance
- melhor?
-
- Há três grandes áreas para melhorar a performance em potencial:
-
- Mudança de Consultas
- Isto involve modificar consultas para obter melhor performance:
-
- + Criação de índices, incluir expressões e índices parciais
- + Utilização o COPY ao invés de múltiplos comandos INSERTs
- + Agrupamento de múltiplos comandos em uma única transação para
- diminuir a despesa com efetivações (commit)
- + Utilização do CLUSTER quando recuperar vários registros de um
- índice
- + Utilização do LIMIT para retornar um subconjunto da saída da
- consulta
- + Utilização de Consultas preparadas
- + Utilização de ANALYZE para manter as estatísticas do
- otimizador corretas
- + Utilização regular do VACUUM ou pg_autovacuum
- + Remoção de índices durante grande mudança de dados
-
- Configuração do Servidor
- Um grande número de configurações que afetam a performance.
- Para obter detalhes adicionais, veja Administration
- Guide/Server Run-time Environment/Run-time Configuration para
- listagem completa, e para comentários veja
- http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_co
- nf_e.html e
- http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.
-
- Seleção do Hardware
- O efeito do hardware na performance é detalhado em
- http://www.powerpostgresql.com/PerfList/ e
- http://momjian.us/main/writings/pgsql/hw_performance/index.html
- .
-
- 3.4) Quais características de depuração estão disponíveis?
-
- Há muitas variáveis de configuração do servidor log_* que habilitam a
- exibição de consultas e estatísticas que podem ser muito úteis para
- depuração e medidas de performance.
-
- 3.5) Por que eu recebo "Sorry, too many clients" quando eu tento conectar?
-
- Você atingiu o limite padrão de 100 sessões. Você precisa aumentar o
- limite do servidor PostgreSQL, que diz quantos processos servidor
- concorrentes ele pode iniciar, alterando o valor max_connections no
- postgresql.conf e reiniciando o postmaster.
-
- 3.6) Qual é o processo de atualização do PostgreSQL?
-
- Veja http://www.postgresql.org/support/versioning para discussão geral
- sobre atualizações e
- http://www.postgresql.org/docs/current/static/install-upgrading.html
- para instruções específicas.
-
- 3.7) Que tipo de hardware eu devo usar?
-
- 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.
- _________________________________________________________________
-
- Perguntas Operacionais
-
- 4.1) Como eu faço um SELECT somente dos primeiros registros de uma consulta?
- Um registro randômico?
-
- Para obter somente alguns registros, se você sabe o número de
- registros necessários ao executar o SELECT utilize o LIMIT. Se um
- índice corresponde no ORDER BY é possível que a consulta toda não
- tenha que ser executada. Se você não sabe o número de registros ao
- executar o SELECT, utilize um cursor e o FETCH.
-
- Para obter um registro randômico, utilize:
- SELECT col
- FROM tab
- ORDER BY random()
- LIMIT 1;
-
- 4.2) Como eu descubro quais tabelas, índices, bancos de dados e usuários
- estão definidos? Como eu vejo as consultas utilizadas pelo psql para
- mostrá-los?
-
- Utilize o comando \dt para ver tabelas no psql. Para obter uma lista
- completa dos comandos no psql você pode utilizar \?. Alternativamente,
- você pode ler o código-fonte do psql no arquivo
- pgsql/src/bin/psql/describe.c, ele contém os comandos SQL que geram a
- saída para os comandos de contrabarra do psql. Você também pode
- iniciar o psql com a opção -E para que as consultas utilizadas para
- executar os comandos que você informou seja exibida. O PostgreSQL
- também fornece uma inteface compatível com SQL do INFORMATION SCHEMA
- que você pode consultar para obter informação sobre o banco de dados.
-
- Há também tabelas do sistema que começam com pg_ que os descrevem
- também.
-
- Utilizando o psql -l listará todos os bancos de dados.
-
- Veja também o arquivo pgsql/src/tutorial/syscat.source. Ele ilustra
- muitos dos comandos SELECTs necessários para obter informação das
- tabelas de sistema do banco de dados.
-
- 4.3) Como você muda o tipo de dado de uma coluna?
-
- Mudar o tipo de dado de uma coluna pode ser feito facilmente na versão
- 8.0 ou superior com ALTER TABLE ALTER COLUMN TYPE.
-
- Em versões anteriores, faça isso:
- BEGIN;
- ALTER TABLE tab ADD COLUMN col_nova novo_tipo_dado;
- UPDATE tab SET col_nova = CAST(col_antiga AS novo_tipo_dado);
- ALTER TABLE tab DROP COLUMN col_antiga;
- COMMIT;
-
- Você pode então querer fazer um VACUUM FULL tab para recuperar o
- espaço em disco utilizado pelos registros expirados.
-
- 4.4) Qual é o tamanho máximo de um registro, uma tabela e um banco de dados?
-
- Estes são os limites:
-
- Tamanho máximo de um banco de dados? ilimitado (existem bancos de
- dados de 32 TB)
- Tamanho máximo de uma tabela? 32 TB
- Tamanho máximo de um registro? 400 GB
- Tamanho máximo de um campo? 1 GB
- Número máximo de registros em uma tabela? ilimitado
- Número máximo de colunas em uma tabela? 250-1600 dependendo dos tipos
- das colunas
- Número máximo de índices em uma tabela? ilimitado
-
- É claro, que eles não são ilimitados, mas limitados ao espaço em disco
- disponível e espaço em memória/swap. A Performance será penalizada
- quando estes valores se tornarem grandes.
-
- O tamanho máximo de uma tabela com 32 TB não requer suporte a arquivos
- grandes do sistema operacional. Tabelas grandes são armazenadas como
- múltiplos arquivos de 1 GB então o limite do sistema de arquivos não é
- importante.
-
- O tamanho máximo de uma tabela, o tamanho de um registro e o número
- máximo de colunas podem ser quadruplicados aumentando-se o tamanho
- padrão do bloco para 32k. O tamanho máximo de uma tabela pode também
- ser aumentado utilizando particionamento de tabela.
-
- Uma limitação é que índices não podem ser criados em colunas maiores
- do que 2.000 caracteres. Felizmente, tais índices são raramente
- necessários. Unicidade é melhor garantida por um índice de uma função
- de um hash MD5 de uma coluna longa, e indexação de texto longo permite
- a busca de palavras dentro da coluna.
-
- 4.5) Quanto espaço em disco é necessário para armazenar dados de um arquivo
- texto?
-
- Um banco de dados PostgreSQL irá requerer até cinco vezes a quantidade
- de espaço requerida para armazenar dados em um arquivo texto.
-
- Como um exemplo, considere um arquivo com 100.000 linhas contendo um
- 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
- arquivo do banco de dados PostgreSQL que contém esses dados pode ser
- estimado em 5,2 MB:
- 24 bytes: cada cabeçalho de registro (aproximadamente)
- 24 bytes: um campo int e um campo texto
- + 4 bytes: ponteiro na página para a tupla
- -------------------------------------------
- 52 bytes por registro
-
- O tamanho de uma página de dados no PostgreSQL é 8192 bytes (8 KB), então:
-
- 8192 bytes por página
- ------------------------ = 158 registros por página do banco de dados (arredondado para baixo)
- 52 bytes por registro
-
- 100000 registros de dados
- ---------------------------- = 633 páginas do banco de dados (arredondadopara cima)
- 158 registros por página
-
-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
- indexados, então eles podem ocupar algum espaço.
-
- NULLs são armazenados como bitmaps, então eles utilizam muito pouco
- espaço.
-
- 4.6) Por que minhas consultas estão lentas? Por que elas não estão utilizando
- meus índices?
-
- Índices não são utilizados por toda consulta. Índices são utilizados
- somente se a tabela é maior do que um tamanho mínimo, e a consulta
- seleciona somente uma pequena porcentagem dos registros da tabela.
- Isto porque o acesso randômico ao disco causado pela busca indexada
- pode ser mais lento do que uma leitura ao longo da tabela ou busca
- sequencial.
-
- Para determinar se um índice deveria ser utilizado, o PostgreSQL deve
- ter estatísticas sobre a tabela. Estas estatísticas são coletadas
- utilizando o VACUUM ANALYZE ou simplesmente o ANALYZE. Utilizando
- estatísticas, o otimizador sbae quantos registros estão na tabela, e
- pode melhor determinar se índices deveriam ser utilizados.
- Estatísticas também são úteis para determinar a ordem de junção ótima
- e métodos de junção. Coleção de estatísticas deveriam ser feitas
- periodicamente a medida que o conteúdo da tabela muda.
-
- Índices não são normalmente utilizados para ORDER BY ou para fazer
- junções. Uma busca sequencial seguido por uma ordenação explícita é
- geralmente mais rápida do que uma busca indexada em uma tabela grande.
- Contudo, LIMIT combinado com ORDER BY frequentemente utilizará índice
- porque somente uma pequena porção da tabela será retornada.
-
- Se você acredita que o otimizador está incorreto ao escolher uma busca
- sequencial, utilize SET enable_seqscan TO 'off' e execute a consulta
- novamente para ver se uma busca indexada é realmente mais rápida.
-
- Ao utilizar operadores curinga tais como LIKE ou ~, índices podem ser
- utilizados somente em algumas condições:
- * O início da cadeia de caracteres da busca deve ser iniciar com uma
- cadeia de caracteres, i.e.
- + modelos LIKE não devem iniciar com %.
- + modelos ~ (expressões regulares) devem iniciar com ^.
- * A cadeia de caracteres utilizada na busca não pode iniciar com a
- classe de caracteres e.g. [a-e].
- * Busca que não diferenciam maiúsculas de minúsculas tais como ILIKE
- e ~* não utilizam índices. Em vez disso, utilize índice de
- expressão, que é descrito na seção 4.8.
- * 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.
- Você pode criar um índice especial text_pattern_ops para tais
- 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
- utilizados a menos que os tipos de dados correspondam aos tipos de
- coluna do índice. Isto era particularmente verdadeiro para índices de
- coluna int2, int8 e numeric.
-
- 4.7) Como eu vejo como o otimizador de consulta está avaliando a minha
- consulta?
-
- Veja o comando EXPLAIN no manual.
-
- 4.8) Como eu faço buscas com expressões regulares e buscas com expressões
- regulares sem diferenciar maiúsculas de minúsculas? Como eu utilizo um índice
- para buscas que não diferenciam maiúsculas de minúsculas?
-
- O operador ~ faz avaliação de expressões regulares, e ~* faz avaliação
- não sensível a maiúsculas de expressões regulares. A variante não
- sensível a maiúsculas do LIKE é chamada de ILIKE.
-
- Comparações de igualdade não sensíveis a maiúsculas são normalmente
- expressadas como:
- SELECT *
- FROM tab
- WHERE lower(col) = 'abc';
-
- Isso não irá utilizar o índice padrão. Contudo, se você criar um
- índice de expressão, ele será utilizado:
- CREATE INDEX tabindex ON tab (lower(col));
-
- Se o índice acima é criado como UNIQUE, embora a coluna possa
- armazenar caracteres maiúsculos e minúsculos, ele não pode ter valores
- idênticos que diferem apenas em letras maiúsculas e minúsculas. Para
- forçar uma letra maiúscula ou minúscula a ser armazenada na coluna,
- utilize uma restrição CHECK ou um gatilho.
-
- 4.9) Em uma consulta, como eu detecto se um campo é NULL? Como eu posso
- 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:
- SELECT *
- FROM tab
- 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
- 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
- irá colocar entradas NULL no início da lista de resultados:
- SELECT *
- FROM tab
- ORDER BY (col IS NOT NULL)
-
- 4.10) Qual é a diferença entre os vários tipos de dado de caracteres?
-
- Tipo Nome Interno Observação
- VARCHAR(n) varchar tamanho especifica o tamanho máximo, sem
- preenchimento
- CHAR(n) bpchar preenchimento em branco para comprimento fixo
- específico
- TEXT text nenhum limite superior específico no comprimento
- BYTEA bytea vetor de bytes de comprimento variável (seguro a byte
- nulo)
- "char" char um caracter
-
- Você verá o nome interno quando examinar o catálogo do sistema e em
- algumas mensagens de erro.
-
- Os primeiros quatro tipos acima são do tipo "varlena" (i.e., os
- primeiros quatro bytes no disco são o comprimento seguido pelos
- dados). Consequentemente o espaço atual utilizado é ligeiramente maior
- do que o tamanho declarado. Contudo, valores longos são também
- sujeitos a compressão, então o espaço em disco pode também ser bem
- menor do que o esperado.
- VARCHAR(n) é melhor quando está armazenando cadeias de caracteres de
- comprimento variável e há um limite de tamanho desta cadeia. TEXT é
- para cadeias de caracteres de comprimento ilimitado, com o máximo de
- um gigabyte.
-
- CHAR(n) é para armazenar cadeias de caracteres que são todas do mesmo
- tamanho. CHAR(n) preenche com espaços em branco até o tamanho
- especificado, enquanto o VARCHAR(n) armazena somente os caracteres
- fornecidos. BYTEA é para armazenar dados binários, particularmente
- valores que incluem bytes NULL. Todos os tipos descritos aqui tem
- características de performance similares.
-
- 4.11.1) Como eu crio um campo serial/auto incremento?
-
- PostgreSQL suporta o tipo de dados SERIAL. Ele cria automaticamente
- uma sequência. Por exemplo:
- CREATE TABLE pessoa (
- id SERIAL,
- nome TEXT
- );
-
- é automaticamente traduzido em:
- CREATE SEQUENCE pessoa_id_seq;
- CREATE TABLE pessoa (
- id INT4 NOT NULL DEFAULT nextval('pessoa_id_seq'),
- nome TEXT
- );
-
- Sequências automaticamente criadas são nomeadas como
- <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?
-
- A maneira mais simples de obter o próximo valor SERIAL de uma
- sequência é com RETURNING. Utilizando o exemplo da tabela em 4.11.1,
- ele ficaria assim:
- INSERT INTO pessoa (nome) VALUES ('Blaise Pascal') RETURNING id;
-
- Você também pode chamar nextval() e utilizar o valor no INSERT ou
- chamar currval() após o INSERT.
-
- 4.11.3) currval() não lida com condição de corrida com outros usuários?
-
- Não. currval() retorna o valor atual atribuido pela sua sessão, e não
- por todas as sessões.
-
- 4.11.4) Por que os números da minha sequência não são reutilizados quando uma
- transação é abortada? Por que há intervalos nos números da minha
- sequência/coluna SERIAL?
-
- Para melhorar a concorrência, valores da sequência são atribuídos a
- transações correntes e não são travados até que a transação seja
- finalizada. Isso causa intervalos na numeração por causa de transações
- abortadas.
-
- 4.12) O que é um OID? O que é um CTID?
-
- Se uma tabela é criada com WITH OIDS, cada registro recebe um OID
- único. OIDs são automaticamente atribuídos como inteiros de 4 bytes
- que são únicos ao longo de toda instalação. Contudo, eles são
- limitados em 4 bilhões e, então, os OIDs começam a ser duplicados. O
- PostgreSQL utiliza OIDs para ligar as tabelas do sistema.
-
- 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
- uma tabela; e são menos propícias a atingir o limite. SERIAL8 está
- disponível para armazenar valores de sequências com oito bytes.
-
- CTIDs são utilizados para identificar registros físicos específicos
- com valores de block e deslocamento. CTIDs mudam após registros serem
- modificados ou recarregados. Eles são utilizados por índices para
- apontar registros físicos.
-
- 4.13) Por que eu recebo o erro "ERROR: Memory exhausted in AllocSetAlloc()"?
-
- 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:
- ulimit -d 262144
- limit datasize 256m
-
- Dependendo da sua shell, somente um desses comando terá sucesso, mas
- ele definirá o segmento de dados do seu processo com um limite maior e
- talvez permita que a consulta seja feita. Este comando é aplicado ao
- processo atual e todos os subprocessos criados depois do comando ser
- executado. Se você tiver problemas com o cliente SQL porque o processo
- servidor retornou muitos dados, tente-o antes de iniciar o cliente.
-
- 4.14) Como eu informo qual versão do PostgreSQL eu estou utilizando?
-
- No psql, digite SELECT version();
-
- 4.15) Como eu crio uma coluna que conterá por padrão a hora atual?
-
- Utilize CURRENT_TIMESTAMP:
- CREATE TABLE teste (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP);
-
- 4.16) Como eu faço uma junção externa (outer join)?
-
- PostgreSQL suporta junções externas utilizando a sintaxe padrão do
- SQL. Aqui temos dois exemplos:
- SELECT *
- FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
- or
- SELECT *
- FROM t1 LEFT OUTER JOIN t2 USING (col);
-
- Essas duas consultas indênticas juntam t1.col com t2.col, e também
- retornam qualquer registro que não foi juntado em t1 (aqueles que não
- combinaram com t2). Uma junção a direita RIGHT adicionaria registros
- que não foram juntados da tabela t2. Uma junção completa (FULL)
- retornaria os registros combinados mais todos os registros não
- 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
- internas (INNER).
-
- 4.17) Como eu faço consultas utilizando múltiplos bancos de dados?
-
- Não há outra maneira de consultar um banco de dados caso ele não seja
- o atual. Porque o PostgreSQL carrega catálogos do sistema específicos
- do banco de dados, é incerto como uma consulta em banco de dados
- distintos pode se comportar.
-
- contrib/dblink permite consultas em bancos de dados distintos
- utilizando chamadas de funções. É claro, que um cliente pode fazer
- conexões simultâneas em bancos de dados diferentes e juntar os
- resultados no cliente.
-
- 4.18) Como eu retorno múltiplos registros ou colunas de uma função?
-
- É fácil utilizando funções que retornam conjunto,
- http://www.postgresql.org/docs/techdocs.17.
-
- 4.19) Por que eu obtenho erros "relation with OID ###### does not exist" ao
- acessar tabelas temporárias em funções PL/PgSQL?
-
- 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 EXECUTE para acesso a tabelas temporárias no
- 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?
-
- Embora "replicação" seja um termo simples, há várias tecnologias para
- fazer replicação, com vantagens e desvantagens para cada um.
-
- Replicação mestre/escravo permite que um mestre receba consultas de
- leitura e escrita, enquanto os escravos só podem aceitar
- leitura/consultas SELECT. A solução mais popular de replicação
- mestre-escravo para PostgreSQL disponível livremente é Slony-I.
-
- Replicação com múltiplos mestres permite que consultas leitura/escrita
- sejam enviadas para múltiplos computadores replicadores. Esta
- capacidade também tem um sério impacto na performance por causa da
- necessidade de sincronizar as mudanças entre os servidores. PGCluster
- é a solução mais popular disponível livremente para PostgreSQL.
-
- Há também soluções de replicação comerciais e baseadas em hardware
- 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
- minha consulta? Por que as maiúsculas não são preservadas?
-
- 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 (chamados de identificadores) são
- armazenados como especificado, significando que você deve utilizar
- aspas quando se referir aos nomes na consulta. Algumas interfaces,
- como pgAdmin, automaticamente colocam aspas nos identificadores
- durante a criação da tabela. Então, para identificadores serem
- reconhecidos, você deve:
- * Evitar colocar aspas no identificador ao criar tabelas
- * Utilizar somente caracteres minúsculos em identificadores
- * Colocar aspas em identificadores ao referenciá-los nas consultas
diff --git a/doc/FAQ_chinese_simp b/doc/FAQ_chinese_simp
deleted file mode 100644
index fde161fa103..00000000000
--- a/doc/FAQ_chinese_simp
+++ /dev/null
@@ -1,801 +0,0 @@
-
- PostgreSQL 常è§é®é¢ï¼FAQï¼
-
- æè¿æ´æ°ï¼2007 å¹´ 1 æ 30 æ¥ ææäº 17:37:01 EST
- 䏿çæè¿æ´æ°ï¼2007 å¹´ 2 æ 1 æ¥ ææå 12:55:04 CST
-
- ç®åç»´æ¤äººåï¼Bruce Momjian (pgman@candle.pha.pa.us)
- 䏿çç»´æ¤äººåï¼Daojing.Zhouï¼doudou586@gmail.comï¼
-
- æ¬ææ¡£çææ°çæ¬å¯ä»¥å¨
- http://www.postgresql.org/files/documentation/faqs/FAQ.htmlæ¥çã
-
- 䏿ä½ç³»ç»å¹³å°ç¸å³çé®é¢å¯å¨http://www.postgresql.org/docs/faq/éæ¾å°ç­
- æ¡ã
- _________________________________________________________________
-
-常è§é®é¢
-
- 1.1)PostgreSQL æ¯ä»ä¹ï¼è¯¥æä¹åé³ï¼
- 1.2)è°æ§å¶å管çPostgreSQL ï¼
- 1.3)PostgreSQLççææ¯ä»ä¹ï¼
- 1.4)PostgreSQLå¯ä»¥è¿è¡å¨åªäºæä½ç³»ç»å¹³å°ä¸ï¼
- 1.5)æä»åªéè½å¾å°PostgreSQLï¼
- 1.6)ææ°ççPostgreSQL æ¯ä»ä¹ï¼
- 1.7)æä»åªéè½å¾å°å¯¹PostgreSQL çæ¯æï¼
- 1.8)æå¦ä½æäº¤ä¸ä¸ªBUGæ¥åï¼
- 1.9)æå¦ä½äºè§£å·²ç¥ç BUG ææç¼ºçåè½ï¼
- 1.10)è½å¤è·åçææ°ææ¡£æåªäºï¼
- 1.11)æåºè¯¥ææ ·å¦ä¹ SQL ï¼
- 1.12)å¦ä½æäº¤è¡¥ä¸ææ¯å å¥å¼åéä¼ï¼
- 1.13)PostgreSQL åå¶ä»æ°æ®åºç³»ç»æ¯èµ·æ¥å¦ä½ï¼
- 1.14)PostgreSQL å¯ä»¥å¤çæè¿å个å½å®¶å¤æ¶å¶çåååï¼
-
-ç¨æ·å®¢æ·ç«¯é®é¢
-
- 2.1)æä»¬å¯ä»¥ç¨ä»ä¹è¯è¨åPostgreSQL æäº¤éï¼
- 2.2)æä»ä¹å·¥å·å¯ä»¥æPostgreSQL ç¨äº Web 页é¢ï¼
- 2.3)PostgreSQL æ¥æå¾å½¢ç¨æ·çé¢åï¼
-
-ç³»ç»ç®¡çé®é¢
-
- 3.1)æææ ·æè½æPostgreSQL è£å¨ /usr/local/pgsql 以å¤çå°æ¹ï¼
- 3.2)æå¦ä½æ§å¶æ¥èªå¶ä»çµèçè¿æ¥ï¼
- 3.3)æææ ·è°æ´æ°æ®åºæå¡å¨ä»¥è·å¾æ´å¥½çæ§è½ï¼
- 3.4)PostgreSQL éå¯ä»¥è·å¾ä»ä¹æ ·çè°è¯ç¹æ§ï¼
- 3.5)为ä»ä¹å¨è¯å¾è¿æ¥ç»å½æ¶æ¶å°âSorry, too many clientsâ æ¶æ¯ï¼
- 3.6)PostgreSQLçå级è¿ç¨æåªäºå容ï¼
- 3.7)(使ç¨PostgreSQL)æéè¦ä½¿ç¨ä»ä¹è®¡ç®æºç¡¬ä»¶ ï¼
-
-æä½é®é¢
-
- 4.1) å¦ä½åªéæ©ä¸ä¸ªæ¥è¯¢ç»æç头å è¡ï¼ææ¯éæºçä¸è¡ï¼
- 4.2)
- å¦ä½æ¥ç表ãç´¢å¼ãæ°æ®åºä»¥åç¨æ·çå®ä¹ï¼å¦ä½æ¥çpsqléç¨å°çæ¥è¯¢æä»¤å¹¶æ¾ç
- ¤ºå®ä»¬ï¼
- 4.3) å¦ä½æ´æ¹ä¸ä¸ªåæ®µçæ°æ®ç±»åï¼
- 4.4) åæ¡è®°å½ï¼å个表ï¼ä¸ä¸ªæ°æ®åºçæå¤§éå¶æ¯å¤å°ï¼
- 4.5) åå¨ä¸ä¸ªå¸åçææ¬æä»¶éçæ°æ®éè¦å¤å°ç£ç空é´ï¼
- 4.6) 为ä»ä¹æçæ¥è¯¢å¾æ¢ï¼ä¸ºä»ä¹è¿äºæ¥è¯¢æ²¡æå©ç¨ç´¢å¼ï¼
- 4.7) æå¦ä½æè½çå°æ¥è¯¢ä¼å卿¯ææ ·è¯ä¼°å¤çæçæ¥è¯¢çï¼
- 4.8) æææ ·åæ£åè¡¨è¾¾å¼æç´¢å大å°åæ å³çæ­
- £åè¡¨è¾¾å¼æ¥æ¾ï¼ææ ·å©ç¨ç´¢å¼è¿è¡å¤§å°åæ 峿¥æ¾ï¼
- 4.9) å¨ä¸ä¸ªæ¥è¯¢éï¼æææ ·æ£æµä¸ä¸ªå段æ¯å¦ä¸º
- NULLï¼æå¦ä½æè½åç¡®æåºèä¸è®ºæå段æ¯å¦å«NULLå¼ï¼
- 4.10) åç§å符类åä¹é´æä»ä¹ä¸åï¼
- 4.11.1) æææ ·å建ä¸ä¸ªåºåå·åææ¯èªå¨éå¢çåæ®µï¼
- 4.11.2) æå¦ä½è·å¾ä¸ä¸ªæå¥çåºåå·çå¼ï¼
- 4.11.3) åæ¶ä½¿ç¨ currval() ä¼å¯¼è´åå¶ä»ç¨æ·çå²çªæåµåï¼
- 4.11.4) 为ä»ä¹ä¸å¨äºå¡å¼å¸¸ä¸æ¢åéç¨åºåå·å¢ï¼ä¸ºä»ä¹å¨åºåå·å段çåå¼ä¸­
- åå¨é´æå¢ï¼
- 4.12) ä»ä¹æ¯ OIDï¼ä»ä¹æ¯ CTID ï¼
- 4.13) 为ä»ä¹ææ¶å°é误信æ¯âERROR: Memory exhausted in
- AllocSetAlloc()âï¼
- 4.14) æå¦ä½æè½ç¥éæè¿è¡ç PostgreSQL ççæ¬ï¼
- 4.15) æå¦ä½å建ä¸ä¸ªç¼ºç弿¯å½åæ¶é´çåæ®µï¼
- 4.16) å¦ä½æ§è¡å¤è¿æ¥ï¼outer joinï¼æ¥è¯¢ï¼
- 4.17) å¦ä½æ§è¡æ¶åå¤ä¸ªæ°æ®åºçæ¥è¯¢ï¼
- 4.18) å¦ä½è®©å½æ°è¿åå¤è¡æå¤åæ°æ®ï¼
- 4.19) 为ä»ä¹æå¨ä½¿ç¨PL/PgSQL彿°åå临æ¶è¡¨æ¶ä¼æ¶å°é误信æ¯ârelation
- with OID ##### does not existâï¼
- 4.20) ç®åæåªäºæ°æ®å¤å¶æ¹æ¡å¯ç¨ï¼
- 4.21) ä¸ºä½æ¥è¯¢ç»ææ¾ç¤ºç表åæååä¸æçæ¥è¯¢è¯å¥ä¸­
- çä¸åï¼ä¸ºä½å¤§åç¶æä¸è½ä¿çï¼
- _________________________________________________________________
-
-常è§é®é¢
-
- 1.1)PostgreSQL æ¯ä»ä¹ï¼è¯¥æä¹åé³ï¼
-
- PostgreSQL è¯»ä½ Post-Gres-Q-Lï¼ææ¶åä¹ç®ç§°ä¸ºPostgres
- ãæ³å¬ä¸ä¸å¶åé³ç人åå¯ä»è¿éä¸è½½å£°é³æä»¶ï¼ MP3 æ ¼å¼ ã
-
- PostgreSQL
- æ¯é¢åç®æ çå³ç³»æ°æ®åºç³»ç»ï¼å®å·æä¼ ç»å䏿°æ®åºç³»ç»çææåè½ï¼åæ¶å嫿å°å
- ¨ä¸ä¸ä»£ DBMS ç³»ç»ç使ç¨çå¢å¼ºç¹æ§ãPostgreSQL
- æ¯èªç±åè´¹çï¼å¹¶ä¸æææºä»£ç é½å¯ä»¥è·å¾ã
-
- PostgreSQL
- çå¼åéä¼ä¸»è¦ä¸ºå¿æ¿èï¼ä»ä»¬éå¸ä¸çåå°å¹¶éè¿äºèç½è¿è¡èç³»ï¼è¿æ¯ä¸ä¸ªç¤¾å
- ºå¼å项ç®ï¼å®ä¸è¢«ä»»ä½å¬å¸æ§å¶ã
- 妿³å å¥å¼åéä¼ï¼è¯·åè§å¼å人å常è§é®é¢ï¼FAQï¼
- http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html
-
- 1.2) è°æ§å¶PostgreSQL ï¼
-
- å¦æä½ å¨å¯»æ¾PostgreSQLçæé¨äººï¼ææ¯ä»ä¹ä¸­
- 央å§åä¼ï¼ææ¯ä»ä¹æå±å¬å¸ï¼ä½ åªè½æ¾å¼äº---å 为ä¸ä¸ªä¹ä¸å­
- å¨ï¼ä½æä»¬çç¡®æä¸ä¸ª
- æ ¸å¿å§åä¼åCVS管çç»ï¼ä½è¿äºå·¥ä½ç»ç设ç«ä¸»è¦æ¯ä¸ºäºè¿è¡ç®¡çå·¥ä½è䏿
- ¯å¯¹PostgreSQLè¿è¡ç¬å 弿§å¶ï¼PostgreSQLé¡¹ç®æ¯ç±ä»»ä½äººå
- å¯åå çå¼å人å社åºåææç¨æ·æ§å¶çï¼ä½ æéè¦åçå°±æ¯è®¢éé®ä»¶å表ï¼åä¸è®¨è®º
- å³å¯ï¼è¦åä¸PostgreSQLçå¼åè¯¦è§ å¼å人å常é®é¢ (Developer's FAQ)
- è·åä¿¡æ¯ï¼ã
-
- 1.3)PostgreSQLççææ¯ä»ä¹?
-
- PostgreSQLçåå¸éµä»ç»å¸çBSDçæãå®åè®¸ç¨æ·ä¸éç®çå°ä½¿ç¨PostgreSQLï¼çè³ä½
- å¯ä»¥éå®PostgreSQLèä¸å«æºä»£ç ä¹å¯ä»¥ï¼å¯ä¸çéå¶å°±æ¯ä½ ä¸è½å 软件èªè
- º«é®é¢èåæä»¬è¿½è¯æ³å¾è´£ä»»ï¼å¦å¤å°±æ¯è¦æ±ææç软件æ·è´ä¸­
- 须忬以ä¸çæå£°æãä¸é¢å°±æ¯æä»¬æä½¿ç¨çBSDçæå£°æå容ï¼
-
- PostgreSQLæ°æ®åºç®¡çç³»ç»
-
- é¨åçæï¼cï¼1996-2005ï¼PostgreSQL å¨çå¼åå°ç»ï¼é¨åçæï¼cï¼1994-1996
- å å·å¤§å¦è£äº
-
- ï¼Portions copyright (c) 1996-2005,PostgreSQL Global Development Group
- Portions Copyright (c) 1994-6 Regents of the University of
- Californiaï¼
-
- å许为任ä½ç®ç使ç¨ï¼æ·è´ï¼ä¿®æ¹åååè¿ä¸ªè½¯ä»¶åå®çææ¡£è䏿¶åä»»ä½è´¹ç
- ¨ï¼ 并䏿 é¡»ç¾ç½²å æ­
- ¤è产ççè¯æï¼åææ¯ä¸é¢ççæå£°æåæ¬æ®µä»¥åä¸é¢ä¸¤æ®µæååºç°å¨æææ·è´ä¸ã
-
- ï¼Permission to use, copy, modify, and distribute this software and
- its documentation for any purpose, without fee, and without a written
- agreement is hereby granted, provided that the above copyright notice
- and this paragraph and the following two paragraphs appear in all
- copies.ï¼
-
- å¨ä»»ä½æåµä¸ï¼å å·å¤§å¦é½ä¸æ¿æå ä½¿ç¨æ­
- ¤è½¯ä»¶åå¶ææ¡£è导è´ç对任ä½å½äºäººçç´æ¥çï¼
- é´æ¥çï¼ç¹æ®çï¼éå çæèç¸ä¼´èççæåï¼åæ¬å©çæå¤±ç责任ï¼å³ä½¿å å·å¤§å­
- ¦å·²ç»å»ºè®®äºè¿äºæå¤±çå¯è½æ§æ¶ä¹æ¯å¦æ¤ã
-
- ï¼IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY
- PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
- DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS
- SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA
- HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.ï¼
-
- å å·å¤§å¦æç¡®æ¾å¼ä»»ä½ä¿è¯ï¼åæ¬ä½ä¸å±éäºæä¸ç¹å®ç¨éçåä¸åå©ççéå«ä¿è¯ã
- è¿éæä¾çè¿ä»½è½¯ä»¶æ¯åºäºâå½ä½æ¯âçåºç¡çï¼å èå å·å¤§å­
- ¦æ²¡æè´£ä»»æä¾ç»´æ¤ï¼æ¯æï¼æ´æ°ï¼å¢å¼ºæèä¿®æ¹çæå¡ã
-
- ï¼THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
- PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
- CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
- UPDATES, ENHANCEMENTS, OR MODIFICATIONS.ï¼
-
- 1.4)PostgreSQL å¯ä»¥è¿è¡å¨åªäºæä½ç³»ç»å¹³å°ä¸ï¼
-
- ä¸è¬è¯´æ¥ï¼ä»»ä½ç°å¨å¯¹ UNIX å¼å®¹çæä½ç³»ç»ä¹ä¸é½è½è¿è¡PostgreSQL
- ãå¨å®è£æåéååºäºå叿¶ç»è¿æç¡®æµè¯çå¹³å°ã
-
- PostgreSQlä¹å¯ä»¥ç´æ¥è¿è¡å¨åºäºå¾®è½¯Windows-NTçæä½ç³»ç»ï¼å¦Win2000
- SP4ï¼WinXP å Win2003ï¼å·²å¶ä½å®æçå®è£åå¯ä»
- http://pgfoundry.org/projects/pginstallerä¸è½½ï¼åºäºMSDOSçWindowsæä½ç³
- »ç» ï¼Win95ï¼Win98ï¼WinMeï¼éè¦éè¿Cygwin模æç¯å¢è¿è¡PostgreSQLã
-
- 忶乿ä¸ä¸ªä¸ºNovell Netware 6å¼åççæ¬å¯ä»
- http://forge.novell.comè·åï¼ä¸ºOS/2(eComStation)å¼åççæ¬å¯ä»
- http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
- SQL&stype=all&sort=type&dir=%2F ä¸è½½ã
-
- 1.5) æä»åªéè½å¾å°PostgreSQLï¼
-
- éè¿æµè§å¨å¯ä»http://www.postgresql.org/ftp/ä¸è½½ï¼ä¹å¯éè¿FTPï¼ä»
- ftp://ftp.PostgreSQL.org/pub/ç«ç¹ä¸è½½ã
-
- 1.6) ææ°ççPostgreSQLæ¯ä»ä¹ï¼
-
- PostgreSQL ææ°ççæ¬æ¯çæ¬ 8.2.1 ã
-
- æä»¬è®¡åæ¯å¹´åå¸ä¸ä¸ªä¸»è¦åçº§çæ¬ï¼æ¯å 个æåå¸ä¸ä¸ªå°çæ¬ã
-
- 1.7) æä»åªéè½å¾å°å¯¹PostgreSQLçæ¯æï¼
-
- PostgreSQL社åºéè¿é®ä»¶å表为å¶å¤§å¤æ°ç¨æ·æä¾å¸®å©ï¼è®¢éé®ä»¶å表ç主
- ç«ç¹æ¯
- http://www.postgresql.org/community/lists/ï¼ä¸è¬æåµä¸ï¼åå å¥General æ
- Bugé®ä»¶å表æ¯ä¸ä¸ªè¾å¥½çå¼å§ã
-
- 主è¦çIRCé¢éæ¯å¨FreeNode(irc.freenode.net)ç#postgresqlï¼ä¸ºäºè¿ä¸æ­
- ¤é¢éï¼å¯ä»¥ä½¿ç¨UNIXç¨åºircï¼å¶æä»¤æ ¼å¼ï¼ irc -c '#postgresql'
- "$USER" irc.freenode.net ï¼æè使ç¨å¶ä»IRC客æ·ç«¯ç¨åºã卿¤ç½ç»ä¸è¿å­
- å¨ä¸ä¸ªPostgreSQLç西ççé¢é(#postgersql-es)åæ³è¯é¢é
- (#postgresql-fr)ãåæ ·å°ï¼å¨EFNETä¸ä¹æä¸ä¸ªPostgreSQLç交æµé¢éã
-
- 坿ä¾å䏿¯æçå¬å¸å表å¯å¨http://techdocs.postgresql.org/companies.phpæµ
- è§ã
-
- 1.8) æå¦ä½æäº¤ä¸ä¸ªBUGæ¥åï¼
-
- å¯è®¿é®
- http://www.postgresql.org/support/submitbugï¼å¡«åBug䏿¥è¡¨æ ¼å³å¯ï¼åæ
- ·ä¹å¯è®¿é®ftpç«ç¹ftp://ftp.PostgreSQL.org/pub/
- æ£æ¥ææ æ´æ°çPostgreSQLçæ¬æè¡¥ä¸ã
-
- éè¿ä½¿ç¨Bugæäº¤è¡¨æ ¼ææ¯åå¾PostgreSQLé®ä»¶å表çBugé叏伿以ä¸ä¹ä¸åå¤ï
- ¼
- * ææäº¤å容䏿¯ä¸ä¸ªBugåå¶ä¸æ¯Bugçåå ã
- * ææäº¤å容æ¯ä¸ä¸ªå·²ç¥çBugå¹¶ä¸å·²ç»å å¥TODOå¾å¤çä»»å¡å表ã
- * ææäº¤çBugå·²å¨å½åçæ¬ä¸è¢«ä¿®æ£ã
- * ææäº¤çBug已修æ£ä½å°æªå°è¡¥ä¸å å¥ç°å¨çåå¸è½¯ä»¶åã
- * è¯·æ±æäº¤èæä¾æ´è¯¦ç»çä¿¡æ¯ï¼
- + æä½ç³»ç»
- + PostgreSQLçæ¬
- + å¯éç°Bugçæµè¯æ¡ä¾
- + è°è¯ä¿¡æ¯
- + è°è¯è·è¸ªè¾åº
- * ææäº¤å容æ¯ä¸ä¸ªæ°Bugï¼å°æ§è¡ä»¥ä¸å·¥ä½ï¼
- + å建ä¸ä¸ªæ°è¡¥ä¸å¹¶å°å¶å å¥ä¸ä¸ä¸ªä¸»è¦çæ¬ææ¯å°çæ¹è¿çæ¬ä¸ã
- + æ¤Bugææ¶ä¸è½ä¿®æ£ï¼å°è¢«å è³TODOå¾å¤çä»»å¡å表ã
-
- 1.9) æå¦ä½äºè§£å·²ç¥ç BUG ææç¼ºçåè½ï¼
-
- PostgreSQL æ¯æä¸ä¸ªæ©å±ç SQL:2003 çåéãåéæä»¬çTODO
- å表ï¼äºè§£å·²ç¥Bugå表ãæç¼ºçåè½åå°æ¥çå¼å计åã
-
- è¦æ±å¢å æ°åè½çç³è¯·é叏伿¶å°ä»¥ä¸ä¹ä¸çåå¤ï¼
- * 该åè½å·²å å¥TODOå¾å¤çä»»å¡å表ã
- * 该åè½ä¸æ¯å¿é¡»çï¼å 为ï¼
- + 宿¯ç°æçä¸ç¬¦åSQLæ åçæåè½çéå¤ã
- + 该åè½æ§ä¼å¤§å¤§å¢å 代ç ç夿ç¨åºï¼è带æ¥ç好夿¯å¾®ä¸è¶³éçã
- + 该åè½æ¯ä¸å®å¨ææ¯ä¸å¯é çã
- * 该åè½å°è¢«å å¥TODOå¾å¤çä»»å¡å表ã
-
- PostgreSQLä¸ä½¿ç¨Bugè·è¸ªç³»ç»ï¼å 为æä»¬åç°å¨é®ä»¶å表中
- ç´æ¥åå¤ä»¥åä¿è¯TODOä»»å¡åè¡¨æ»æ¯å¤äºææ°ç¶æçæ¹å¼å·¥ä½æç伿´é«ä¸äºãäºå®ä
- ¸ï¼Bugä¸ä¼å¨æä»¬ç软件ä¸åå¨å¾é¿æ¶é´ï¼
- 对影åå¾å¤ç¨æ·çBug乿»æ¯å¾å¿«ä¼è¢«ä¿®æ£ãå¯ä¸è½æ¾å°æææ¹è¿ãæé«åä¿®æ­
- £çå°æ¹æ¯CVSçæ¥å¿ä¿¡æ¯ï¼å³ä½¿æ¯å¨è½¯ä»¶æ°çæ¬çåå¸ä¿¡æ¯ä¸­
- ä¹ä¸ä¼ååºæ¯ä¸å¤çè½¯ä»¶æ´æ°ã
-
- 1.10) è½å¤è·åçææ°ææ¡£æåªäºï¼
-
- PostgreSQLåå«å¤§éçææ¡£ï¼ä¸»è¦æè¯¦ç»çåèæåï¼æå页åä¸äºçæµè¯ä¾åãåè§ /doc
- ç®å½ï¼è¯æ³¨ï¼åºä¸º $PGHOME/docï¼ã
- ä½ è¿å¯ä»¥å¨çº¿æµè§PostgreSQLçæåï¼å¶ç½åæ¯ï¼http://www.PostgreSQL.org/d
- ocsã
-
- æä¸¤æ¬å³äºPostgreSQLç书å¨çº¿æä¾ï¼å¨
- http://www.PostgreSQL.org/docs/awbook.html å
- http://www.commandprompt.com/ppbook/ ã 乿大éçPostgreSQL书ç±å¯ä¾è´­
- ä¹°ï¼å¶ä¸æä¸ºæµè¡ç䏿¬æ¯ç±Korry Douglasç¼åçãå¨
- http://techdocs.PostgreSQL.org/techdocs/bookreviews.phpä¸
- 䏿大éæå³PostgreSQL书ç±çç®ä»ã å¨
- http://techdocs.PostgreSQL.org/䏿¶éäºæå³PostgreSQLç大鿿¯æç« ã
-
- 客æ·ç«¯çå½ä»¤è¡ç¨åºpsqlæä¸äºä»¥ \d
- å¼å¤´çå½ä»¤ï¼å¯æ¾ç¤ºå³äºç±»åï¼æä½ç¬¦ï¼å½æ°ï¼èåçä¿¡æ¯ï¼ä½¿ç¨ \?
- å¯ä»¥æ¾ç¤ºææå¯ç¨çå½ä»¤ã
-
- æä»¬ç web ç«ç¹å嫿´å¤çææ¡£ã
-
- 1.11) æåºè¯¥ææ ·å¦ä¹ SQL ï¼
-
- é¦åèèä¸è¿°æå°çä¸PostgreSQLç¸å³ç书ç±ï¼å¦å¤ä¸æ¬æ¯Teach Yourself SQL in
- 21 Days, Second Editionï¼å¶è¯¦ç»ä»ç»çç½åæ¯
- http://members.tripod.com/er4ebus/sql/index.htmï¼
- æä»¬ç许å¤ç¨æ·å欢The Practical SQL Handbookï¼ Bowman, Judith S.
- ç¼åï¼Addison-Wesleyå¬å¸åºçï¼å¶ä»çå忬¢ The Complete Reference SQL,
- Groff ç¼åï¼McGraw-Hillå¬å¸åºçã
-
- å¨ä¸åç½åä¸ä¹æå¾å¥½çæç¨ï¼ä»ä»¬æ¯
- * http://www.intermedia.net/support/sql/sqltut.shtm
- * http://sqlcourse.com.
- * http://www.w3schools.com/sql/default.asp
- * http://mysite.verizon.net/Graeme_Birchall/id1.html
-
- 1.12)å¦ä½æäº¤è¡¥ä¸ææ¯å å¥å¼åéä¼ï¼
-
- è¯¦è§ å¼å人å常è§é®é¢ (Developer's FAQ) ã
-
- 1.13)PostgreSQLåå¶ä»æ°æ®åºç³»ç»æ¯èµ·æ¥å¦ä½ï¼
-
- è¯ä»·è½¯ä»¶æå¥½å ç§æ¹æ³ï¼åè½ï¼æ§è½ï¼å¯é æ§ï¼æ¯æåä»·æ ¼ã
-
- åè½
- PostgreSQL æ¥æå¤§ååç¨æ°æ®åºæå¤çåè½ï¼ä¾å¦ï¼äºå¡ï¼å­
- æ¥è¯¢ï¼è§¦åå¨ï¼è§å¾ï¼å¤é®åè宿´æ§å夿çéå®çã
- æä»¬è¿æä¸äºå®ä»¬æ²¡æçç¹æ§ï¼å¦ç¨æ·å®ä¹ç±»åï¼ç»§æ¿ï¼è§ååå¤çæ¬å¹¶è
- ¡æ§å¶ä»¥åå°éçäºç¨çã
-
- æ§è½
- PostgreSQLåå¶ä»åç¨å弿ºçæ°æ®åºå·æç±»ä¼¼çæ§è½ã对æäºå¤ç宿¯è¾å¿«
- ï¼å¯¹å¶ä»ä¸äºå¤ç宿¯è¾æ¢ã ä¸å¶ä»æ°æ®åºç¸æ¯ï¼æä»¬çæ§è½ä¼å£é常å¨
- +/- 10%ä¹é´ã
-
- å¯é æ§
- æä»¬é½ç¥éæ°æ®åºå¿é¡»æ¯å¯é çï¼å¦åå®å°±ä¸ç¹ç¨é½æ²¡æãæä»¬åªååå°åå¸
- ç»è¿è®¤çæµè¯çï¼ç¼ºé·æå°ç稳å®ä»£ç ãæ¯ä¸ªçæ¬è³å°æä¸ä¸ªæç beta
- æµè¯æ¶é´ï¼å¹¶ä¸æä»¬çåå¸å岿¾ç¤ºæä»¬å¯ä»¥æä¾ç¨³å®çï¼ç¢åºçï¼å¯ç¨ä
- ºç产使ç¨ççæ¬ãæä»¬ç¸ä¿¡å¨è¿æ¹é¢æä»¬ä¸å¶ä»çæ°æ®åºè½¯ä»¶æ¯ç¸å½çã
-
- æ¯æ
- æä»¬çé®ä»¶å表æä¾ä¸ä¸ªé常大çå¼å人ååç¨æ·çç»ä»¥å¸®å©è§£å³æç¢°å
- °çä»»ä½é®é¢ãæä»¬ä¸è½ä¿è¯æ»æ¯è½è§£å³é®é¢ï¼ç¸æ¯ä¹ä¸ï¼åç¨æ°æ®åºè½¯
- ä»¶ä¹å¹¶ä¸æ¯æ»è½å¤æä¾è§£å³æ¹æ³ã
- ç´æ¥ä¸å¼å人åï¼ç¨æ·ç¾¤ï¼æååæºç¨åºæ¥è§¦ä½¿PostgreSQLçæ¯ææ¯å¶ä»æ°
- æ®åºè¿è¦å¥½ãè¿æä¸äºå䏿§çå¨é¢ææ¯æ¯æï¼å¯ä»¥ç»æä¾ç»é£äºéè¦ç人ãï¼
- åé1.7 å°èï¼
-
- ä»·æ ¼
- æä»¬å¯¹ä»»ä½ç¨éé½åè´¹ï¼åæ¬åç¨åéåç¨ç®çã
- ä½ å¯ä»¥ä¸å éå¶å°åä½ ç产åéå 奿们ç代ç ï¼é¤äºé£äºæä»¬å¨ä¸é¢çç
- æå£°æé声æç BSDçæä¹å¤çå容ã
-
- 1.14) PostgreSQLå¯ä»¥å¤çæè¿å个å½å®¶å¤æ¶å¶çååå?
-
- PostgreSQL 8.0ä¹åççæ¬æ¯ä½¿ç¨æä½ç³»ç»ä¸­
- çæ¶åºæ°æ®åºæ¥å¤ç夿¶å¶çä¿¡æ¯ï¼èª8.0çå以åççæ¬PostgreSQLä¼èªèº«å«æææ°çæ
- ¶åºä¿¡æ¯ã
- _________________________________________________________________
-
-ç¨æ·å®¢æ·ç«¯é®é¢
-
- 2.1) æä»¬å¯ä»¥ç¨ä»ä¹è¯è¨åPostgreSQLæäº¤éï¼
-
- PostgreSQL(缺çæåµ)åªå®è£æCåååµå¼Cçæ¥å£ï¼å¶ä»çæ¥å£é½æ¯ç¬ç«ç项ç®ï¼è½å¤
- åå«ä¸è½½ï¼è¿äºæ¥å£é¡¹ç®ç¬ç«ç好å¤
- æ¯ä»ä»¬å¯ä»¥æåèªçåå¸è®¡åååèªç¬ç«çå¼åç»ã
-
- ä¸äºç¼ç¨è¯­
- è¨å¦PHPé½æè®¿é®PostgreSQLçæ¥å£ï¼PerlãTCLãPython以åå¾å¤å¶ä»è¯è¨çæ¥å£å¨
- http://gborg.postgresql.orgç½ç«ä¸çDrivers/Interfaceså°è坿¾å°ï¼
- å¹¶ä¸éè¿Internetå¾å®¹ææç´¢å°ã
-
- 2.2) æä»ä¹å·¥å·å¯ä»¥æPostgreSQLç¨äº Web 页é¢ï¼
-
- ä¸ä¸ªä»ç»ä»¥æ°æ®åºä¸ºåå°çæºä¸éçç«ç¹æ¯ï¼http://www.webreview.comã
-
- å¯¹äº Web éæï¼PHP æ¯ä¸ä¸ªæå¥½çæ¥å£ãå®å¨http://www.php.net/ã
-
- 对äºå¤æçä»»å¡ï¼å¾å¤äººéç¨ Perl æ¥å£å 使ç¨CGI.pmçDBD::Pg æ mod_perl ã
-
- 2.3)PostgreSQLæ¥æå¾å½¢ç¨æ·çé¢åï¼
-
- åä¸ç¨æ·ææ¯å¼æºå¼å人åè½æ¾å°å¾å¤çæå³PostgreSQLçGUIå¾å½¢å·¥å·è½¯ä»¶ï¼å¨
- PostgreSQLç¤¾åºææ¡£æä¸ä¸ªè¯¦ç»çå表ã
- _________________________________________________________________
-
-ç³»ç»ç®¡çé®é¢
-
- 3.1)æææ ·è½æPostgreSQLè£å¨ /usr/local/pgsql 以å¤çå°æ¹ï¼
-
- å¨è¿è¡ configure æ¶å ä¸ --prefix é项ã
-
- 3.2) æå¦ä½æ§å¶æ¥èªå¶ä»çµèçè¿æ¥ï¼
-
- 缺çæåµä¸ï¼PostgreSQLåªå许æ¥èªæ¬æºä¸éè¿ unix å奿¥åæTCP/IPæ¹å¼çè¿æ¥ã
- ä½ åªæå¨ä¿®æ¹äºéç½®æä»¶postgresql.conf中
- çlisten_addressesï¼ä¸ä¹å¨éç½®æä»¶$PGDATA/pg_hba.conf䏿å¼äº
- åºäºè¿ç¨çµèï¼ host-based
- ï¼ç身份认è¯ï¼å¹¶éæ°å¯å¨PostgreSQLï¼å¦åå¶ä»çµèæ¯ä¸è½ä¸ä½ çPostgreSQL
- æå¡å¨è¿è¡è¿æ¥çã
-
- 3.3) æææ ·è°æ´æ°æ®åºå¼æä»¥è·å¾æ´å¥½çæ§è½ï¼
-
- æä¸ä¸ªä¸»è¦æ¹é¢å¯ä»¥æåPostgreSQLçæ½è½ã
-
- æ¥è¯¢æ¹å¼çåå
- è¿ä¸»è¦æ¶åä¿®æ¹æ¥è¯¢æ¹å¼ä»¥è·åæ´å¥½çæ§è½:
-
- + å建索å¼ï¼åæ¬è¡¨è¾¾å¼åé¨åç´¢å¼ï¼
- + 使ç¨COPYè¯å¥ä»£æ¿å¤ä¸ªInsertè¯å¥ï¼
- + å°å¤ä¸ªSQLè¯å¥ç»æä¸ä¸ªäºå¡ä»¥åå°æäº¤äºå¡çå¼éï¼
- + ä»ä¸ä¸ªç´¢å¼ä¸æå夿¡è®°å½æ¶ä½¿ç¨CLUSTERï¼
- + ä»ä¸ä¸ªæ¥è¯¢ç»æä¸ååºé¨åè®°å½æ¶ä½¿ç¨LIMITï¼
- + 使ç¨é¢ç¼è¯å¼æ¥è¯¢ï¼Prepared Query)ï¼
- + 使ç¨ANALYZEä»¥ä¿æç²¾ç¡®çä¼åç»è®¡ï¼
- + å®æä½¿ç¨ VACUUM æ pg_autovacuum
- + è¿è¡å¤§éæ°æ®æ´æ¹æ¶åå é¤ç´¢å¼ï¼ç¶åé建索å¼ï¼
-
- æå¡å¨çéç½®
- éç½®æä»¶postgres.conf中
- çå¾å¤è®¾ç½®é½ä¼å½±åæ§è½ï¼ææåæ°çå表å¯è§ï¼
- 管çåæå/æ°æ®åºæå¡å¨è¿è¡ç¯å¢/æ°æ®åºæå¡å¨è¿è¡éç½®ï¼
- æå³åæ°çè§£éå¯è§ï¼http://www.varlena.com/varlena/GeneralBits/Tid
- bits/annotated_conf_e.html å
- http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.htmlã
-
- 硬件çéæ©
- è®¡ç®æºç¡¬ä»¶å¯¹æ§è½çå½±å坿µè§
- http://candle.pha.pa.us/main/writings/pgsql/hw_performance/inde
- x.html å http://www.powerpostgresql.com/PerfList/ã
-
- 3.4)PostgreSQLéå¯ä»¥è·å¾ä»ä¹æ ·çè°è¯ç¹æ§ï¼
-
- PostgreSQL æå¾å¤ç±»ä¼¼ log_*
- çæå¡å¨éç½®åéå¯ç¨äºæ¥è¯¢çæå°åè¿ç¨ç»è®¡ï¼èè¿äºå·¥ä½å¯¹è°è¯åæ§è½æµè¯å¾æå¸
- ®å©ã
-
- 3.5) 为ä»ä¹å¨è¯å¾è¿æ¥æ¶æ¶å°âSorry, too many
- clientsï¼å·²æå¤ªå¤ç¨æ·è¿æ¥ï¼âæ¶æ¯ï¼
-
- è¿è¡¨ç¤ºä½ 已达å°ç¼ºç100个并ååå°è¿ç¨æ°çéå¶ï¼ä½ éè¦éè¿ä¿®æ¹postgres
- ql.confæä»¶ä¸çmax_connections弿¥
- å¢å postmasterçåå°å¹¶åå¤çæ°ï¼ä¿®æ¹åééæ°å¯å¨postmasterã
-
- 3.6)PostgreSQLçå级è¿ç¨æåªäºå容 ï¼
-
- PostgreSQL å¼åç»å¯¹æ¯æ¬¡å°çæ¬çå级主è¦åªåäºä¸äºBugä¿®æ£å·¥ä½ï¼å æ¤ä»
- 7.4.8 åçº§å° 7.4.9 ä¸éè¦ dump å restoreï¼ä»éè¦åæ­
- ¢æ°æ®åºæå¡å¨ï¼å®è£æ´æ°åç软件åï¼ç¶åé坿å¡å¨å³å¯ã
-
- ææPostgreSQLçç¨æ·åºè¯¥å¨ææ¥è¿ï¼ä½ æä½¿ç¨çä¸»çæ¬ï¼çå°æ¹è¿çæ¬åå¸å°½å¿«åç
- º§ãå°½ç®¡æ¯æ¬¡å级å¯è½é½æä¸ç¹é£é©ï¼PostgreSQLçå°æ¹è¿çä»ä»æ¯è®¾è®¡ç¨æ¥ä
- ¿®æ­
- £ä¸äºBugçï¼ä»£ç æ¹å¨è¾å°ï¼æä»¥é£é©è¿æ¯å¾å°çãPostgreSQL社åºè®¤ä¸ºä¸è¬æ
- åµä¸ä¸å级çé£é©è¿æ¯å¤äºå级çã
-
- ä¸»çæ¬çå级ï¼ä¾å¦ä» 7.3 å° 7.4ï¼é常ä¼ä¿®æ¹ç³»ç»è¡¨åæ°æ®è¡¨çå鍿 ¼å¼ã
- è¿äºæ¹åä¸è¬æ¯è¾å¤æï¼å æ¤æä»¬ä¸ç»´ææ°æ®æä»¶çååå¼å®¹æ§ãå æ¤ä»èçæ¬ä¸­
- è¿è¡æ°æ®å¯¼åºï¼dumpï¼/ç¶å卿°çæ¬ä¸­
- è¿è¡æ°æ®å¯¼å¥ï¼reloadï¼å¯¹ä¸»çæ¬çå级æ¯å¿é¡»çã
-
- 3.7)(使ç¨PostgreSQL)æéè¦ä½¿ç¨ä»ä¹è®¡ç®æºç¡¬ä»¶ ï¼
-
- ç±äºè®¡ç®æºç¡¬ä»¶å¤§å¤æ°æ¯å¼å®¹çï¼äººä»¬æ»æ¯å¾åäºç¸ä¿¡ææè®¡ç®æºç¡¬ä»¶è
- ´¨é乿¯ç¸åçãäºå®ä¸ä¸æ¯ï¼ ECC RAMï¼å¸¦å¥å¶æ ¡éªçååï¼ï¼SCSI
- ï¼ç¡¬çï¼åä¼è´¨çä¸»æ¿æ¯ä¸äºä¾¿å®è´§è¦æ´å å¯é ä¸å·ææ´å¥½çæ§è½ãPostgreSQL
- å ä¹å¯ä»¥è¿è¡å¨ä»»ä½ç¡¬ä»¶ä¸ï¼
- ä½å¦æå¯é æ§åæ§è½å¯¹ä½ çç³»ç»å¾éè¦ï¼ä½ å°±éè¦å¨é¢çç ç©¶ä¸ä¸ä½ ç硬件éç
- ½®äºã卿们çé®ä»¶å表ä¸ä¹æå³äº 硬件éç½®åæ§ä»·æ¯ç讨论ã
- _________________________________________________________________
-
-æä½é®é¢
-
- 4.1) å¦ä½åªéæ©ä¸ä¸ªæ¥è¯¢ç»æç头å è¡ï¼ææ¯éæºçä¸è¡ï¼
-
- å¦æä½ åªæ¯è¦æåå è¡æ°æ®ï¼å¹¶ä¸ä½ 卿§è¡æ¥è¯¢ä¸­
- ç¥éç¡®åçè¡æ°ï¼ä½ å¯ä»¥ä½¿ç¨LIMITåè½ã 妿æä¸ä¸ªç´¢å¼ä¸ ORDER BY中
- çæ¡ä»¶å¹éï¼PostgreSQL å¯è½å°±åªå¤çè¦æ±çå¤´å æ¡è®°å½ï¼
- ï¼å¦åå°å¯¹æ´ä¸ªæ¥è¯¢è¿è¡å¤çç´å°çæéè¦çè¡ï¼ã妿卿§è¡æ¥è¯¢åè½æ¶ä¸ç¥éç¡®å
- çè®°å½æ°ï¼ å¯ä½¿ç¨æ¸¸æ (cursor)åFETCHåè½ã
-
- å¯ä½¿ç¨ä»¥ä¸æ¹æ³æåä¸è¡éæºè®°å½çï¼
- SELECT cols
- FROM tab
- ORDER BY random()
- LIMIT 1 ;
-
- 4.2)
- å¦ä½æ¥ç表ãç´¢å¼ãæ°æ®åºä»¥åç¨æ·çå®ä¹ï¼å¦ä½æ¥çpsqléç¨å°çæ¥è¯¢æä»¤å¹¶æ¾ç¤ºå®ä»¬
- ï¼
-
- å¨psqlä¸ä½¿ç¨ \dt å½ä»¤æ¥æ¾ç¤ºæ°æ®è¡¨çå®ä¹ï¼è¦äºè§£psql中
- ç宿´å½ä»¤å表å¯ä½¿ç¨\? ï¼å¦å¤ï¼ä½ ä¹å¯ä»¥é读 psql çæºä»£ç
- æä»¶pgsql/src/bin/psql/describe.cï¼å®åæ¬ä¸ºçæpsqlåææ å½ä»¤çè¾åºçææ SQL
- å½ä»¤ãä½ è¿å¯ä»¥å¸¦ -E é项å¯å¨ psqlï¼ è¿æ ·å®å°æå°åºä½ å¨psql中
- æç»åºçå½ä»¤æ§è¡æ¶çåé¨å®é使ç¨çSQLæ¥è¯¢è¯­
- å¥ãPostgreSQL乿ä¾äºä¸ä¸ªå¼å®¹SQLçINFORMATION SCHEMAæ¥å£ï¼
- ä½ å¯ä»¥ä»è¿éè·åå³äºæ°æ®åºçä¿¡æ¯ã
-
- å¨ç³»ç»ä¸ä¹æä¸äºä»¥pg_ æå¤´çç³»ç»è¡¨ä¹æè¿°äºè¡¨çå®ä¹ã
-
- ä½¿ç¨ psql -l æä»¤å¯ä»¥ååºææçæ°æ®åºã
-
- ä¹å¯ä»¥æµè§ä¸ä¸
- pgsql/src/tutorial/syscat.sourceæä»¶ï¼å®å举äºå¾å¤å¯ä»æ°æ®åºç³»ç»è¡¨ä¸
- è·åä¿¡æ¯çSELECTè¯æ³ã
-
- 4.3) å¦ä½æ´æ¹ä¸ä¸ªåæ®µçæ°æ®ç±»åï¼
-
- å¨8.0çæ¬éæ´æ¹ä¸ä¸ªåæ®µçæ°æ®ç±»åå¾å®¹æï¼å¯ä½¿ç¨ ALTER TABLE ALTER
- COLUMN TYPE ã
-
- å¨ä»¥åççæ¬ä¸ï¼å¯ä»¥è¿æ ·åï¼
- BEGIN;
- ALTER TABLE tab ADD COLUMN new_col new_data_type;
- UPDATE tab SET new_col = CAST(old_col AS new_data_type);
- ALTER TABLE tab DROP COLUMN old_col;
- COMMIT;
-
- ä½ ç¶åå¯ä»¥ä½¿ç¨VACUUM FULL tab æä»¤æ¥ä½¿ç³»ç»æ¶åæ ææ°æ®æå ç¨ç空é´ã
-
- 4.4) åæ¡è®°å½ï¼å个表ï¼åä¸ªæ°æ®åºçæå¤§éå¶æ¯å¤å°ï¼
-
- ä¸é¢æ¯ä¸äºéå¶ï¼
-
- åä¸ªæ°æ®åºæå¤§å°ºå¯¸ï¼ æ éå¶ï¼å·²å卿 32TB çæ°æ®åºï¼
- å个表çæå¤§å°ºå¯¸ï¼ 32 TB
- ä¸è¡è®°å½çæå¤§å°ºå¯¸ï¼ 1.6 TB
- ä¸ä¸ªå段çæå¤§å°ºå¯¸? 1 GB
- ä¸ä¸ªè¡¨éæå¤§è¡æ°ï¼ æ éå¶
- ä¸ä¸ªè¡¨éæå¤§åæ°ï¼ 250-1600 ï¼ä¸åç±»åæå³ï¼
- ä¸ä¸ªè¡¨éçæå¤§ç´¢å¼æ°éï¼ æ éå¶
-
- å½ç¶ï¼å®é䏿²¡æçæ£çæ éå¶ï¼è¿æ¯è¦åå¯ç¨ç£ç空é´ãå¯ç¨åå/交æ¢åºçå¶çº¦ã
- äºå®ä¸ï¼å½ä¸è¿°è¿äºæ°å¼åå¾å¼å¸¸å°å¤§æ¶ï¼ç³»ç»æ§è½ä¹ä¼åå¾å¤§å½±åã
-
- å表çæå¤§å¤§å° 32 TB
- ä¸éè¦æä½ç³»ç»å¯¹å个æä»¶ä¹éè¿ä¹å¤§çæ¯æã大表ç¨å¤ä¸ª 1 GB çæä»¶å­
- å¨ï¼å æ¤æä»¶ç³»ç»å¤§å°çéå¶æ¯ä¸éè¦çã
-
- å¦æç¼ºççå大å°å¢é¿å° 32K ï¼æå¤§çå表大å°åæå¤§åæ°è¿å¯ä»¥å¢å å°ååã
-
- æä¸ä¸ªéå¶å°±æ¯ä¸è½å¯¹å¤§å°å¤äº2000å­
- èçåå建索å¼ã幸è¿å°æ¯è¿æ ·çç´¢å¼å¾å°ç¨å°ãéè¿å¯¹å¤å­
- èåçå容è¿è¡MD5åç¨è¿ç®ç»æè¿è¡å½æ°ç´¢å¼å¯å¯¹åçå¯ä¸æ§å¾å°ä¿è¯ï¼
- å¹¶ä¸å¨ææ£ç´¢å许对åä¸çåè¯è¿è¡æç´¢ã
-
- 4.5) åå¨ä¸ä¸ªå¸åçææ¬æä»¶éçæ°æ®éè¦å¤å°ç£ç空é´ï¼
-
- ä¸ä¸ª Postgres æ°æ®åºï¼å­
- å¨ä¸ä¸ªææ¬æä»¶ï¼æå ç¨çç©ºé´æå¤å¯è½éè¦ç¸å½äºè¿ä¸ªææ¬æä»¶èªèº«å¤§å°5åçç£
- ç空é´ã
-
- ä¾å¦ï¼å设æä¸ä¸ª 100,000 è¡çæä»¶ï¼æ¯è¡æä¸ä¸ªæ´æ°åä¸ä¸ªææ¬æè¿°ã
- åè®¾ææ¬ä¸²çå¹³åé¿åº¦ä¸º20åèãææ¬æä»¶å ç¨ 2.8 MBãå­
- æ¾è¿äºæ°æ®çPostgreSQLæ°æ®åºæä»¶å¤§çº¦æ¯ 6.4 MB:
- 28 åè: æ¯è¡ç头ï¼å¤§çº¦å¼ï¼
- 24 åè: ä¸ä¸ªæ´æ°ååæ®µåä¸ä¸ªææ¬ååæ®µ
- + 4 åè: 页é¢åæååç»çæé
- ----------------------------------------
- 56 åèæ¯è¡
-
- PostgreSQL æ°æ®é¡µç大尿¯ 8192 åè (8 KB)ï¼åï¼
-
- 8192 åèæ¯é¡µ
- ------------------- = 146 è¡/æ°æ®é¡µï¼åä¸åæ´ï¼
- 56 åèæ¯è¡
-
- 100000 æ°æ®è¡
- -------------------- = 685 æ°æ®é¡µï¼åä¸åæ´ï¼
- 146 è¡/æ°æ®é¡µ
-
- 685 æ°æ®é¡µ * 8192 åè/页 = 5,611,520 åèï¼5.6 MBï¼
-
- ç´¢å¼ä¸éè¦è¿ä¹å¤çé¢å¤æ¶èï¼ä½ä¹ç¡®å®åæ¬è¢«ç´¢å¼çæ°æ®ï¼å æ­
- ¤å®ä»¬ä¹å¯è½å¾å¤§ã
-
- 空å¼NULLåæ¾å¨ä½å¾ä¸ï¼å æ¤å ç¨å¾å°ç空é´ã
-
- 4.6) 为ä»ä¹æçæ¥è¯¢å¾æ¢ï¼ä¸ºä»ä¹è¿äºæ¥è¯¢æ²¡æå©ç¨ç´¢å¼ï¼
-
- å¹¶éæ¯ä¸ªæ¥è¯¢é½ä¼èªå¨ä½¿ç¨ç´¢å¼ãåªæå¨è¡¨ç大å°è¶è¿ä¸ä¸ªæå°å¼ï¼å¹¶ä¸æ¥
- 询åªä¼éä¸è¡¨ä¸è¾å°æ¯ä¾çè®°å½æ¶æä¼éç¨ç´¢å¼ã
- è¿æ¯å ä¸ºç´¢å¼æ«æå¼èµ·çéå³ç£çååå¯è½æ¯ç´æ¥å°è¯»å表ï¼é¡ºåºæ«æï¼æ´æ¢ã
-
- 为äºå¤æ­
- æ¯å¦ä½¿ç¨ç´¢å¼ï¼PostgreSQLå¿é¡»è·å¾æå³è¡¨çç»è®¡å¼ãè¿äºç»è®¡å¼å¯ä»¥ä½¿ç
- ¨ VACUUM ANALYZEï¼æ ANALYZE è·å¾ã 使ç¨ç»è®¡å¼ï¼ä¼åå¨ç¥é表中
- æå¤å°è¡ï¼å°±è½å¤æ´å¥½å°å¤ææ¯å¦å©ç¨ç´¢å¼ã
- ç»è®¡å¼å¯¹ç¡®å®ä¼åçè¿æ¥é¡ºåºåè¿æ¥æ¹æ³ä¹å¾æç¨ãå¨è¡¨çå容åçååæ¶ï¼åºå®æè¿
- è¡ç»è®¡å¼çæ´æ°æ¶éã
-
- ç´¢å¼é常ä¸ç¨äº ORDER BY
- ææ§è¡è¿æ¥ã对ä¸ä¸ªå¤§è¡¨ç䏿¬¡é¡ºåºæ«æåå䏿¬¡æåºé常æ¯ç´¢å¼æ«æè¦å¿«ãç¶
- èï¼å¦æå° LIMIT å ORDER BY
- ç»åå¨ä¸èµ·ä½¿ç¨çè¯ï¼é常å°ä¼ä½¿ç¨ç´¢å¼ï¼å ä¸ºè¿æ¶ä»è¿å表中
- çä¸å°é¨åè®°å½ã
-
- å¦æä½ ç¡®ä¿¡PostgreSQLçä¼åå¨ä½¿ç¨é¡ºåºæ«ææ¯ä¸æ£ç¡®çï¼ä½ å¯ä»¥ä½¿ç¨SET
- enable_seqscan TO 'off'æä»¤æ¥å³éé¡ºåºæ«æï¼
- ç¶å忬¡è¿è¡æ¥è¯¢ï¼ä½ å°±å¯ä»¥çåºä½¿ç¨ä¸ä¸ªç´¢å¼æ«ææ¯å¦ç¡®å®è¦å¿«ä¸äºã
-
- å½ä½¿ç¨éé符æä½ï¼ä¾å¦ LIKE æ ~ æ¶ï¼ç´¢å¼åªè½å¨ç¹å®çæåµä¸ä½¿ç¨ï¼
- * å符串çå¼å§é¨åå¿é¡»æ¯æ®éå符串ï¼ä¹å°±æ¯è¯´ï¼
- + LIKE 模å¼ä¸è½ä»¥ % æå¤´ã
- + ~ ï¼æ£å表达å¼ï¼æ¨¡å¼å¿é¡»ä»¥ ^ æå¤´ã
- * å符串ä¸è½ä»¥å¹éå¤ä¸ªåç¬¦çæ¨¡å¼ç±»æå¤´ï¼ä¾å¦ [a-e]ã
- * 大å°åæ å³çæ¥æ¾ï¼å¦ ILIKE å ~* çä¸ä½¿ç¨ç´¢å¼ï¼ä½å¯ä»¥ç¨ 4.8
- èæè¿°ç表达å¼ç´¢å¼ã
- * å¨å initdb æ¶å¿é¡»éç¨ç¼ºççæ¬å°è®¾ç½® C
- localeï¼å 为系ç»ä¸å¯è½ç¥éå¨éC localeæåµæ¶ä¸ä¸ä¸ªæå¤§å符æ¯ä»ä¹ã
- å¨è¿ç§æåµä¸ï¼ä½ å¯ä»¥å建ä¸ä¸ªç¹æ®çtext_pattern_opsç´¢å¼æ¥ç¨äºLIKE
- çç´¢å¼ã
-
- å¨8.0ä¹åççæ¬ä¸­
- ï¼é¤éè¦æ¥è¯¢çæ°æ®ç±»ååç´¢å¼çæ°æ®ç±»åç¸å¹éï¼å¦åç´¢å¼ç»å¸¸æ¯æªè¢«ç¨å°ï¼ç
- ¹å«æ¯å¯¹int2,int8åæ°å¼åçç´¢å¼ã
-
- 4.7) æå¦ä½æè½çå°æ¥è¯¢ä¼å卿¯ææ ·è¯ä¼°å¤çæçæ¥è¯¢ï¼
-
- åè EXPLAIN æå页ã
-
- 4.8) æææ ·åæ£åè¡¨è¾¾å¼æç´¢å大å°åæ å³çæ­
- £åè¡¨è¾¾å¼æ¥æ¾ï¼ææ ·å©ç¨ç´¢å¼è¿è¡å¤§å°åæ 峿¥æ¾ï¼
-
- æä½ç¬¦ ~ å¤çæ£å表达å¼å¹éï¼è ~* å¤ç大å°åæ å³çæ­
- £å表达å¼å¹éã大å°åæ å³ç LIKE åç§æä¸º ILIKEã
-
- 大å°åæ å³çç弿¯è¾é常ååï¼
- SELECT *
- FROM tab
- WHERE lower(col) = 'abc';
-
- è¿æ ·å°ä¸ä¼ä½¿ç¨æ åçç´¢å¼ã使¯å¯ä»¥å建ä¸ä¸ªå¨è¿ç§æåµä¸ä½¿ç¨ç表达å¼ç
- ´¢å¼:
- CREATE INDEX tabindex ON tab (lower(col));
-
- 妿ä¸è¿°ç´¢å¼å¨å建æ¶å å¥UNIQUE约æï¼è½ç¶ç´¢å¼å段èªèº«å容å¯ä»¥å­
- å¨å¤§å°åä¸éçå容ï¼ä½å¦ææUNIQUE约æåï¼è¿äºå容ä¸è½ä»ä»æ¯å¤§å°åä¸åï¼å¦åä
- ¼é æå²çªï¼ã为äºä¿è¯ä¸åçè¿ç§æåµï¼å¯ä»¥ä½¿ç¨CHECKçº¦ææ¡ä»¶ææ¯è§¦åå¨å¨å½
- 奿¶è¿è¡éå¶ã
-
- 4.9) å¨ä¸ä¸ªæ¥è¯¢éï¼æææ ·æ£æµä¸ä¸ªå段æ¯å¦ä¸º NULL ï¼æå¦ä½æè½åç¡®æåºèä¸è®ºæå­
- 段æ¯å¦å« NULL å¼ï¼
-
- ç¨ IS NULL å IS NOT NULL æµè¯è¿ä¸ªå段ï¼å·ä½æ¹æ³å¦ä¸ï¼
- SELECT *
- FROM tab
- WHERE col IS NULL;
-
- 为äºè½å¯¹å« NULLåæ®µæåºï¼å¯å¨ ORDER BY æ¡ä»¶ä¸ä½¿ç¨ IS NULLå IS NOT
- NULL ä¿®é¥°ç¬¦ï¼æ¡ä»¶ä¸ºç true å°æ¯æ¡ä»¶ä¸ºåfalse æå¨åé¢ï¼ä¸é¢çä¾å­
- å°±ä¼å°å« NULL çè®°å½æå¨ç»æçä¸é¢é¨åï¼
- SELECT *
- FROM tab
- ORDER BY (col IS NOT NULL)
-
- 4.10) åç§å符类åä¹é´æä»ä¹ä¸åï¼
-
- ç±»å åé¨åç§° 说æ
- VARCHAR(n) varchar æå®äºæå¤§é¿åº¦ï¼åé¿å­
- 符串ï¼ä¸è¶³å®ä¹é¿åº¦çé¨åä¸è¡¥é½
- CHAR(n) bpchar å®é¿å符串ï¼å®éæ°æ®ä¸è¶³å®ä¹é¿åº¦æ¶ï¼ä»¥ç©ºæ ¼è¡¥é½
- TEXT text 没æç¹å«çä¸ééå¶ï¼ä»åè¡çæå¤§é¿åº¦éå¶ï¼
- BYTEA bytea åé¿åèåºåï¼ä½¿ç¨NULLåç¬¦ä¹æ¯å许çï¼
- "char" char å个å符
-
- å¨ç³»ç»è¡¨åå¨ä¸äºé误信æ¯éä½ å°çå°åé¨åç§°ã
-
- ä¸é¢æåçååç§ç±»åæ¯"varlena"ï¼åé¿ï¼ç±»åï¼ä¹å°±æ¯è¯´ï¼å¼å¤´çå个å­
- èæ¯é¿åº¦ï¼åé¢ææ¯æ°æ®ï¼ã äºæ¯å®éå ç¨çç©ºé´æ¯å£°æç大å°è¦å¤ä¸äºã
- ç¶èè¿äºç±»åå¦å®ä¹å¾é¿æ¶é½å¯ä»¥è¢«å缩åå¨ï¼å æ­
- ¤ç£ç空é´ä¹å¯è½æ¯é¢æ³çè¦å°ã
-
- VARCHAR(n) å¨åå¨éå¶äºæå¤§é¿åº¦çåé¿åç¬¦ä¸²æ¯æå¥½çã TEXT éç¨äºå­
- 卿大å¯è¾¾ 1Gå·¦å³ä½æªå®ä¹éå¶é¿åº¦çå符串ã
-
- CHAR(n) æéåäºåå¨é¿åº¦ç¸åçå符串ã CHAR(n)伿 ¹æ®æç»å®çå­
- 段é¿åº¦ä»¥ç©ºæ ¼è¡¥è¶³ï¼ä¸è¶³çåæ®µå容ï¼ï¼ è VARCHAR(n) åªå­
- 卿ç»å®çæ°æ®å容ã BYTEA ç¨äºåå¨äºè¿å¶æ°æ®ï¼å°¤å¶æ¯åå« NULL å­
- èçå¼ãè¿äºç±»åå·æå·®ä¸å¤çæ§è½ã
-
- 4.11.1) æææ ·å建ä¸ä¸ªåºåå·ææ¯èªå¨éå¢çåæ®µï¼
-
- PostgreSQL æ¯æ SERIAL æ°æ®ç±»åãï¼å­
- 段å®ä¹ä¸ºSERIALåï¼å°èªå¨å建ä¸ä¸ªåºåçæå¨ï¼ä¾å¦ï¼
- CREATE TABLE person (
- id SERIAL,
- name TEXT
- );
-
- ä¼èªå¨è½¬æ¢ä¸ºä»¥ä¸SQLè¯å¥ï¼
- CREATE SEQUENCE person_id_seq;
- CREATE TABLE person (
- id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
- name TEXT
- );
-
- åè create_sequence æå页è·åå³äºåºåçæå¨çæ´å¤ä¿¡æ¯ã
-
- 4.11.2) æå¦ä½è·å¾ä¸ä¸ªæå¥çåºåå·çå¼ï¼
-
- ä¸ç§æ¹æ³æ¯å¨æå¥ä¹ååç¨å½æ° nextval() ä»åºåå¯¹è±¡éæ£ç´¢åºä¸ä¸ä¸ª SERIAL
- å¼ï¼ç¶ååç¨æ¤å¼ç²¾ç¡®å°æå¥ãä½¿ç¨ 4.11.1 éçä¾è¡¨ï¼å¯ç¨ä¼ªç è¿æ ·æè¿°ï¼
- new_id = execute("SELECT nextval('person_id_seq')");
- execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
-
- è¿æ ·è¿è½å¨å¶ä»æ¥è¯¢ä¸ä½¿ç¨åæ¾å¨ new_id éçæ°å¼ï¼ä¾å¦ï¼ä½ä¸ºåç§ person
- 表çå¤é®ï¼ã 注æèªå¨å建ç SEQUENCE 对象çåç§°å°ä¼æ¯
- <table>_<serialcolumn>_seqï¼ è¿é table å serialcolumn
- å嫿¯ä½ ç表çåç§°åä½ ç SERIAL åæ®µçåç§°ã
-
- 类似çï¼å¨ SERIAL 对象缺çæå¥åä½ å¯ä»¥ç¨å½æ° currval() æ£ç´¢åèµå¼ç
- SERIAL å¼ï¼ä¾å¦ï¼
- execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
- new_id = execute("SELECT currval('person_id_seq')");
-
- 4.11.3) åæ¶ä½¿ç¨ currval() ä¼å¯¼è´åå¶ä»ç¨æ·çå²çªæåµåï¼
-
- ä¸ä¼ãcurrval() è¿åçæ¯ä½ æ¬æ¬¡ä¼è¯è¿ç¨æèµçå¼è䏿¯ææç¨æ·çå½åå¼ã
-
- 4.11.4) 为ä»ä¹ä¸å¨äºå¡å¼å¸¸ä¸æ¢åéç¨åºåå·å¢ï¼ä¸ºä»ä¹å¨åºåå·å段çåå¼ä¸åå¨é´æ­
- å¢ï¼
-
- ä¸ºäºæé«å¹¶åæ§ï¼åºåå·å¨éè¦çæ¶åèµäºæ­
- £å¨è¿è¡çäºå¡ï¼å¹¶ä¸å¨äºå¡ç»æä¹åä¸è¿è¡éå®ï¼ è¿å°±ä¼å¯¼è´å¼å¸¸ä¸­
- æ¢çäºå¡åï¼åºåå·ä¼åºç°é´éã
-
- 4.12) ä»ä¹æ¯ OID ï¼ä»ä¹æ¯ CTID ï¼
-
- PostgreSQL
- éåå»ºçæ¯ä¸è¡è®°å½é½ä¼è·å¾ä¸ä¸ªå¯ä¸çOIDï¼é¤éå¨å建表æ¶ä½¿ç¨WITHOUT
- OIDSé项ã OIDå建æ¶ä¼èªå¨çæä¸ä¸ª4åèçæ´æ°ï¼ææ OID
- å¨ç¸åºPostgreSQLæå¡å¨ä¸åæ¯å¯ä¸çã ç¶èï¼å®å¨è¶è¿40亿æ¶å°æº¢åºï¼ OIDæ­
- ¤åä¼åºç°éå¤ãPostgreSQL å¨å®çåé¨ç³»ç»è¡¨éä½¿ç¨ OID å¨è¡¨ä¹é´å»ºç«èç³»ã
-
- å¨ç¨æ·çæ°æ®è¡¨ä¸ï¼æå¥½æ¯ä½¿ç¨SERIAlæ¥ä»£æ¿OID
- å 为SERIALåªè¦ä¿è¯å¨å个表中
- çæ°å¼æ¯å¯ä¸çå°±å¯ä»¥äºï¼è¿æ ·å®æº¢åºçå¯è½æ§å°±é常å°äºï¼
- SERIAL8å¯ç¨æ¥ä¿å8åèçåºåæ°å¼ã
-
- CTID ç¨äºæ è¯å¸¦çæ°æ®åï¼å°åï¼åï¼ååï¼åç§»çç¹å®çç©çè¡ã CTID
- å¨è®°å½è¢«æ´æ¹æéè½½ååçæ¹åãç´¢å¼æ°æ®ä½¿ç¨å®ä»¬æåç©çè¡ã
-
- 4.13) 为ä»ä¹ææ¶å°é误信æ¯âERROR: Memory exhausted in AllocSetAlloc()âï¼
-
- è¿å¾å¯è½æ¯ç³»ç»çèæååç¨åäºï¼æèåæ ¸å¯¹æäºèµæºæè¾ä½çéå¶å¼ãå¨å¯å¨
- postmaster ä¹åè¯è¯ä¸é¢çå½ä»¤ï¼
- ulimit -d 262144
- limit datasize 256m
-
- åå³äºä½ ç¨ç
- shellï¼ä¸é¢å½ä»¤åªæä¸æ¡è½æåï¼ä½æ¯å®å°æä½ çè¿ç¨æ°æ®æ®µéå¶è®¾å¾æ¯è¾é«ï¼
- å èä¹è®¸è½è®©æ¥è¯¢å®æãè¿æ¡å½ä»¤åºç¨äºå½åè¿ç¨ï¼ä»¥åææå¨è¿æ¡å½ä»¤è¿è¡ååå
- »ºçåè¿ç¨ã
- å¦æä½ æ¯å¨è¿è¡SQL客æ·ç«¯æ¶å 为åå°è¿åäºå¤ªå¤çæ°æ®èåºç°é®é¢ï¼è¯·å¨è¿è¡
- 客æ·ç«¯ä¹åæ§è¡ä¸è¿°å½ä»¤ã
-
- 4.14) æå¦ä½æè½ç¥éæè¿è¡çPostgreSQLççæ¬ï¼
-
- ä» psql éï¼è¾å¥ SELECT version();æä»¤ã
-
- 4.15) æå¦ä½å建ä¸ä¸ªç¼ºç弿¯å½åæ¶é´çåæ®µï¼
-
- ä½¿ç¨ CURRENT_TIMESTAMPï¼
- CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
-
- 4.16) æææ ·è¿è¡ outer join ï¼å¤è¿æ¥ï¼ï¼
-
- PostgreSQL éç¨æ åç SQL è¯æ³æ¯æå¤è¿æ¥ãè¿éæ¯ä¸¤ä¸ªä¾åï¼
- SELECT *
- FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
- ææ¯
- SELECT *
- FROM t1 LEFT OUTER JOIN t2 USING (col);
-
- è¿ä¸¤ä¸ªçä»·çæ¥è¯¢å¨ t1.col å t2.col ä¸åè¿æ¥ï¼å¹¶ä¸è¿å t1 中
- æææªè¿æ¥çè¡ï¼é£äºå¨ t2 䏿²¡æå¹éçè¡ï¼ã å³[å¤]è¿æ¥ï¼RIGHT OUTER
- JOINï¼å°è¿å t2 䏿ªè¿æ¥çè¡ã å®å¨å¤è¿æ¥ï¼FULL OUTER JOINï¼å°è¿å t1 å t2
- 䏿ªè¿æ¥çè¡ã å³é®å OUTER å¨å·¦[å¤]è¿æ¥ãå³[å¤]è¿æ¥åå®å¨[å¤]è¿æ¥ä¸­
- æ¯å¯éçï¼æ®éè¿æ¥è¢«ç§°ä¸ºåè¿æ¥ï¼INNER JOINï¼ã
-
- 4.17) å¦ä½ä½¿ç¨æ¶åå¤ä¸ªæ°æ®åºçæ¥è¯¢ï¼
-
- 没æåæ³æ¥è¯¢å½åæ°æ®åºä¹å¤çæ°æ®åºã
- å 为PostgreSQLè¦å è½½ä¸æ°æ®åºç¸å³çç³»ç»ç®å½ï¼ç³»ç»è¡¨ï¼ï¼å æ­
- ¤è·¨æ°æ®åºçæ¥è¯¢å¦ä½æ§è¡æ¯ä¸å®çã
-
- éå å¢å¼æ¨¡åcontrib/dblinkå许éç¨å½æ°è°ç¨å®ç°è·¨åºæ¥è¯¢ãå½ç¶ç¨æ·ä¹å¯ä»¥
- åæ¶è¿æ¥å°ä¸åçæ°æ®åºæ§è¡æ¥è¯¢ç¶åå¨å®¢æ·ç«¯åå¹¶ç»æã
-
- 4.18) å¦ä½è®©å½æ°è¿åå¤è¡æå¤åæ°æ®ï¼
-
- å¨å½æ°ä¸è¿åæ°æ®è®°å½éçåè½æ¯å¾å®¹æä½¿ç¨çï¼è¯¦æåè§ï¼
- http://techdocs.postgresql.org/guides/SetReturningFunctions
-
- 4.19) 为ä»ä¹æå¨ä½¿ç¨PL/PgSQL彿°åå临æ¶è¡¨æ¶ä¼æ¶å°é误信æ¯ârelation with
- OID ##### does not existâï¼
-
- PL/PgSQLä¼ç¼å彿°çèæ¬å容ï¼ç±æ¤å¸¦æ¥çä¸ä¸ªä¸å¥½çå¯ä½ç¨æ¯è¥ä¸ä¸ª
- PL/PgSQL
- 彿°è®¿é®äºä¸ä¸ªä¸´æ¶è¡¨ï¼ç¶å该表被å é¤å¹¶é建äºï¼å忬¡è°ç¨è¯¥å½æ°å
- °å¤±è´¥ï¼ å 为ç¼åç彿°å容ä»ç¶æåæ§ç临æ¶è¡¨ãè§£å³çæ¹æ³æ¯å¨ PL/PgSQL
- ä¸ç¨EXECUTE
- 对临æ¶è¡¨è¿è¡è®¿é®ãè¿æ ·ä¼ä¿è¯æ¥è¯¢å¨æ§è¡åæ»ä¼è¢«éæ°è§£æã
-
- 4.20) ç®åæåªäºæ°æ®å¤å¶æ¹æ¡å¯ç¨ï¼
-
- âå¤å¶âåªæ¯ä¸ä¸ªæ¯è¯ï¼æå¥½å ç§å¤å¶ææ¯å¯ç¨ï¼æ¯ç§é½æä¼ç¹å缺ç¹ï¼
-
- 主/ä»å¤å¶æ¹å¼æ¯å许ä¸ä¸ªä¸»æå¡å¨æ¥å读/åçç³è¯·ï¼èå¤ä¸ªä»æå¡å¨åªè½æ¥åè
- ¯»/SELECTæ¥è¯¢çç³è¯·ï¼ ç®åææµè¡ä¸åè´¹ç主/ä»PostgreSQLå¤å¶æ¹æ¡æ¯
- Slony-I ã
-
- å¤ä¸ªä¸»æå¡å¨çå¤å¶æ¹å¼å许å°è¯»/åçç³è¯·åéç»å¤å°çè®¡ç®æºï¼è¿ç§æ¹å¼ç±äºé
- è¦å¨å¤å°æå¡å¨ä¹é´åæ¥æ°æ®åå¨
- å¯è½ä¼å¸¦æ¥è¾ä¸¥éçæ§è½æå¤±ï¼Pgclusteræ¯ç®åè¿ç§æ¹æ¡ 中
- æå¥½çï¼èä¸è¿å¯ä»¥åè´¹ä¸è½½ã
-
- 乿ä¸äºåä¸éä»è´¹ååºäºç¡¬ä»¶çæ°æ®å¤å¶æ¹æ¡ï¼æ¯æä¸è¿°åç§å¤å¶æ¨¡åã
-
- 4.21) ä¸ºä½æ¥è¯¢ç»ææ¾ç¤ºç表åæååä¸æçæ¥è¯¢è¯å¥ä¸çä¸åï¼ä¸ºä½å¤§åç¶æä¸è½ä¿çï¼
-
- æå¸¸è§çåå æ¯å¨å建表æ¶å¯¹è¡¨åææ¯åå使ç¨äºåå¼å·ââï¼å½ä½¿ç¨äºåå¼å·åï¼è¡
- ¨åæååï¼ç§°ä¸ºæ è¯ç¬¦ï¼å卿¶æ¯åºå 大å°åçï¼
- è¿æè°çä½ å¨æ¥è¯¢æ¶è¡¨åæååä¹åºä½¿ç¨åå¼å·ï¼ä¸äºå·¥å·è½¯ä»¶ï¼åpgAdminä¼å¨
- ååºå建表çæä»¤æ¶èªå¨å°å¨æ¯ä¸ªæ è¯ç¬¦ä¸å åå¼å·ã å æ­
- ¤ï¼ä¸ºäºæ è¯ç¬¦çç»ä¸ï¼ä½ åºè¯¥ï¼
- * å¨å建表æ¶é¿åå°æ è¯ç¬¦ä½¿ç¨åå¼å·å¼èµ·æ¥ã
- * 卿 è¯ç¬¦ä¸åªä½¿ç¨å°å忝ã
- * ï¼ä¸ºäºä¸å·²åå¨çæ è¯ç¬¦ç¸åï¼å¨æ¥è¯¢ä¸ä½¿ç¨åå¼å·å°æ è¯ç¬¦å¼èµ·æ¥ã
diff --git a/doc/FAQ_chinese_trad b/doc/FAQ_chinese_trad
deleted file mode 100644
index b1908535777..00000000000
--- a/doc/FAQ_chinese_trad
+++ /dev/null
@@ -1,793 +0,0 @@
-
- PostgreSQL 常è¦åé¡ï¼FAQï¼
-
- æè¿æ´æ°ï¼2007 å¹´ 2 æ 8 æ¥ ææäº 22:43:13 EST
- 䏿çæè¿æ´æ°ï¼2007 å¹´ 2 æ 12 æ¥ ææä¸ 12:00:04 CST
-
- ç¶åç¶è·äººå¡ï¼Bruce Momjian (pgman@candle.pha.pa.us)
- æ£é«ä¸æçç¶è·äººå¡ï¼éæç(ChaoYi, Kuo)ï¼kuo.chaoyi@gmail.comï¼
-
- æ¬ææªçææ°çæ¬å¯ä»¥å¨
- http://www.postgresql.org/files/documentation/faqs/FAQ.html æ¥çã
-
- è使¥ç³»çµ±å¹³å°ç¸éçåé¡å¯å¨ http://www.postgresql.org/docs/faq/
- 裡æ¾å°çæ¡ã
- _________________________________________________________________
-
-常è¦åé¡
-
- 1.1)PostgreSQL æ¯ä»éº¼ï¼è©²æéº¼ç¼é³ï¼
- 1.2)誰æ§å¶å管çPostgreSQL ï¼
- 1.3)PostgreSQLççæ¬æ¯ä»éº¼ï¼
- 1.4)PostgreSQLå¯ä»¥éè¡å¨åªäºä½æ¥ç³»çµ±å¹³å°ä¸ï¼
- 1.5)æå¾åªè£¡è½å¾å°PostgreSQLï¼
- 1.6)ææ°çç PostgreSQL æ¯ä»éº¼ï¼
- 1.7)æå¾åªè£¡è½å¾å°å° PostgreSQL çæ¯æï¼
- 1.8)æå¦ä½æäº¤ä¸å BUG å ±åï¼
- 1.9)æå¦ä½ç解已ç¥ç BUG ææ«ç¼ºçåè½ï¼
- 1.10)è½å¤ ç²åçææ°ææªæåªäºï¼
- 1.11)ææè©²ææ¨£å¸ç¿ SQL ï¼
- 1.12)å¦ä½æäº¤è£ä¸ææ¯å å¥éç¼éä¼ï¼
- 1.13)PostgreSQL åå¶ä»è³æåº«ç³»çµ±æ¯èµ·ä¾å¦ä½ï¼
- 1.14)PostgreSQL å¯ä»¥èçæè¿ååå家夿å¶çè®ååï¼
-
-ç¨æ¶å®¢æ¶ç«¯åé¡
-
- 2.1)æåå¯ä»¥ç¨ä»éº¼èªè¨å PostgreSQL é²è¡æºéï¼
- 2.2)æä»éº¼å·¥å·å¯ä»¥æ PostgreSQL ç¨æ¼ Web é é¢ï¼
- 2.3)PostgreSQL ææåå½¢ç¨æ¶çé¢(GUI)åï¼
-
-系統管çåé¡
-
- 3.1)æææ¨£æè½æ PostgreSQL è£å¨ /usr/local/pgsql 以å¤çå°æ¹ï¼
- 3.2)æå¦ä½æ§å¶ä¾èªå¶ä»é»è¦ç飿¥ï¼
- 3.3)æææ¨£èª¿æ´è³æåº«ä¼ºæå¨ä»¥ç²å¾æ´å¥½çæ§è½ï¼
- 3.4)PostgreSQL 裡å¯ä»¥ç²å¾ä»éº¼æ¨£çèª¿è©¦ç¹æ§ï¼
- 3.5)çºä»éº¼å¨è©¦å飿¥ç»éææ¶å°ãSorry, too many clientsã è¨æ¯ï¼
- 3.6)PostgreSQL çåç´éç¨æåªäºå§å®¹ï¼
- 3.7)(ä½¿ç¨ PostgreSQL )æéè¦ä½¿ç¨ä»éº¼é»è¦ç¡¬é«ï¼
-
-æä½åé¡
-
- 4.1) å¦ä½åªé¸æä¸åæ¥è©¢çµæçé å¹¾è¡ï¼ææ¯é¨æ©çä¸è¡ï¼
- 4.2) å¦ä½æ¥ç表ãç´¢å¼ãè³æåº«ä»¥åç¨æ¶çå®ç¾©ï¼å¦ä½æ¥ç psql
- 裡ç¨å°çæ¥è©¢æä»¤ä¸¦é¡¯ç¤ºå®åï¼
- 4.3) å¦ä½æ´æ¹ä¸åæ¬ä½çè³æé¡åï¼
- 4.4) å®çè¨éï¼å®ä¸è¡¨ï¼ä¸åè³æåº«çæå¤§éå¶æ¯å¤å°ï¼
- 4.5) åå²ä¸åå¸åçææ¬æä»¶è£¡çè³æéè¦å¤å°ç£ç¢ç©ºéï¼
- 4.6) çºä»éº¼æçæ¥è©¢å¾æ¢ï¼çºä»éº¼éäºæ¥è©¢æ²æå©ç¨ç´¢å¼ï¼
- 4.7) æå¦ä½æè½çå°æ¥è©¢åªå卿¯ææ¨£è©ä¼°èçæçæ¥è©¢çï¼
- 4.8) æææ¨£åæ£å表éå¼æç´¢å大å°å¯«ç¡éçæ­
- £å表é弿¥æ¾ï¼ææ¨£å©ç¨ç´¢å¼é²è¡å¤§å°å¯«ç¡éæ¥æ¾ï¼
- 4.9) å¨ä¸åæ¥è©¢è£¡ï¼æææ¨£æª¢æ¸¬ä¸åæ¬ä½æ¯å¦çº
- NULLï¼æå¦ä½æè½æºç¢ºæåºèä¸è«ææ¬ä½æ¯å¦å«NULLå¼ï¼
- 4.10) å種å符é¡åä¹éæä»éº¼ä¸åï¼
- 4.11.1) æææ¨£åµå»ºä¸ååºåèåææ¯èªåéå¢çæ¬ä½ï¼
- 4.11.2) æå¦ä½ç²å¾ä¸åæå¥çåºåèçå¼ï¼
- 4.11.3) åæä½¿ç¨ currval() æå°è´åå¶ä»ç¨æ¶çè¡çªææ³åï¼
- 4.11.4) çºä»éº¼ä¸å¨äºåç°å¸¸ä¸æ¢å¾éç¨åºåèå¢ï¼çºä»éº¼å¨åºåèæ¬ä½çåå¼ä¸­
- åå¨éæ·å¢ï¼
- 4.12) ä»éº¼æ¯ OIDï¼ä»éº¼æ¯ CTID ï¼
- 4.13) çºä»éº¼ææ¶å°é¯èª¤è³è¨ãERROR: Memory exhausted in
- AllocSetAlloc()ãï¼
- 4.14) æå¦ä½æè½ç¥éæéè¡ç PostgreSQL ççæ¬ï¼
- 4.15) æå¦ä½åµå»ºä¸åé è¨å¼æ¯ç¶åæéçæ¬ä½ï¼
- 4.16) å¦ä½å·è¡å¤é£æ¥ï¼outer joinï¼æ¥è©¢ï¼
- 4.17) å¦ä½å·è¡æ¶åå¤åè³æåº«çæ¥è©¢ï¼
- 4.18) å¦ä½è®å½æ¸è¿åå¤è¡æå¤åè³æï¼
- 4.19) çºä»éº¼æå¨ä½¿ç¨ PL/PgSQL 彿¸ååè¨æè¡¨æææ¶å°é¯èª¤è³è¨ãrelation
- with OID ##### does not existãï¼
- 4.20) ç®åæåªäºè³æè¤å¯«(replication)æ¹æ¡å¯ç¨ï¼
- 4.21) çºä½æ¥è©¢çµæé¡¯ç¤ºçè¡¨åææ¬åèæçæ¥è©¢èªå¥ä¸­
- çä¸åï¼çºä½å¤§å¯«çæä¸è½ä¿çï¼
- _________________________________________________________________
-
-常è¦åé¡
-
- 1.1) PostgreSQL æ¯ä»éº¼ï¼è©²æéº¼ç¼é³ï¼
-
- PostgreSQL è®ä½ Post-Gres-Q-Lï¼ææåä¹ç°¡ç¨±çºPostgres
- ãæ³è½ä¸ä¸å¶ç¼é³ç人å¡å¯å¾é裡ä¸è¼è²é³æä»¶ï¼ MP3 æ ¼å¼ ã
-
- PostgreSQL æ¯é¢åç®æ¨çéä¿è³æåº«ç³»çµ±ï¼å®å·æå³çµ±å業
- è³æåº«ç³»çµ±çææåè½ï¼åæå嫿å°å¨ä¸ä¸ä»£ DBMS
- 系統ç使ç¨çå¢å¼·ç¹æ§ãPostgreSQL
- æ¯èªç±åè²»çï¼ä¸¦ä¸æææºä»£ç¢¼é½å¯ä»¥ç²å¾ã
-
- PostgreSQL
- çéç¼éä¼ä¸»è¦çºå¿é¡èï¼ä»åéä½ä¸çåå°ä¸¦ééäºè¯ç¶²é²è¡è¯ç¹«ï¼éæ¯ä¸å社åéç¼é
- ç®ï¼å®ä¸è¢«ä»»ä½å¬å¸æ§å¶ã
- 妿³å å¥éç¼éä¼ï¼è«åè¦éç¼äººå¡å¸¸è¦åé¡ï¼FAQï¼
- http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html
-
- 1.2) 誰æ§å¶ PostgreSQL ï¼
-
- å¦æä½ å¨å°æ¾PostgreSQLçæéäººï¼ææ¯ä»éº¼ä¸­
- 央å§å¡æï¼ææ¯ä»éº¼æå±¬å¬å¸ï¼ä½ åªè½æ¾æ£äº---å çºä¸åä¹ä¸å­
- å¨ï¼ä½æåç確æä¸å æ ¸å¿å§å¡æåCVS管ççµï¼ä½éäºå·¥ä½çµç設
- ç«ä¸»è¦æ¯çºäºé²è¡ç®¡çå·¥ä½è䏿¯å°PostgreSQLé²è¡ç¨ä½å¼æ§å¶ï¼PostgreSQLé
- ç®æ¯ç±ä»»ä½äººå
- å¯åå çéç¼äººå¡ç¤¾ååææç¨æ¶æ§å¶çï¼ä½ æéè¦åçå°±æ¯è¨é±éµä»¶å表ï¼åèè¨è«å³å
- ¯ï¼è¦åèPostgreSQLçéç¼è©³è¦ éç¼äººå¡å¸¸åé¡ (Developer's FAQ) ç²åè³è¨ï¼ã
-
- 1.3) PostgreSQL ççæ¬æ¯ä»éº¼?
-
- PostgreSQLçç¼å¸éµå¾ç¶å¸ç BSD çæ¬ãå®åè¨±ç¨æ¶ä¸éç®çå°ä½¿ç¨
- PostgreSQLï¼çè³ä½ å¯ä»¥é·å® PostgreSQL
- èä¸å«æºä»£ç¢¼ä¹å¯ä»¥ï¼å¯ä¸çéå¶å°±æ¯ä½ ä¸è½å è»é«èªèº«åé¡èåæå追訴æ³å¾
- 責任ï¼å¦å¤å°±æ¯è¦æ±ææçè»é«æ·è²ä¸é 忬以ä¸çæ¬è²æã
- ä¸é¢å°±æ¯æåæä½¿ç¨çBSDçæ¬è²æå§å®¹ï¼
-
- PostgreSQL è³æåº«ç®¡ç系統
-
- é¨åçæ¬ï¼cï¼1996-2005ï¼PostgreSQL å¨çéç¼å°çµï¼é¨åçæ¬ï¼cï¼1994-1996
- å å·å¤§å¸è£äº
-
- ï¼Portions copyright (c) 1996-2005,PostgreSQL Global Development Group
- Portions Copyright (c) 1994-6 Regents of the University of
- Californiaï¼
-
- å許çºä»»ä½ç®ç使ç¨ï¼æ·è²ï¼ä¿®æ¹ååç¼éåè»é«åå®çææªè䏿¶åä»»ä½è²»ç¨ï¼
- 並ä¸ç¡é ç°½ç½²å æ¤èç¢ççèæï¼åææ¯ä¸é¢ççæ¬è²æåæ¬æ®µä»¥åä¸é¢å©æ®µæå­
- åºç¾å¨æææ·è²ä¸ã
-
- ï¼Permission to use, copy, modify, and distribute this software and
- its documentation for any purpose, without fee, and without a written
- agreement is hereby granted, provided that the above copyright notice
- and this paragraph and the following two paragraphs appear in all
- copies.ï¼
-
- å¨ä»»ä½ææ³ä¸ï¼å å·å¤§å¸é½ä¸æ¿æå ä½¿ç¨æ­
- ¤è»é«åå¶ææªèå°è´çå°ä»»ä½ç¶äºäººçç´æ¥çï¼
- 鿥çï¼ç¹æ®çï¼éå çæèç¸ä¼´èççæå£ï¼åæ¬å©çæå¤±ç責任ï¼å³ä½¿å å·å¤§å­
- ¸å·²ç¶å»ºè°äºéäºæå¤±çå¯è½æ§æä¹æ¯å¦æ¤ã
-
- ï¼IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY
- PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
- DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS
- SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA
- HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.ï¼
-
- å å·å¤§å¸æç¢ºæ¾æ£ä»»ä½ä¿èï¼åæ¬ä½ä¸å±éæ¼æä¸ç¹å®ç¨éç忥åå©ççé±å«ä¿èã
- é裡æä¾çé份è»é«æ¯åºæ¼ãç¶ä½æ¯ãçåºç¤çï¼å èå å·å¤§å¸æ²æè²¬ä»»æä¾ç¶­
- è·ï¼æ¯æï¼æ´æ°ï¼å¢å¼·æèä¿®æ¹çæåã
-
- ï¼THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
- PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
- CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
- UPDATES, ENHANCEMENTS, OR MODIFICATIONS.ï¼
-
- 1.4) PostgreSQL å¯ä»¥éè¡å¨åªäºä½æ¥ç³»çµ±å¹³å°ä¸ï¼
-
- ä¸è¬èªªä¾ï¼ä»»ä½ç¾å¨å° UNIX ç¸å®¹ç使¥ç³»çµ±ä¹ä¸é½è½éè¡ PostgreSQL
- ãå¨å®è£æå裡ååºäºç¼ä½æç¶éæç¢ºæ¸¬è©¦çå¹³å°ã
-
- PostgreSQL ä¹å¯ä»¥ç´æ¥éè¡å¨åºæ¼å¾®è» Windows-NT ç使¥ç³»çµ±ï¼å¦
- Win2000 SP4ï¼WinXP å Win2003ï¼å·²è£½ä½å®æçå®è£åå¯å¾
- http://pgfoundry.org/projects/pginstallerä¸è¼ï¼åºæ¼MSDOSçWindows使¥­
- 系統 ï¼Win95ï¼Win98ï¼WinMeï¼éè¦ééCygwin模æ¬ç°å¢éè¡PostgreSQLã
-
- åæä¹æä¸åçº Novell Netware 6 éç¼ççæ¬å¯å¾ http://forge.novell.com
- ç²åï¼çºOS/2(eComStation)éç¼ççæ¬å¯å¾
- http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
- SQL&stype=all&sort=type&dir=%2F ä¸è¼ã
-
- 1.5) æå¾åªè£¡è½å¾å° PostgreSQLï¼
-
- ééç覽å¨å¯å¾ http://www.postgresql.org/ftp/ ä¸è¼ï¼ä¹å¯ééFTPï¼å¾
- ftp://ftp.PostgreSQL.org/pub/ ç«é»ä¸è¼ã
-
- 1.6) ææ°çç PostgreSQL æ¯ä»éº¼ï¼
-
- PostgreSQL ææ°ççæ¬æ¯çæ¬ 8.2.3 ã
-
- æåè¨åæ¯å¹´ç¼ä½ä¸å主è¦åç´çæ¬ï¼æ¯å¹¾åæç¼ä½ä¸åå°çæ¬ã
-
- 1.7) æå¾åªè£¡è½å¾å°å° PostgreSQL çæ¯æï¼
-
- PostgreSQL社åéééµä»¶å表çºå¶å¤§å¤æ¸ç¨æ¶æä¾å¹«å©ï¼è¨é±éµä»¶å表ç主ç«é
- »æ¯
- http://www.postgresql.org/community/lists/ï¼ä¸è¬ææ³ä¸ï¼åå å¥General æ
- Bugéµä»¶å表æ¯ä¸åè¼å¥½çéå§ã
-
- 主è¦çIRCé »éæ¯å¨FreeNode(irc.freenode.net)ç#postgresqlï¼çºäºé£ä¸æ­
- ¤é »éï¼å¯ä»¥ä½¿ç¨ UNIX ç¨åº ircï¼å¶æä»¤æ ¼å¼ï¼ irc -c '#postgresql'
- "$USER" irc.freenode.net ï¼æè使ç¨å¶ä»IRC客æ¶ç«¯ç¨åºã卿¤ç¶²çµ¡ä¸éå­
- å¨ä¸å PostgreSQL ç西ççé »é(#postgersql-es)åæ³èªé »é
- (#postgresql-fr)ã忍£å°ï¼å¨ EFNET ä¸ä¹æä¸å PostgreSQL ç交æµé »éã
-
- 坿ä¾åæ¥æ¯æçå¬å¸å表å¯å¨ http://techdocs.postgresql.org/companies.php
- ç覽ã
-
- 1.8) æå¦ä½æäº¤ä¸å BUG å ±åï¼
-
- å¯è¨ªå http://www.postgresql.org/support/submitbugï¼å¡«å¯« Bug
- ä¸å ±è¡¨æ ¼å³å¯ï¼å樣ä¹å¯è¨ªå ftp ç«é» ftp://ftp.PostgreSQL.org/pub/
- æª¢æ¥æç¡æ´æ°çPostgreSQL çæ¬æè£ä¸ã
-
- ééä½¿ç¨ Bug æäº¤è¡¨æ ¼ææ¯ç¼å¾ PostgreSQL éµä»¶å表ç Bug
- é常ææä»¥ä¸ä¹ä¸åè¦ï¼
- * ææäº¤å§å®¹ä¸æ¯ä¸å Bug åå¶ä¸æ¯ Bug çåå ã
- * ææäº¤å§å®¹æ¯ä¸åå·²ç¥ç Bug 並ä¸å·²ç¶å å¥ TODO å¾èçä»»åå表ã
- * ææäº¤ç Bug å·²å¨ç¶åçæ¬ä¸è¢«ä¿®æ£ã
- * ææäº¤ç Bug 已修æ£ä½å°æªå°è£ä¸å å¥ç¾å¨çç¼å¸è»é«åã
- * è«æ±æäº¤èæä¾æ´è©³ç´°çè³è¨ï¼
- + 使¥ç³»çµ±
- + PostgreSQL çæ¬
- + å¯éç¾ Bug çæ¸¬è©¦æ¡ä¾
- + 調試è³è¨
- + 調試è·è¹¤è¼¸åº
- * ææäº¤å§å®¹æ¯ä¸åæ° Bugï¼å°å·è¡ä»¥ä¸å·¥ä½ï¼
- + åµå»ºä¸åæ°è£ä¸ä¸¦å°å¶å å¥ä¸ä¸å主è¦çæ¬ææ¯å°çæ¹é²çæ¬ä¸ã
- + æ¤ Bug æ«æä¸è½ä¿®æ£ï¼å°è¢«å è³ TODO å¾èçä»»åå表ã
-
- 1.9) æå¦ä½ç解已ç¥ç BUG ææ«ç¼ºçåè½ï¼
-
- PostgreSQL æ¯æä¸åæ´å±ç SQL:2003 çåéãå鱿åç TODO å表ï¼çè§£å·²ç¥ Bug
- åè¡¨ãæ«ç¼ºçåè½åå°ä¾çéç¼è¨åã
-
- è¦æ±å¢å æ°åè½çç³è«éå¸¸ææ¶å°ä»¥ä¸ä¹ä¸çåè¦ï¼
- * 該åè½å·²å å¥ TODO å¾èçä»»åå表ã
- * 該åè½ä¸æ¯å¿é çï¼å çºï¼
- + 宿¯ç¾æçä¸ç¬¦å SQL æ¨æºçæåè½çéè¤ã
- + 該åè½æ§æå¤§å¤§å¢å 代碼çè¤éç¨åºï¼è帶ä¾çå¥½èæ¯å¾®ä¸è¶³éçã
- + 該åè½æ¯ä¸å®å¨ææ¯ä¸å¯é çã
- * 該åè½å°è¢«å å¥ TODO å¾èçä»»åå表ã
-
- PostgreSQL ä¸ä½¿ç¨ Bug è·è¹¤ç³»çµ±ï¼å çºæåç¼ç¾å¨éµä»¶å表中
- ç´æ¥åè¦ä»¥åä¿è TODO
- ä»»åå表總æ¯èæ¼ææ°çæçæ¹å¼å·¥ä½æçææ´é«ä¸äºãäºå¯¦ä¸ï¼Bug䏿卿åçè»é«ä¸­
- åå¨å¾é·æéï¼ å°å½±é¿å¾å¤ç¨æ¶çBugä¹ç¸½æ¯å¾å¿«æè¢«ä¿®æ­
- £ãå¯ä¸è½æ¾å°æææ¹é²ãæé«åä¿®æ£çå°æ¹æ¯ CVS
- çæ¥èªè³è¨ï¼å³ä½¿æ¯å¨è»é«æ°çæ¬çç¼å¸è³è¨ä¸ä¹ä¸æååºæ¯ä¸èçè»é«æ´æ°ã
-
- 1.10) è½å¤ ç²åçææ°ææªæåªäºï¼
-
- PostgreSQL åå«å¤§éçææªï¼ä¸»è¦æè©³ç´°çåèæåï¼æåé åä¸äºç測試ä¾åãåè¦
- /doc ç®éï¼è¯è¨»ï¼æçº $PGHOME/docï¼ã ä½ éå¯ä»¥å¨ç·ç覽 PostgreSQL
- çæåï¼å¶ç¶²åæ¯ï¼http://www.PostgreSQL.org/docsã
-
- æå©æ¬éæ¼PostgreSQLçæ¸å¨ç·æä¾ï¼å¨
- http://www.postgresql.org/docs/books/awbook.html å
- http://www.commandprompt.com/ppbook/ ã 乿大éç PostgreSQL
- æ¸ç±å¯ä¾è³¼è²·ï¼å¶ä¸æçºæµè¡ç䏿¬æ¯ç± Korry Douglas 編寫çãå¨
- http://techdocs.PostgreSQL.org/techdocs/bookreviews.phpä¸ ä¸æå¤§éæé
- PostgreSQL æ¸ç±çç°¡ä»ã å¨ http://techdocs.PostgreSQL.org/ 䏿¶éäºæé
- PostgreSQL ç大éæè¡æç« ã
-
- 客æ¶ç«¯çå½ä»¤è¡ç¨åºpsqlæä¸äºä»¥ \d éé ­
- çå½ä»¤ï¼å¯é¡¯ç¤ºéæ¼é¡åï¼æä½ç¬¦ï¼å½æ¸ï¼èåçè³è¨ï¼ä½¿ç¨ \?
- å¯ä»¥é¡¯ç¤ºææå¯ç¨çå½ä»¤ã
-
- æåç web ç«é»å嫿´å¤çææªã
-
- 1.11) ææè©²ææ¨£å¸ç¿ SQL ï¼
-
- é¦åèæ®ä¸è¿°æå°çèPostgreSQLç¸éçæ¸ç±ï¼å¦å¤ä¸æ¬æ¯ Teach Yourself SQL in
- 21 Days, Second Editionï¼å¶è©³ç´°ä»ç´¹çç¶²åæ¯
- http://members.tripod.com/er4ebus/sql/index.htmï¼ æåç許å¤ç¨æ¶åæ¡The
- Practical SQL Handbookï¼ Bowman, Judith S.
- 編寫ï¼Addison-Wesleyå¬å¸åºçï¼å¶ä»çååæ¡ The Complete Reference SQL,
- Groff 編寫ï¼McGraw-Hill å¬å¸åºçã
-
- å¨ä¸åç¶²åä¸ä¹æå¾å¥½çæç¨ï¼ä»åæ¯
- * http://www.intermedia.net/support/sql/sqltut.shtm
- * http://sqlcourse.com.
- * http://www.w3schools.com/sql/default.asp
- * http://mysite.verizon.net/Graeme_Birchall/id1.html
-
- 1.12)å¦ä½æäº¤è£ä¸ææ¯å å¥éç¼éä¼ï¼
-
- è©³è¦ éç¼äººå¡å¸¸è¦åé¡ (Developer's FAQ) ã
-
- 1.13) PostgreSQL åå¶ä»è³æåº«ç³»çµ±æ¯èµ·ä¾å¦ä½ï¼
-
- è©å¹è»é«æå¥½å¹¾ç¨®æ¹æ³ï¼åè½ï¼æ§è½ï¼å¯é æ§ï¼æ¯æå广 ¼ã
-
- åè½
- PostgreSQL ææå¤§ååç¨è³æåº«æå¤çåè½ï¼ä¾å¦ï¼äºåï¼å­
- æ¥è©¢ï¼è§¸ç¼å¨ï¼è¦åï¼å¤éµåè宿´æ§åè¤éçéå®çã
- æåéæä¸äºå®åæ²æçç¹æ§ï¼å¦ç¨æ¶å®ç¾©é¡åï¼ç¹¼æ¿ï¼è¦ååå¤çæ¬ä¸¦è¡æ§å¶ä
- »¥æ¸å°éççç¨çã
-
- æ§è½
- PostgreSQLåå¶ä»åç¨åéæºçè³æåº«å·æé¡ä¼¼çæ§è½ãå°æäºèç宿¯è¼å¿«ï¼å°
- å¶ä»ä¸äºèç宿¯è¼æ¢ã èå¶ä»è³æåº«ç¸æ¯ï¼æåçæ§è½åªå£éå¸¸å¨ +/-
- 10%ä¹éã
-
- å¯é æ§
- æåé½ç¥éè³æåº«å¿é æ¯å¯é çï¼å¦åå®å°±ä¸é»ç¨é½æ²æãæååªååå°ç¼ä½ç¶éèª
- çæ¸¬è©¦çï¼ç¼ºé·æå°çç©©å®ä»£ç¢¼ãæ¯åçæ¬è³å°æä¸åæç beta
- 測試æéï¼ä¸¦ä¸æåçç¼å¸æ­
- ·å²é¡¯ç¤ºæåå¯ä»¥æä¾ç©©å®çï¼ç¢åºçï¼å¯ç¨æ¼çç¢ä½¿ç¨ççæ¬ãæåç¸ä¿¡å¨é
- æ¹é¢æåèå¶ä»çè³æåº«è»é«æ¯ç¸ç¶çã
-
- æ¯æ
- æåçéµä»¶å表æä¾ä¸åé常大çéç¼äººå¡åç¨æ¶ççµä»¥å¹«å©è§£æ±ºæç¢°å°ç
- ä»»ä½åé¡ãæåä¸è½ä¿è­
- 總æ¯è½è§£æ±ºåé¡ï¼ç¸æ¯ä¹ä¸ï¼åç¨è³æåº«è»é«ä¹ä¸¦ä¸æ¯ç¸½è½å¤ æä¾è§
- £æ±ºæ¹æ³ã
- ç´æ¥èéç¼äººå¡ï¼ç¨æ¶ç¾¤ï¼æååæºç¨åºæ¥è§¸ä½¿PostgreSQLçæ¯ææ¯å¶ä»è³
- æåº«éè¦å¥½ãéæä¸äºå業
- æ§çå¨é¢æè¡æ¯æï¼å¯ä»¥çµ¦æä¾çµ¦é£äºéè¦ç人ãï¼åé±1.7 å°ç¯ï¼
-
- 广 ¼
- æåå°ä»»ä½ç¨éé½åè²»ï¼åæ¬åç¨åéåç¨ç®çã
- ä½ å¯ä»¥ä¸å éå¶å°åä½ çç¢å裡å 奿åç代碼ï¼é¤äºé£äºæåå¨ä¸é¢ççæ¬
- è²æè£¡è²æç BSDçæ¬ä¹å¤çå§å®¹ã
-
- 1.14) PostgreSQL å¯ä»¥èçæè¿ååå家夿å¶çè®åå?
-
- PostgreSQL 8.0ä¹åççæ¬æ¯ä½¿ç¨ä½æ¥ç³»çµ±ä¸çæåè³æåº«ä¾èç夿å¶çè³è¨ï¼èª
- 8.0 çå以å¾ççæ¬ PostgreSQL æèªèº«å«æææ°çæåè³è¨ã
- _________________________________________________________________
-
-ç¨æ¶å®¢æ¶ç«¯åé¡
-
- 2.1) æåå¯ä»¥ç¨ä»éº¼èªè¨å PostgreSQL é²è¡æºéï¼
-
- PostgreSQL (é è¨ææ³)åªå®è£æ C åå§åµå¼ C
- çæ¥å£ï¼å¶ä»çæ¥å£é½æ¯ç¨ç«çé ç®ï¼è½å¤ åå¥ä¸è¼ï¼éäºæ¥å£é ç®ç¨ç«ç好è
- æ¯ä»åå¯ä»¥æåèªçç¼å¸è¨åååèªç¨ç«çéç¼çµã
-
- ä¸äºç·¨ç¨èªè¨å¦ PHP é½æè¨ªå PostgreSQL çæ¥å£ï¼PerlãTCLãPython
- 以åå¾å¤å¶ä»èªè¨çæ¥å£å¨ http://gborg.postgresql.org ç¶²ç«ä¸ç
- Drivers/Interfaces å°ç¯å¯æ¾å°ï¼ 並ä¸éé Internet å¾å®¹ææç´¢å°ã
-
- 2.2) æä»éº¼å·¥å·å¯ä»¥æ PostgreSQL ç¨æ¼ Web é é¢ï¼
-
- ä¸åä»ç´¹ä»¥è³æåº«çºå¾å°çæºä¸é¯çç«é»æ¯ï¼http://www.webreview.comã
-
- å°æ¼ Web éæï¼PHP æ¯ä¸åæ¥µå¥½çæ¥å£ãå®å¨ http://www.php.net/ã
-
- å°æ¼è¤éçä»»åï¼å¾å¤äººæ¡ç¨ Perl æ¥å£å ä½¿ç¨ CGI.pm ç DBD::Pg æ mod_perl
- ã
-
- 2.3)PostgreSQL ææåå½¢ç¨æ¶çé¢åï¼
-
- åæ¥ç¨æ¶ææ¯éæºéç¼äººå¡è½æ¾å°å¾å¤çæé PostgreSQLçGUI å形工å·è»é«ï¼å¨
- PostgreSQLç¤¾åææª æä¸å詳細çå表ã
- _________________________________________________________________
-
-系統管çåé¡
-
- 3.1)æææ¨£è½æ PostgreSQL è£å¨ /usr/local/pgsql 以å¤çå°æ¹ï¼
-
- å¨éè¡ configure æå ä¸ --prefix é¸é ã
-
- 3.2) æå¦ä½æ§å¶ä¾èªå¶ä»é»è¦ç飿¥ï¼
-
- é è¨ææ³ä¸ï¼PostgreSQL åªå許ä¾èªæ¬æ©ä¸éé unix å奿¥åæ TCP/IP
- æ¹å¼ç飿¥ã ä½ åªæå¨ä¿®æ¹äºéç½®æä»¶ postgresql.conf ä¸ç
- listen_addressesï¼ä¸ä¹å¨éç½®æä»¶ $PGDATA/pg_hba.conf 䏿éäº
- åºæ¼é ç¨é»è¦ï¼ host-based ï¼ç身份èªèï¼ä¸¦éæ°åå
- PostgreSQLï¼å¦åå¶ä»é»è¦æ¯ä¸è½èä½ ç PostgreSQL 伺æå¨é²è¡é£æ¥çã
-
- 3.3) æææ¨£èª¿æ´è³æåº«å¼æä»¥ç²å¾æ´å¥½çæ§è½ï¼
-
- æä¸åä¸»è¦æ¹é¢å¯ä»¥æå PostgreSQL çæ½è½ã
-
- æ¥è©¢æ¹å¼çè®å
- éä¸»è¦æ¶åä¿®æ¹æ¥è©¢æ¹å¼ä»¥ç²åæ´å¥½çæ§è½:
-
- + åµå»ºç´¢å¼ï¼åæ¬è¡¨éå¼åé¨åç´¢å¼ï¼
- + ä½¿ç¨ COPY èªå¥ä»£æ¿å¤å Insert èªå¥ï¼
- + å°å¤åSQLèªå¥çµæä¸åäºå以æ¸å°æäº¤äºåçéé·ï¼
- + å¾ä¸åç´¢å¼ä¸æå夿¢è¨éæä½¿ç¨ CLUSTERï¼
- + å¾ä¸åæ¥è©¢çµæä¸ååºé¨åè¨éæä½¿ç¨ LIMITï¼
- + 使ç¨é ç·¨è¯å¼æ¥è©¢ï¼Prepared Query)ï¼
- + ä½¿ç¨ ANALYZE ä»¥ä¿æç²¾ç¢ºçåªåçµ±è¨ï¼
- + å®æä½¿ç¨ VACUUM æ pg_autovacuum
- + é²è¡å¤§éè³ææ´æ¹æååªé¤ç´¢å¼ï¼ç¶å¾é建索å¼ï¼
-
- 伺æå¨çéç½®
- éç½®æä»¶ postgres.conf ä¸çå¾å¤è¨­
- ç½®é½æå½±é¿æ§è½ï¼ææåæ¸çå表å¯è¦ï¼
- 管ç塿å/è³æåº«ä¼ºæå¨éè¡ç°å¢/è³æåº«ä¼ºæå¨éè¡éç½®ï¼
- æé忏çè§£éå¯è¦ï¼http://www.varlena.com/varlena/GeneralBits/Tidb
- its/annotated_conf_e.html å
- http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.htmlã
-
- 硬é«ç鏿
- é»è¦ç¡¬é«å°æ§è½çå½±é¿å¯ç覽
- http://candle.pha.pa.us/main/writings/pgsql/hw_performance/inde
- x.html å http://www.powerpostgresql.com/PerfList/ã
-
- 3.4)PostgreSQL 裡å¯ä»¥ç²å¾ä»éº¼æ¨£çèª¿è©¦ç¹æ§ï¼
-
- PostgreSQL æå¾å¤é¡ä¼¼ log_*
- ç伺æå¨éç½®è®éå¯ç¨æ¼æ¥è©¢çåå°åé²ç¨çµ±è¨ï¼èéäºå·¥ä½å°èª¿è©¦åæ§è½æ¸¬è©¦å
- ¾æå¹«å©ã
-
- 3.5) çºä»éº¼å¨è©¦å飿¥ææ¶å°ãSorry, too many
- clientsï¼å·²æå¤ªå¤ç¨æ¶é£æ¥ï¼ãæ¶æ¯ï¼
-
- éè¡¨ç¤ºä½ å·²éå°é è¨ 100 å並ç¼(åä½)å¾å°é²ç¨æ¸çéå¶ï¼ä½ éè¦ééä¿®æ¹
- postgresql.conf æä»¶ä¸ç max_connections å¼ä¾ å¢å postmaster
- çå¾å°ä½µç¼èçæ¸ï¼ä¿®æ¹å¾ééæ°åå postmasterã
-
- 3.6)PostgreSQL çåç´éç¨æåªäºå§å®¹ ï¼
-
- PostgreSQL éç¼çµå°æ¯æ¬¡å°çæ¬çåç´ä¸»è¦åªåäºä¸äº Bug ä¿®æ£å·¥ä½ï¼å æ¤å¾
- 7.4.8 åç´å° 7.4.9 ä¸éè¦ dump å restoreï¼åéè¦åæ­
- ¢è³æåº«ä¼ºæå¨ï¼å®è£æ´æ°å¾çè»é«åï¼ç¶å¾éå伺æå¨å³å¯ã
-
- ææPostgreSQLçç¨æ¶æè©²å¨ææ¥è¿ï¼ä½ æä½¿ç¨çä¸»çæ¬ï¼çå°æ¹é²çæ¬ç¼ä½ç¡å¿«åç´
- ãåç®¡æ¯æ¬¡åç´å¯è½é½æä¸é»é¢¨éªï¼PostgreSQLçå°æ¹ é²çå忝è¨è¨ç¨ä¾ä¿®æ­
- £ä¸äº Bug
- çï¼ç¨å¼ç¢¼æ¹åè¼å°ï¼æä»¥é¢¨éªéæ¯å¾å°çãPostgreSQL社åèªçºä¸è¬ææ³ä¸ä¸åç´ç
- 風éªéæ¯å¤æ¼åç´çã
-
- ä¸»çæ¬çåç´ï¼ä¾å¦å¾ 7.3 å° 7.4ï¼é常æä¿®æ¹ç³»çµ±è¡¨åè³æè¡¨çå§é¨æ ¼å¼ã
- éäºæ¹è®ä¸è¬æ¯è¼è¤éï¼å æ¤æåä¸ç¶æè³ææä»¶çåå¾å¼å®¹æ§ãå æ¤å¾èçæ¬ä¸­
- é²è¡è³æå°åºï¼dumpï¼/ç¶å¾å¨æ°çæ¬ä¸­
- é²è¡è³æå°å¥ï¼reloadï¼å°ä¸»çæ¬çåç´æ¯å¿é çã
-
- 3.7)(ä½¿ç¨ PostgreSQL )æéè¦ä½¿ç¨ä»éº¼é»è¦ç¡¬é« ï¼
-
- ç±æ¼é»è¦ç¡¬é«å¤§å¤æ¸æ¯ç¸å®¹çï¼äººå總æ¯å¾åæ¼ç¸ä¿¡ææé»è¦ç¡¬é«è³ªé乿¯ç¸
- åçãäºå¯¦ä¸ä¸æ¯ï¼ ECC RAMï¼å¸¶å¥å¶æ ¡é©çè¨æ¶é«ï¼ï¼SCSI
- ï¼ç¡¬ç¢ï¼ååªè³ªçä¸»æ©æ¿æ¯ä¸äºä¾¿å®è²¨è¦æ´å å¯é ä¸å·ææ´å¥½çæ§è½ã
- PostgreSQL å¹¾ä¹å¯ä»¥éè¡å¨ä»»ä½ç¡¬é«ä¸ï¼
- ä½å¦æå¯é æ§åæ§è½å°ä½ ç系統å¾éè¦ï¼ä½ å°±éè¦å¨é¢çç ç©¶ä¸ä¸ä½ ç硬é«çµæ
- äºã卿åçéµä»¶å表ä¸ä¹æéæ¼ ç¡¬é«éç½®åæ§å¹æ¯çè¨è«ã
- _________________________________________________________________
-
-æä½åé¡
-
- 4.1) å¦ä½åªé¸æä¸åæ¥è©¢çµæçé å¹¾è¡ï¼ææ¯é¨æ©çä¸è¡ï¼
-
- å¦æä½ åªæ¯è¦æåå¹¾è¡è³æï¼ä¸¦ä¸ä½ å¨å·è¡æ¥è©¢ä¸­
- ç¥é確åçè¡æ¸ï¼ä½ å¯ä»¥ä½¿ç¨ LIMIT åè½ã 妿æä¸åç´¢å¼è ORDER BY 中
- çæ¢ä»¶å¹éï¼PostgreSQL å¯è½å°±åªèçè¦æ±çé å¹¾æ¢è¨éï¼
- ï¼å¦åå°å°æ´åæ¥è©¢é²è¡èçç´å°çæéè¦çè¡ï¼ã妿å¨å·è¡æ¥è©¢åè½æä¸ç¥é確åçè¨éæ
- ¸ï¼ å¯ä½¿ç¨æ¸¸æ¨(cursor)åFETCHåè½ã
-
- å¯ä½¿ç¨ä»¥ä¸æ¹æ³æåä¸è¡é¨æ©è¨éçï¼
- SELECT cols
- FROM tab
- ORDER BY random()
- LIMIT 1 ;
-
- 4.2)
- å¦ä½æ¥ç表ãç´¢å¼ãè³æåº«ä»¥åç¨æ¶çå®ç¾©ï¼å¦ä½æ¥çpsql裡ç¨å°çæ¥è©¢æä»¤ä¸¦é¡¯ç¤ºå
- ®åï¼
-
- å¨psqlä¸ä½¿ç¨ \dt å½ä»¤ä¾é¡¯ç¤ºè³æè¡¨çå®ç¾©ï¼è¦çè§£ psql 中
- ç宿´å½ä»¤å表å¯ä½¿ç¨ \? ï¼å¦å¤ï¼ä½ ä¹å¯ä»¥é±è® psql çæºä»£ç¢¼ æä»¶
- pgsql/src/bin/psql/describe.cï¼å®åæ¬çºçæ psql åææ§å½ä»¤ç輸åºçææ SQL
- å½ä»¤ãä½ éå¯ä»¥å¸¶ -E é¸é åå psqlï¼ éæ¨£å®å°åå°åºä½ å¨ psql 中
- æçµ¦åºçå½ä»¤å·è¡æçå§é¨å¯¦é使ç¨ç SQL
- æ¥è©¢èªå¥ãPostgreSQL乿ä¾äºä¸åå¼å®¹ SQLç INFORMATION SCHEMA æ¥å£ï¼
- ä½ å¯ä»¥å¾é裡ç²åéæ¼è³æåº«çè³è¨ã
-
- å¨ç³»çµ±ä¸ä¹æä¸äºä»¥ pg_ æé çç³»çµ±è¡¨ä¹æè¿°äºè¡¨çå®ç¾©ã
-
- ä½¿ç¨ psql -l æä»¤å¯ä»¥ååºææçè³æåº«ã
-
- ä¹å¯ä»¥ç覽ä¸ä¸ pgsql/src/tutorial/syscat.source
- æä»¶ï¼å®åèäºå¾å¤å¯å¾è³æåº«ç³»çµ±è¡¨ä¸ç²åè³è¨çSELECTèªæ³ã
-
- 4.3) å¦ä½æ´æ¹ä¸åæ¬ä½çè³æé¡åï¼
-
- å¨8.0çæ¬è£¡æ´æ¹ä¸åæ¬ä½çè³æé¡åå¾å®¹æï¼å¯ä½¿ç¨ ALTER TABLE ALTER COLUMN
- TYPE ã
-
- å¨ä»¥åççæ¬ä¸ï¼å¯ä»¥é樣åï¼
- BEGIN;
- ALTER TABLE tab ADD COLUMN new_col new_data_type;
- UPDATE tab SET new_col = CAST(old_col AS new_data_type);
- ALTER TABLE tab DROP COLUMN old_col;
- COMMIT;
-
- ä½ ç¶å¾å¯ä»¥ä½¿ç¨ VACUUM FULL tab æä»¤ä¾ä½¿ç³»çµ±æ¶åç¡æè³ææä½ç¨ç空éã
-
- 4.4) 宿¢è¨éï¼å®å表ï¼å®åè³æåº«çæå¤§éå¶æ¯å¤å°ï¼
-
- ä¸é¢æ¯ä¸äºéå¶ï¼
-
- å®åè³æåº«æå¤§å°ºå¯¸ï¼ ç¡éå¶ï¼å·²å卿 32TB çè³æåº«ï¼
- å®å表çæå¤§å°ºå¯¸ï¼ 32 TB
- ä¸è¡è¨éçæå¤§å°ºå¯¸ï¼ 1.6 TB
- ä¸åæ¬ä½çæå¤§å°ºå¯¸? 1 GB
- ä¸å表裡æå¤§åæ¸ï¼ ç¡éå¶
- ä¸å表裡æå¤§æ¬ä½æ¸ï¼ 250-1600 ï¼èåé¡åæéï¼
- ä¸å表裡çæå¤§ç´¢å¼æ¸éï¼ ç¡éå¶
-
- ç¶ç¶ï¼å¯¦é䏿²æçæ£çç¡éå¶ï¼éæ¯è¦åå¯ç¨ç£ç¤ç©ºéãå¯ç¨è¨æ¶é«/交æåçå¶ç´ã
- äºå¯¦ä¸ï¼ç¶ä¸è¿°éäºæ¸å¼è®å¾ç°å¸¸å°å¤§æï¼ç³»çµ±æ§è½ä¹æåå¾å¤§å½±é¿ã
-
- å®è¡¨çæå¤§å¤§å° 32 TB ä¸éè¦ä½æ¥­
- 系統å°å®åæä»¶ä¹éééº¼å¤§çæ¯æã大表ç¨å¤å 1 GB çæä»¶åå²ï¼å æ­
- ¤æä»¶ç³»çµ±å¤§å°çéå¶æ¯ä¸éè¦çã
-
- 妿é è¨çå¡å¤§å°å¢é·å° 32K ï¼æå¤§çå®è¡¨å¤§å°åæå¤§åæ¸éå¯ä»¥å¢å å°ååã
-
- æä¸åéå¶å°±æ¯ä¸è½å°å¤§å°å¤æ¼2000å­
- ç¯çååµå»ºç´¢å¼ã幸éå°æ¯é樣çç´¢å¼å¾å°ç¨å°ãééå°å¤å­
- ç¯åçå§å®¹é²è¡MD5åç¨éç®çµæé²è¡å½æ¸ç´¢å¼å¯å°åçå¯ä¸æ§å¾å°ä¿èï¼
- 並ä¸å¨ææª¢ç´¢å許å°åä¸çå®è©é²è¡æç´¢ã
-
- 4.5) åå²ä¸åå¸åçææ¬æä»¶è£¡çè³æéè¦å¤å°ç£ç¤ç©ºéï¼
-
- ä¸å Postgres è³æåº«ï¼å­
- å²ä¸åææ¬æä»¶ï¼æä½ç¨ç空éæå¤å¯è½éè¦ç¸ç¶æ¼éåææ¬æä»¶èªèº«å¤§å°5åçç£ç¤ç©ºé
- ã
-
- ä¾å¦ï¼åè¨æä¸å 100,000 è¡çæä»¶ï¼æ¯è¡æä¸åæ´æ¸åä¸åææ¬æè¿°ã å設
- ææ¬ä¸²çå¹³åé·åº¦çº20ä½åçµ(Byte)ãææ¬æä»¶ä½ç¨ 2.8 MBãå­
- æ¾éäºè³æçPostgreSQLè³æåº«æä»¶å¤§ç´æ¯ 5.2 MB:
- 24 ååçµ: æ¯è¡çé ï¼å¤§ç´å¼ï¼
- 24 ååçµç¯: ä¸åæ´æ¸åæ¬ä½åä¸åææ¬åæ¬ä½
- + 4 ååçµç¯: é é¢å§æååçµçæé
- ----------------------------------------
- 52 ååçµæ¯è¡
-
- PostgreSQL è³æé ç大尿¯ 8192 ä½åçµ (8 KB)ï¼åï¼
-
- 8192 ååçµæ¯é
- ------------------- = 158 è¡/è³æé ï¼åä¸åæ´ï¼
- 52 ååçµæ¯è¡
-
- 100000 è³æè¡
- -------------------- = 633 è³æé ï¼åä¸åæ´ï¼
- 146 è¡/è³æé
-
- 633 è³æé * 8192 åç¯/é = 5,185,536 åç¯ï¼5.2 MBï¼
-
- ç´¢å¼ä¸éè¦é麼å¤çé¡å¤æ¶èï¼ä½ä¹ç¢ºå¯¦åæ¬è¢«ç´¢å¼çè³æï¼å æ­
- ¤å®åä¹å¯è½å¾å¤§ã
-
- ç©ºå¼ NULL åæ¾å¨ä½åä¸ï¼å æ¤ä½ç¨å¾å°ç空éã
-
- 4.6) çºä»éº¼æçæ¥è©¢å¾æ¢ï¼çºä»éº¼éäºæ¥è©¢æ²æå©ç¨ç´¢å¼ï¼
-
- ä¸¦éæ¯åæ¥è©¢é½æèªå使ç¨ç´¢å¼ãåªæå¨è¡¨ç大å°è¶éä¸åæå°å¼ï¼ä¸¦ä¸æ¥è©¢åªæé
- ¸ä¸è¡¨ä¸è¼å°æ¯ä¾çè¨éææææ¡ç¨ç´¢å¼ã 鿝å çºç´¢å¼æçå¼èµ·çé¨å³ç£ç¤å­
- åå¯è½æ¯ç´æ¥å°è®å表ï¼é åºæçï¼æ´æ¢ã
-
- çºäºå¤æ·æ¯å¦ä½¿ç¨ç´¢å¼ï¼PostgreSQL
- å¿é ç²å¾æé表ççµ±è¨å¼ãéäºçµ±è¨å¼å¯ä»¥ä½¿ç¨ VACUUM ANALYZEï¼æ ANALYZE
- ç²å¾ã 使ç¨çµ±è¨å¼ï¼åªåå¨ç¥é表中
- æå¤å°è¡ï¼å°±è½å¤ æ´å¥½å°å¤æ·æ¯å¦å©ç¨ç´¢å¼ã
- çµ±è¨å¼å°ç¢ºå®åªåç飿¥é åºå飿¥æ¹æ³ä¹å¾æç¨ãå¨è¡¨çå§å®¹ç¼çè®åæï¼æå®æé²è
- ¡çµ±è¨å¼çæ´æ°æ¶éã
-
- ç´¢å¼é常ä¸ç¨æ¼ ORDER BY
- æå·è¡é£æ¥ãå°ä¸å大表ç䏿¬¡é åºæçåå䏿¬¡æåºé常æ¯ç´¢å¼æçè¦å¿«ãç¶èï¼å¦æ
- å° LIMIT å ORDER BY
- çµåå¨ä¸èµ·ä½¿ç¨ç話ï¼éå¸¸å°æä½¿ç¨ç´¢å¼ï¼å çºéæåè¿å表ä¸çä¸å°é¨åè¨éã
-
- å¦æä½ ç¢ºä¿¡PostgreSQLçåªåå¨ä½¿ç¨é åºæçæ¯ä¸æ£ç¢ºçï¼ä½ å¯ä»¥ä½¿ç¨SET
- enable_seqscan TO 'off'æä»¤ä¾ééé åºæçï¼
- ç¶å¾å次éè¡æ¥è©¢ï¼ä½ å°±å¯ä»¥çåºä½¿ç¨ä¸åç´¢å¼æçæ¯å¦ç¢ºå¯¦è¦å¿«ä¸äºã
-
- ç¶ä½¿ç¨éé符æä½ï¼ä¾å¦ LIKE æ ~ æï¼ç´¢å¼åªè½å¨ç¹å®çææ³ä¸ä½¿ç¨ï¼
- * å符串çéå§é¨åå¿é æ¯æ®éå符串ï¼ä¹å°±æ¯èªªï¼
- + LIKE 模å¼ä¸è½ä»¥ % æé ã
- + ~ ï¼æ£å表éå¼ï¼æ¨¡å¼å¿é 以 ^ æé ã
- * å符串ä¸è½ä»¥å¹éå¤ååç¬¦çæ¨¡å¼é¡æé ï¼ä¾å¦ [a-e]ã
- * 大å°å¯«ç¡éçæ¥æ¾ï¼å¦ ILIKE å ~* çä¸ä½¿ç¨ç´¢å¼ï¼ä½å¯ä»¥ç¨ 4.8
- ç¯æè¿°ç表éå¼ç´¢å¼ã
- * å¨å initdb æå¿é æ¡ç¨é è¨çæ¬å°è¨ç½® C
- localeï¼å çºç³»çµ±ä¸å¯è½ç¥éå¨é C locale ææ³æä¸ä¸åæå¤§å符æ¯ä»éº¼ã
- å¨éç¨®ææ³ä¸ï¼ä½ å¯ä»¥åµå»ºä¸åç¹æ®ç text_pattern_ops ç´¢å¼ä¾ç¨æ¼
- LIKE çç´¢å¼ã
-
- å¨ 8.0 ä¹åççæ¬ä¸­
- ï¼é¤éè¦æ¥è©¢çè³æé¡ååç´¢å¼çè³æé¡åç¸å¹éï¼å¦åç´¢å¼ç¶å¸¸æ¯æªè¢«ç¨å°ï¼ç¹å¥æ
- ¯å° int2, int8 忏å¼åçç´¢å¼ã
-
- 4.7) æå¦ä½æè½çå°æ¥è©¢åªå卿¯ææ¨£è©ä¼°èçæçæ¥è©¢ï¼
-
- åè EXPLAIN æåé ã
-
- 4.8) æææ¨£åæ£å表éå¼æç´¢å大å°å¯«ç¡éçæ­
- £å表é弿¥æ¾ï¼ææ¨£å©ç¨ç´¢å¼é²è¡å¤§å°å¯«ç¡éæ¥æ¾ï¼
-
- æä½ç¬¦ ~ èçæ£å表éå¼å¹éï¼è ~* èç大å°å¯«ç¡éçæ£å表éå¼å¹éã大å°å¯«ç¡éç
- LIKE è®ç¨®æçº ILIKEã
-
- 大å°å¯«ç¡éçç弿¯è¼é常寫åï¼
- SELECT *
- FROM tab
- WHERE lower(col) = 'abc';
-
- 鿍£å°ä¸æä½¿ç¨æ¨æºçç´¢å¼ã使¯å¯ä»¥åµå»ºä¸åå¨éç¨®ææ³ä¸ä½¿ç¨ç表éå¼ç´¢å¼
- :
- CREATE INDEX tabindex ON tab (lower(col));
-
- 妿ä¸è¿°ç´¢å¼å¨åµå»ºæå å¥ UNIQUE ç´æï¼éç¶ç´¢å¼æ¬ä½èªèº«å§å®¹å¯ä»¥å­
- å²å¤§å°å¯«ä¸éçå§å®¹ï¼ä½å¦ææ UNIQUE
- ç´æå¾ï¼éäºå§å®¹ä¸è½å忝大å°å¯«ä¸åï¼å¦åæé æè¡çªï¼ãçºäºä¿è­
- ä¸ç¼çéç¨®ææ³ï¼å¯ä»¥ä½¿ç¨ CHECK ç´ææ¢ä»¶ææ¯è§¸ç¼å¨å¨é奿é²è¡éå¶ã
-
- 4.9) å¨ä¸åæ¥è©¢è£¡ï¼æææ¨£æª¢æ¸¬ä¸åæ¬ä½æ¯å¦çº NULL
- ï¼æå¦ä½æè½æºç¢ºæåºèä¸è«ææ¬ä½æ¯å¦å« NULL å¼ï¼
-
- ç¨ IS NULL å IS NOT NULL 測試é忬ä½ï¼å·é«æ¹æ³å¦ä¸ï¼
- SELECT *
- FROM tab
- WHERE col IS NULL;
-
- çºäºè½å°å« NULL æ¬ä½æåºï¼å¯å¨ ORDER BY æ¢ä»¶ä¸ä½¿ç¨ IS NULL å IS NOT
- NULL ä¿®é£¾ç¬¦ï¼æ¢ä»¶çºç true å°æ¯æ¢ä»¶çºå false æå¨åé¢ï¼ä¸é¢çä¾å­
- å°±æå°å« NULL çè¨éæå¨çµæçä¸é¢é¨åï¼
- SELECT *
- FROM tab
- ORDER BY (col IS NOT NULL)
-
- 4.10) å種å符é¡åä¹éæä»éº¼ä¸åï¼
-
- é¡å å§é¨å稱 說æ
- VARCHAR(n) varchar æå®äºæå¤§é·åº¦ï¼è®é·å­
- 符串ï¼ä¸è¶³å®ç¾©é·åº¦çé¨åä¸è£é½
- CHAR(n) bpchar å®é·å符串ï¼å¯¦éè³æä¸è¶³å®ç¾©é·åº¦æï¼ä»¥ç©ºæ ¼è£é½
- TEXT text æ²æç¹å¥çä¸ééå¶ï¼ååè¡çæå¤§é·åº¦éå¶ï¼
- BYTEA bytea è®é·åç¯åºåï¼ä½¿ç¨NULLåç¬¦ä¹æ¯å許çï¼
- "char" char å®åå符
-
- å¨ç³»çµ±è¡¨åå¨ä¸äºé¯èª¤è³è¨è£¡ä½ å°çå°å§é¨å稱ã
-
- ä¸é¢æåçåå種é¡åæ¯ "varlena"ï¼è®é·ï¼é¡åï¼ä¹å°±æ¯èªªï¼éé çååå­
- ç¯æ¯é·åº¦ï¼å¾é¢ææ¯è³æï¼ã æ¼æ¯å¯¦éä½ç¨çç©ºéæ¯è²æç大å°è¦å¤ä¸äºã
- ç¶èéäºé¡åå¦å®ç¾©å¾é·æé½å¯ä»¥è¢«å£ç¸®åå²ï¼å æ­
- ¤ç£ç¤ç©ºéä¹å¯è½æ¯é æ³çè¦å°ã
-
- VARCHAR(n) å¨åå²éå¶äºæå¤§é·åº¦çè®é·åç¬¦ä¸²æ¯æå¥½çã TEXT é©ç¨æ¼å­
- 岿大å¯é 1G å·¦å³ä½æªå®ç¾©éå¶é·åº¦çå符串ã
-
- CHAR(n) æé©åæ¼åå²é·åº¦ç¸åçå符串ã
- CHAR(n)ææ ¹ææçµ¦å®çæ¬ä½é·åº¦ä»¥ç©ºæ ¼è£è¶³ï¼ä¸è¶³çæ¬ä½å§å®¹ï¼ï¼ è
- VARCHAR(n) åªåå²æçµ¦å®çè³æå§å®¹ã BYTEA ç¨æ¼åå²äºé²å¶è³æï¼å°¤å¶æ¯åå«
- NULL åç¯çå¼ãéäºé¡åå·æå·®ä¸å¤çæ§è½ã
-
- 4.11.1) æææ¨£åµå»ºä¸ååºåèææ¯èªåéå¢çæ¬ä½ï¼
-
- PostgreSQL æ¯æ SERIAL
- è³æé¡åãï¼æ¬ä½å®ç¾©çºSERIALå¾ï¼å°èªååµå»ºä¸ååºåçæå¨ï¼ä¾å¦ï¼
- CREATE TABLE person (
- id SERIAL,
- name TEXT
- );
-
- æèªåè½æçºä»¥ä¸SQLèªå¥ï¼
- CREATE SEQUENCE person_id_seq;
- CREATE TABLE person (
- id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
- name TEXT
- );
-
- åè create_sequence æåé ç²åéæ¼åºåçæå¨çæ´å¤è³è¨ã
-
- 4.11.2) æå¦ä½ç²å¾ä¸åæå¥çåºåèçå¼ï¼
-
- ä¸ç¨®æ¹æ³æ¯å¨æå¥ä¹ååç¨å½æ¸ nextval() å¾åºåå°è±¡è£¡æª¢ç´¢åºä¸ä¸å SERIAL
- å¼ï¼ç¶å¾åç¨æ¤å¼ç²¾ç¢ºå°æå¥ãä½¿ç¨ 4.11.1 裡çä¾è¡¨ï¼å¯ç¨å½ç¢¼é樣æè¿°ï¼
- new_id = execute("SELECT nextval('person_id_seq')");
- execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
-
- 鿍£éè½å¨å¶ä»æ¥è©¢ä¸ä½¿ç¨åæ¾å¨ new_id è£¡çæ°å¼ï¼ä¾å¦ï¼ä½çºåç§ person
- 表çå¤éµï¼ã 注æèªååµå»ºç SEQUENCE å°è±¡çåç¨±å°ææ¯
- <table>_<serialcolumn>_seqï¼ é裡 table å serialcolumn
- å奿¯ä½ ç表çå稱åä½ ç SERIAL æ¬ä½çå稱ã
-
- é¡ä¼¼çï¼å¨ SERIAL å°è±¡é è¨æå¥å¾ä½ å¯ä»¥ç¨å½æ¸ currval() 檢索å賦å¼ç
- SERIAL å¼ï¼ä¾å¦ï¼
- execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
- new_id = execute("SELECT currval('person_id_seq')");
-
- 4.11.3) åæä½¿ç¨ currval() æå°è´åå¶ä»ç¨æ¶çè¡çªææ³åï¼
-
- 䏿ãcurrval() è¿åçæ¯ä½ æ¬æ¬¡æè©±é²ç¨æè³¦çå¼è䏿¯ææç¨æ¶çç¶åå¼ã
-
- 4.11.4) çºä»éº¼ä¸å¨äºåç°å¸¸ä¸æ¢å¾éç¨åºåèå¢ï¼çºä»éº¼å¨åºåèæ¬ä½çåå¼ä¸åå¨éæ·å¢ï¼
-
- çºäºæé«ä½µç¼æ§ï¼åºåèå¨éè¦çæåè³¦äºæ­
- £å¨éè¡çäºåï¼ä¸¦ä¸å¨äºåçµæä¹åä¸é²è¡éå®ï¼ éå°±æå°è´ç°å¸¸ä¸­
- æ¢çäºåå¾ï¼åºåèæåºç¾ééã
-
- 4.12) ä»éº¼æ¯ OID ï¼ä»éº¼æ¯ CTID ï¼
-
- PostgreSQL 裡åµå»ºçæ¯ä¸è¡è¨é齿ç²å¾ä¸åå¯ä¸ç OIDï¼é¤éå¨åµå»ºè¡¨æä½¿ç¨
- WITHOUT OIDS é¸é ã OID åµå»ºææèªåçæä¸å 4ä½åçµçæ´æ¸ï¼ææ OID å¨ç¸æ
- PostgreSQL 伺æå¨ä¸åæ¯å¯ä¸çã ç¶èï¼å®å¨è¶é 40åæå°æº¢åºï¼ OID æ­
- ¤å¾æåºç¾éè¤ãPostgreSQL å¨å®çå§é¨ç³»çµ±è¡¨è£¡ä½¿ç¨ OID
- å¨è¡¨ä¹é建ç«è¯ç¹«ã
-
- å¨ç¨æ¶çè³æè¡¨ä¸ï¼æå¥½æ¯ä½¿ç¨ SERIAl ä¾ä»£æ¿ OID å çº SERIAL åªè¦ä¿è­
- å¨å®å表ä¸çæ¸å¼æ¯å¯ä¸çå°±å¯ä»¥äºï¼éæ¨£å®æº¢åºçå¯è½æ§å°±é常å°äºï¼
- SERIAL8 å¯ç¨ä¾ä¿å8ååçµçåºåæ¸å¼ã
-
- CTID ç¨æ¼æ¨è帶èè³æå¡ï¼å°åï¼åï¼å¡å§ï¼åç§»çç¹å®çç©çè¡ã CTID
- å¨è¨éè¢«æ´æ¹æéè¼å¾ç¼çæ¹è®ãç´¢å¼è³æä½¿ç¨å®åæåç©çè¡ã
-
- 4.13) çºä»éº¼ææ¶å°é¯èª¤è³è¨ãERROR: Memory exhausted in AllocSetAlloc()ãï¼
-
- éå¾å¯è½æ¯ç³»çµ±çèæ¬å§åç¨åäºï¼æèå§æ ¸å°æäºè³æºæè¼ä½çéå¶å¼ãå¨åå
- postmaster ä¹å試試ä¸é¢çå½ä»¤ï¼
- ulimit -d 262144
- limit datasize 256m
-
- åæ±ºæ¼ä½ ç¨ç
- shellï¼ä¸é¢å½ä»¤åªæä¸æ¢è½æåï¼ä½æ¯å®å°æä½ çé²ç¨è³ææ®µéå¶è¨å¾æ¯è¼é«ï¼
- å èä¹è¨±è½è®æ¥è©¢å®æã鿢å½ä»¤æç¨æ¼ç¶åé²ç¨ï¼ä»¥åææå¨éæ¢å½ä»¤éè¡å¾åµå»ºç
- åé²ç¨ã
- å¦æä½ æ¯å¨éè¡SQL客æ¶ç«¯æå çºå¾å°è¿åäºå¤ªå¤çè³æèåºç¾åé¡ï¼è«å¨éè¡å®¢æ¶ç
- «¯ä¹åå·è¡ä¸è¿°å½ä»¤ã
-
- 4.14) æå¦ä½æè½ç¥éæéè¡çPostgreSQLççæ¬ï¼
-
- å¾ psql 裡ï¼è¼¸å¥ SELECT version();æä»¤ã
-
- 4.15) æå¦ä½åµå»ºä¸åé è¨å¼æ¯ç¶åæéçæ¬ä½ï¼
-
- ä½¿ç¨ CURRENT_TIMESTAMPï¼
- CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
-
- 4.16) æææ¨£é²è¡ outer join ï¼å¤é£æ¥ï¼ï¼
-
- PostgreSQL æ¡ç¨æ¨æºç SQL èªæ³æ¯æå¤é£æ¥ãé裡æ¯å©åä¾åï¼
- SELECT *
- FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
- ææ¯
- SELECT *
- FROM t1 LEFT OUTER JOIN t2 USING (col);
-
- éå©åçå¹çæ¥è©¢å¨ t1.col å t2.col ä¸å飿¥ï¼ä¸¦ä¸è¿å t1 中
- æææªé£æ¥çè¡ï¼é£äºå¨ t2 䏿²æå¹éçè¡ï¼ã å³[å¤]飿¥ï¼RIGHT OUTER
- JOINï¼å°è¿å t2 䏿ªé£æ¥çè¡ã å®å¨å¤é£æ¥ï¼FULL OUTER JOINï¼å°è¿å t1 å t2
- 䏿ªé£æ¥çè¡ã ééµå OUTER å¨å·¦[å¤]飿¥ãå³[å¤]飿¥åå®å¨[å¤]飿¥ä¸­
- æ¯å¯é¸çï¼æ®é飿¥è¢«ç¨±çºå§é£æ¥ï¼INNER JOINï¼ã
-
- 4.17) å¦ä½ä½¿ç¨æ¶åå¤åè³æåº«çæ¥è©¢ï¼
-
- æ²æè¾¦æ³æ¥è©¢ç¶åè³æåº«ä¹å¤çè³æåº«ã
- å çºPostgreSQLè¦å è¼èè³æåº«ç¸éç系統ç®éï¼ç³»çµ±è¡¨ï¼ï¼å æ­
- ¤è·¨è³æåº«çæ¥è©¢å¦ä½å·è¡æ¯ä¸å®çã
-
- éå å¢å¼æ¨¡å¡ contrib/dblink
- å許æ¡ç¨å½æ¸èª¿ç¨å¯¦ç¾è·¨åº«æ¥è©¢ãç¶ç¶ç¨æ¶ä¹å¯ä»¥åæé£æ¥å°ä¸åçè³æåº«å·è
- ¡æ¥è©¢ç¶å¾å¨å®¢æ¶ç«¯åä½µçµæã
-
- 4.18) å¦ä½è®å½æ¸è¿åå¤è¡æå¤åè³æï¼
-
- å¨å½æ¸ä¸è¿åè³æè¨ééçåè½æ¯å¾å®¹æä½¿ç¨çï¼è©³æåè¦ï¼
- http://techdocs.postgresql.org/guides/SetReturningFunctions
-
- 4.19) çºä»éº¼æå¨ä½¿ç¨ PL/PgSQL 彿¸ååè¨æè¡¨æææ¶å°é¯èª¤è³è¨ãrelation with OID
- ##### does not existãï¼
-
- PL/PgSQL æç·©å彿¸çè³æ¬å§å®¹ï¼ç±æ¤å¸¶ä¾çä¸åä¸å¥½çå¯ä½ç¨æ¯è¥ä¸å
- PL/PgSQL
- 彿¸è¨ªåäºä¸åè¨æè¡¨ï¼ç¶å¾è©²è¡¨è¢«åªé¤ä¸¦é建äºï¼å忬¡èª¿ç¨è©²å½æ¸å°å¤
- ±æï¼ å çºç·©åç彿¸å§å®¹ä»ç¶æåèçè¨æè¡¨ãè§£æ±ºçæ¹æ³æ¯å¨ PL/PgSQL 中
- ç¨EXECUTE å°è¨æè¡¨é²è¡è¨ªåã鿍£æä¿èæ¥è©¢å¨å·è¡å總æè¢«éæ°è§£æã
-
- 4.20) ç®åæåªäºè³æè¤å¯«(replication)æ¹æ¡å¯ç¨ï¼
-
- ãè¤å¯«ãåªæ¯ä¸åè¡èªï¼æå¥½å¹¾ç¨®è¤å¯«æè¡å¯ç¨ï¼æ¯ç¨®é½æåªé»å缺é»ï¼
-
- 主/å¾å¼è¤å¯«æ¹å¼æ¯å許ä¸å主伺æå¨æ¥åè®/寫çç³è«ï¼èå¤åå¾ä¼ºæå¨åªè½æ¥å
- è®/SELECTæ¥è©¢çç³è«ï¼ ç®åææµè¡ä¸åè²»ç主/å¾PostgreSQLè¤å¯«æ¹æ¡æ¯
- Slony-I ã
-
- å¤å主伺æå¨çè¤å¯«æ¹å¼å許å°è®/寫çç³è«ç¼é給å¤å°ç主æ©ï¼é種æ¹å¼ç±æ¼é
- è¦å¨å¤å°ä¼ºæå¨ä¹éåæ¥è³æè®å å¯è½æå¸¶ä¾è¼å´éçæ§è½æå¤±ï¼Pgcluster
- æ¯ç®åéç¨®æ¹æ¡ä¸æå¥½çï¼ä¸¦ä¸éå¯ä»¥åè²»ä¸è¼ã
-
- 乿ä¸äºåæ¥éä»è²»ååºæ¼ç¡¬é«çè³æè¤å¯«æ¹æ¡ï¼æ¯æä¸è¿°å種è¤å¯«æ¨¡åã
-
- 4.21) çºä½æ¥è©¢çµæé¡¯ç¤ºçè¡¨åææ¬åèæçæ¥è©¢èªå¥ä¸çä¸åï¼çºä½å¤§å¯«çæä¸è½ä¿çï¼
-
- æå¸¸è¦çåå æ¯å¨åµå»ºè¡¨æå°è¡¨åææ¯æ¬å使ç¨äºéå¼è( ' '
- )ï¼ç¶ä½¿ç¨äºéå¼èå¾ï¼è¡¨åææ¬åï¼ç¨±çºæ¨è符ï¼å岿æ¯åå 大å°å¯«çï¼
- éæè¬èä½ å¨æ¥è©¢æè¡¨åææ¬åä¹æä½¿ç¨éå¼èï¼ä¸äºå·¥å·è»é«ï¼å pgAdmin
- æå¨ç¼åºåµå»ºè¡¨çæä»¤æèªåå°å¨æ¯åæ¨è符ä¸å éå¼èã å æ¤ï¼çºäºæ¨è­
- 符ççµ±ä¸ï¼ä½ æè©²ï¼
- * å¨åµå»ºè¡¨æé¿åå°æ¨è符使ç¨éå¼èå¼èµ·ä¾ã
- * 卿¨è符ä¸åªä½¿ç¨å°å¯«åæ¯ã
- * ï¼çºäºèå·²åå¨çæ¨è符ç¸åï¼å¨æ¥è©¢ä¸ä½¿ç¨éå¼èå°æ¨è符å¼èµ·ä¾ã
diff --git a/doc/FAQ_czech b/doc/FAQ_czech
deleted file mode 100644
index 99120e60606..00000000000
--- a/doc/FAQ_czech
+++ /dev/null
@@ -1,849 +0,0 @@
-
- Frequently Asked Questions
-
- Casto kladené dotazy (FAQ) PostgreSQL
-
- Poslední aktualizace: 29. ríjna 2007 (aktualizováno pro PostgreSQL
- 8.3)
-
- Soucasnı správce: Bruce Momjian (bruce@momjian.us)
-
- Prelozil: Pavel Stehule (pavel.stehule@gmail.com)
-
- Nejaktuálnejsí verzi tohoto dokumentu naleznete na adrese
- http://www.postgresql.org/files/documentation/faqs/FAQ.html
-
- Odpovedi na otázky vázané na konkrétní platformy naleznete na adrese
- http://www.postgresql.org/docs/faq/.
- _________________________________________________________________
-
- Obecné otázky
-
- 1.1) Co je to PostgreSQL? Jaká je správná vıslovnost slova PostgreSQL?
- 1.2) Kdo rídí vıvoj PostgreSQL?
- 1.3) Pod jakou licencí je PostgreSQL?
- 1.4) Na kterıch platformách lze provozovat PostgreSQL?
- 1.5) Kde mohu získat PostgreSQL?
- 1.6) Jaká je poslední verze?
- 1.7) Kde mohu získat podporu?
- 1.8) Jak a kam hlásit chyby?
- 1.9) Kde najdu informace o známıch chybách nebo nepodporovanıch
- vlastnostech?
- 1.10) Jaká je dostupná dokumentace?
- 1.11) Jak se mohu naucit SQL?
- 1.12) Jak se mohu pripojit k tımu vıvojáru?
- 1.13) Jak je na tom PostgreSQL v porovnání s jinımi databázemi?
- 1.14) Je PostgreSQL pripraven na aktuální zavádení letního casu v
- nekterıch zemích?
-
- Dotazy na klientská rozhraní
-
- 2.1) Která rozhraní jsou pouzitelná pro PostgreSQL?
- 2.2) Jaké nástroje lze pouzít pro PostgreSQL a web?
- 2.3) Existuje grafické rozhraní pro PostgreSQL?
-
- Administrativní dotazy
-
- 3.1) Jak nainstalovat PostgreSQL jinam nez do /usr/local/pgsql?
- 3.2) Jak nastavit pravidla pro prístup z jinıch stanic?
- 3.3) Jak vyladit databázi na vyssí vıkon?
- 3.4) Jaké mám ladící prostredky?
- 3.5) Co znamená "Sorry, too many clients", kdyz se zkousím pripojit?
- 3.6) Proc je nutnı dump a obnovení (load) databáze pri upgradu
- PostgreSQL?
- 3.7) Jakı hardware bych mel pouzívat?
-
- Provozní dotazy
-
- 4.1) Jak získat pouze první rádek dotazu? Náhodnı rádek?
- 4.2) Jak získám seznam tabulek, indexu, databází, a definovanıch
- uzivatelu. Mohu videt dotazy, které pouzívá psql pro zobrazení techto
- informací?
- 4.3) Jak zmenit datovı typ sloupce?
- 4.4) Jaká je maximální velikost rádku, tabulky a databáze?
- 4.5) Kolik diskového prostoru je potreba k ulození dat z normálního
- textového souboru?
- 4.6) Muj dotaz je pomalı a nepouzívá vytvorené indexy. Proc?
- 4.7) Jak zjistím, jak se vyhodnocuje muj dotaz?
- 4.8) Jak pouzít case-(in)sensitive regulární vıraz? Jak pouzít index
- pro case insensitive hledání?
- 4.9) Jak v dotazu detekovat, ze polozka je NULL? Jak bezpecne spojit
- dva retezce, pokud mohou obsahovat NULL? Lze trídit podle toho, jestli
- je polozka NULL nebo ne?
- 4.10) Jaké jsou rozdíly mezi ruznımi znakovımi typy?
- 4.11.1) Jak vytvorit serial/auto-increment polozku?
- 4.11.2) Jak získat hodnotu SERIAL po vlození rádku?
- 4.11.3) Nezpusobí currval() a nextval() problémy ve více uzivatelském
- prostredí?
- 4.11.4) Proc není vygenerované císlo pouzito pri prerusení
- transakce?Proc vznikají díry v císlování prostrednictvím sekvence nebo
- typu SERIAL?
- 4.12) Co to je OID? Co je to CTID?
- 4.13) Co znamená chybové hlásení "ERROR: Memory exhausted in
- AllocSetAlloc()"?
- 4.14) Jak zjistím, kterou verzi PostgreSQL pouzívám?
- 4.15) Jak vytvorit sloupec, kterı bude implicitne obsahovat aktuální
- cas?
- 4.16) Jak provést vnejsí spojení (outer join)?
- 4.17) Jak provést dotaz napríc nekolika databázemi?
- 4.18) Muze funkce vrátit více rádku nebo sloupcu?
- 4.19) Co je prícinou chyby "relation with OID xxxxx does not exist"?
- 4.20) Jaké jsou moznosti replikace databází?
- 4.21) Proc v dotazu nejsou rozpoznány názvy mıch tabulek nebo funkcí?
- Proc jsou velká písmena v názvech automaticky prevedena na malá
- písmena?
- _________________________________________________________________
-
- Obecné otázky
-
- 1.1) Co je to PostgreSQL? Jaká je správná vıslovnost slova PostgreSQL?
-
- Vıslovnost PostgreSQL je Post-Gres-Q-L , nebo zjednodusene Postgres .
- V rade jazyku je slovo PostgreSQL obtízne vyslovitelnı, proto se v
- hovoru casto pouzívá zjednodusená forma názvu. Pro ty, kterí by si
- rádi poslechli vıslovnost, je k dispozici audiozáznam v MP3 formátu.
-
- PostgreSQL je relacní databáze s nekterımi objektovımi rysy, která má
- moznosti tradicních komercních databázovıch systému s nekolika
- rozsíreními, které lze najít v DBMS systémech prístí generace.
- Pouzívání PostgreSQL není omezené a veskeré zdrojové kódy jsou volne
- dostupné.
-
- Za vıvojem PostgreSQL je mezinárodní skupina nezávislıch vıvojáru
- navzájem komunikujících prostrednictvím internetu. Tento projekt není
- rízen zádnou obchodní organizací. Pokud se chcete pridat k projektu,
- prectete si vıvojárské FAQ na adrese
- http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html .
-
- 1.2) Kdo rídí vıvoj PostgreSQL?
-
- Pokud budete hledat organizaci rídící vıvoj PostgreSQL, budete
- zklamáni. Nic takového neexistuje. Existují pouze "core" a CVS skupiny
- uzivatelu, ale ty existují více z administrátorskıch duvodu nez z
- organizacních. Projekt je smerován komunitou vıvojáru a uzivatelu, ke
- které se kdokoliv muze pripojit. Jediné co potrebuje, je prihlásit se
- do elektronické konference. Více ve vıvojárském FAQ.
-
- 1.3) Pod jakou licencí je PostgreSQL?
-
- PostgreSQL je predmetem následujících autorskıch práv:
-
- Dílcí Copyright (c) 1996-2009, PostgreSQL Global Development Group
- Dílcí Copyright (c) 1994-6, Regents of the University of California
-
- Udeluje se oprávnení k uzití, rozmnozování, provádení úprav a
- rozsirování tohoto softwaru a dokumentace k nemu, pro jakékoli úcely,
- bez licencního poplatku a bez písemné licencní smlouvy, za podmínky,
- ze na vsech jeho kopiích je uvedeno oznámení o vıse uvedenıch právech,
- jakoz i obsah tohoto a dvou následujících odstavcu.
-
- THE UNIVERSITY OF CALIFORNIA ("KALIFORNSKÁ UNIVERZITA") NENÍ V ZÁDNÉM
- PRÍPADE ODPOVEDNA ZÁDNÉ TRETÍ OSOBE ZA PRÍMOU, NEPRÍMOU, ZVLÁSTNÍ,
- NAHODILOU NEBO VİSLEDNOU SKODU, VCETNE USLÉHO ZISKU, ZPUSOBENOU UZITÍM
- TOHOTO SOFTWARU A DOKUMENTACE K NEMU, A TO I V PRÍPADE, ZE THE
- UNIVERSITY OF CALIFORNIA BYLA INFORMOVÁNA O MOZNOSTI VZNIKU TAKOVÉ
- SKODY.
-
- THE UNIVERSITY OF CALIFORNIA ZEJMÉNA NEPOSKYTUJE JAKÉKOLI ZÁRUKY, A TO
- NEJEN ZÁRUKY OBCHODOVATELNOSTI A VHODNOSTI TOHOTO VİROBKU KE
- SPECIFICKİM ÚCELUM. NÍZE UVEDENİ SOFTWARE JE POSKYTNUT "JAK STOJÍ A
- LEZÍ" A THE UNIVERSITY OF CALIFORNIA NENÍ POVINNA ZAJISTIT JEHO
- ÚDRZBU, PODPORU, AKTUALIZACI, VYLEPSENÍ NEBO MODIFIKACI.
-
- Vıse uvedené je BSD licence, bezná licence otevreného zdroje. Není zde
- zádné omezení ohledne uzití kódu zdroje. Jsme s tím spokojeni a nemáme
- v úmyslu na této skutecnosti cokoli menit.
-
- 1.4) Na kterıch platformách lze provozovat PostgreSQL?
-
- Strucne receno, PostgreSQL bezí na vsech moderních unixovıch
- systémech. Seznam tech, u kterıch probehlo testování, naleznete v
- instalacních instrukcích.
-
- PostreSQL také bezí nativne na vsech Microsof Windows systémech
- odvozenıch z Microsoft Windows NT jako jsou Windows 2000SP4, WindowsXP
- a Windows2003. Instalacní balícek naleznete na adrese
- http://pgfoundry.org/projects/pginstaller. Na starsích systémech s
- jeste MS-DOS jádrem lze spustit PostgreSQL s emulacním programem
- Cygwin.
-
- Dále existuje port pro Novell Netware 6 port na adrese
- http://forge.novell.com, a pro OS/2 verze (eComStation) na adrese
- http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
- SQL&stype=all&sort=type&dir=%2F .
-
- 1.5) Kde mohu získat PostgreSQL?
-
- Pomocí webového klienta z adresy http://www.postgresql.org/ftp/ nebo
- klienta ftp z adresy ftp://ftp.postgresql.org/pub/.
-
- 1.6) Jaká je poslední verze?
-
- Nejnovejsí verzí PostgreSQL je verze 8.2.5
-
- V plánu je uvolnovat kazdorocne jednu velkou verzi a kazdıch nekolik
- mesícu malé verze.
-
- 1.7) Kde mohu získat podporu?
-
- Nejcastejsí forma podpory uzivatelum PostgreSQL komunitou je
- prostrednictvím e-mailu. Na nasem webovém serveru naleznete odkaz na
- stránky,kde se muzete prihlásit do elektronické konference. Pro
- zacátek jsou doporucené konference general nebo bugs.
-
- Dalsí cestou je IRC kanál #postgresql na Freenode (irc.freenode.net).
- K pripojení pouzijte Unixovı príkaz irc -x '#postgresql' "$USER"
- irc.freenode.net nebo jakékoholiv jiného IRC klienta. V této síti
- existuje jeste spanelská (#postgresql-es) a francouzská
- (#postgresqlfr) verze. Dalsí PostgreSQL kanál naleznete na EFNet.
-
- Seznam spolecností poskytující komercní podporu naleznete na adrese
- http://techdocs.postgresql.org/companies.php.
-
- 1.8) Jak a kam hlásit chyby?
-
- Vyplnte formulár na adrese
- http://www.postgresql.org/support/submitbug. Na nasem ftp serveru
- ftp://ftp.postgresql.org/pub/ si overte, ze pouzíváte aktuální verzi
- PostreSQL.
-
- Chyby reportované prostrednictvím chybového formuláre nebo zasláním
- mailu do PostgreSQL konference obvykle generuje následující odezvu:
- * Nejedná se o chybu, a proc
- * Jedná se o známou chybu, která je jiz v seznamu úkolu TODO
- * Tato chyba byla opravena v aktuální verzi
- * Tato chyba byla jiz opravena ve verzi, která zatím nebyla
- oficiálne uvolnena
- * Pozadavek na dalsí doplnující informace:
- + Operacní systém
- + Verze PostgreSQL
- + Test reprodukující chybu
- + Ladící informace
- + Backtrace vıstup debuggeru
- * Jedná se o zatím nezjistenou chybu, pak muzete cekat
- + Záplatu odstranující chybu, která bude vlozena do dalsí velké
- nebo malé verze
- + Informaci, ze se jedná o chybu, kterou nelze okamzite resit a
- je proto pridána do TODO
-
- 1.9) Kde najdu informace o známıch chybách nebo nepodporovanıch vlastnostech?
-
- PostgreSQL podporuje rozsírenou podmnozinu SQL:2003. V nasem TODO
- naleznete seznam známıch chyb, chybejících vlastností, a plány do
- budoucna.
-
- Odezva na pozadavek na novou vlastnost PostgreSQL je obvykle:
- * Pozadavek je jiz v TODO
- * Pozadovaná funkce není chtená protoze
- + Duplikuje jiz existující funkci, která respektuje SQL
- standard
- + Implementací funkce by se prílis zkomplikoval kód bez
- relevantního prínosu
- + Funkce by mohla bıt nebezpecná nebo nespolehlivá
- * Pozadavek je pridán do TODO
-
- PostgreSQL nepozívá systém pro sledování chyb, protoze jsme zjistili,
- ze je efektivnejsí prímo reagovat na maily a udrzovat aktuální TODO. V
- praxi je snaha o co nejrychlejsí resení chyb, a chyby, které by se
- mohly projevit u mnoha uzivatelu jsou opravovány velice rychle. Jediné
- místo, kde lze dohledat vsechny zmeny, rozsírení a opravy v PostgreSQL
- je CVS log. Poznámky k verzi "Release notes" nezachycují vsechny
- zmeny, k nemz doslo.
-
- 1.10) Jaká je dostupná dokumentace?
-
- PostgreSQL obsahuje vynikající dokumentaci zahrnující manuál,
- manuálové stránky a testovací príklady. Podívejte se do adresáre /doc.
- Manuál je prístupnı online na http://www.postgresql.org/docs.
-
- K dispozici jsou zdarma dve online knihy na adresách
- http://www.postgresql.org/docs/books/awbook.html a
- http://www.commandprompt.com/ppbook/. Dalsí literaturu lze zakoupit.
- Nejpopulárnejsí je od Kerryho Douglase. Seznam dostupné literatury je
- na http://techdocs.postgresql.org/techdocs/bookreviews.php. Jeste je
- kolekce technicky orientovanıch clánku tematicky spojenıch s
- PostgreSQL na adrese http://techdocs.postgresql.org/.
-
- Rádkovı klient psql má \d príkazy pro zobrazení informací o typech,
- operátorech, funkcích, agregacních funkcí, atd. Pouzijte \? pro
- zobrazení dostupnıch príkazu.
-
- Dalsí dokumentaci najdete na nasem webu.
-
- 1.11) Jak se mohu naucit SQL?
-
- Podívejte se do vıse uvedené dokumentace. Dalsí online knihou je
- "Teach Yourself SQL in 21 Days, Second Edition" na adrese
- http://members.tripod.com/er4ebus/sql/index.htm. Mnoho nasich
- uzivatelu doporucuje knihu The Practical SQL Handbook, Bowman, Judith
- S., et al., Addison-Wesley. Dalsí The Complete Reference SQL, Groff et
- al., McGraw-Hill.
-
- Dalsí online tutoriály jsou dostupné na adresách:
- * http://www.intermedia.net/support/sql/sqltut.shtm
- * http://sqlcourse.com
- * http://www.w3schools.com/sql/default.asp
- * http://mysite.verizon.net/Graeme_Birchall/id1.html
-
- 1.12) Jak se mohu pripojit k tımu vıvojáru?
-
- Prostudujte si Developer's FAQ.
-
- 1.13) Jak je na tom PostgreSQL v porovnání s jinımi databázemi?
-
- Software muzeme porovnávat z nekolika ruznıch pohledu: vlastnosti,
- vıkon, spolehlivost, podpora a cena.
-
- Vlastnosti
-
- PostgreSQL nabízí vetsinu funkcí funkcionality velkıch komercních DBMS
- systému jako jsou: transakce, vnorené dotazy, spouste, referencní
- integrita a sofistikovanı systém zamykání. Poskytujeme urcité funkce,
- které ostatní systémy bezne nepodporují. Napr. uzivatelem definované
- typy, dedicnost, pravidla (rules), a MVCC architekturu.
-
- Vıkon
-
- Vıkon PostgreSQL je srovnatelnı s ostatními komercními nebo Open
- Source databázemi. V nekterıch prípadech je rychlejsí, jindy
- pomalejsí. Nás vıkon je obvykle +/-10% vuci ostatním databázím.
-
- Spolehlivost
-
- Uvedomujeme si, ze databáze musí bıt stoprocentne spolehlivá, jinak je
- nepouzitelná. Snazíme se, aby kazdá verze byla dobre otestována a
- obsahovala minimum chyb. Kazdá verze je minimálne nekolik mesícu v
- beta testovacím rezimu. Do produkcního rezimu se dostane, az kdyz
- nedochází k dalsím zmenám nebo opravám. Veríme, ze jsem více nez
- srovnatelní s ostatními databázemi v této oblasti.
-
- Podpora
-
- Na nasich internetovıch konferencích se setkává velká skupina vıvojáru
- a uzivatelu pri resení vyskytujících se problému. Nase internetové
- konference umoznují kontakt velké skupiny vıvojáru a uzivatelu.
- Nemuzeme garantovat opravu chyby, ale komercní DBMSs také vzdy
- negarantují resení problému. Veríme ale, ze díky prímému kontaktu na
- vıvojáre, nasi uzivatelskou komunitu, manuálum, a dostupnım zdrojovım
- kódum máme lepsí podporu nez ostatní DBMSs. Pro ty, kterí preferují
- komercní "per-incident" podporu, existuje spolecností, kterí ji
- nabízejí (FAQ sekce 1.7.)
-
- Cena
-
- PostgreSQL lze pouzívat bezplatne (a to i pro komercní pouzití). Také
- muzete neomezene pouzívat nás kód ve svıch produktech s vıjimkami
- specifikovanımi v nasí licenci (prebíráme BSD licenci).
-
- 1.14) Je PostgreSQL pripraven na aktuální zavádení letního casu v nekterıch
- zemích?
-
- Pocínaje verzí 8.0.[4+] podporuje PostgreSQL letní cas také pro USA.
- Podpora letního casu (daylight saving time) pro Kanadu a Západní
- Austrálii je obsazena ve verzích 8.0.[10+] a 8.1.[6+] a vsech
- následujících verzích. Starsí verze pouzívaly systémovou databázi
- casovıch zón obsahující, krome jiného, informaci o tom, zda se pro
- danou casovou zónu rozlisuje mezi letním a zimním casem.
- _________________________________________________________________
-
- Dotazy na klientská rozhraní
-
- 2.1) Která rozhraní jsou pouzitelná pro PostgreSQL?
-
- PostgreSQL se distribuuje pouze s rozhraním pro jazyk C a embedded C.
- Vsechna dalsí rozhraní predstavují nezávislé projekty, které je treba
- stáhnout z internetu samostatne. Osamostatnení techto projektu
- umoznuje nezávislost vıvojovıch tımu a moznost vydávat nové verze bez
- ohledu na vydání nové verze PostgreSQL.
-
- Nekteré programovací jazyky jako je napr. PHP obsahují rozhraní pro
- PostgreSQL. Rozhraní pro jazyky jako je Perl, Tcl, Python a mnoho
- dalsích jsou dostupné na adrese: http://gborg.postgresql.org v sekci
- Drivers/Interfaces.
-
- 2.2) Jaké nástroje lze pouzít pro PostgreSQL a web?
-
- Dobrım úvodem do problematiky databází v prostredí webovıch stránek
- muze bıt web http://www.webreview.com.
-
- PHP (http://www.php.net) je vynikajícím rozhraním pro tvorbu webu.
-
- Pro slozitejsí úlohy se casto pouzívá Perl a jeho BDB:Pg rozhraní s
- podporou CGI - CGI.pm nebo mod_perl(u).
-
- 2.3) Existuje grafické rozhraní pro PostgreSQL?
-
- K dispozici je rada grafickıch nástroju podporujících PostgreSQL a to
- od komercních nebo open source vıvojáru. Podrobnı seznam naleznete na
- adrese http://www.postgresql.org/docs/techdocs.54.
- _________________________________________________________________
-
- Administrativní dotazy
-
- 3.1) Jak nainstalovat PostgreSQL jinam nez do /usr/local/pgsql?
-
- Pri spoustení configure nastavte parametr --prefix
-
- 3.2) Jak nastavit pravidla pro prístup z jinıch stanic?
-
- Ve vıchozí konfiguraci, PostgreSQL umoznuje pouze pripojení z
- lokálního uzivatele prostrednictvím Unix domain sockets nebo TCP/IP
- spojení. Bez modifikace listen_addresses v souboru postgresql.conf, a
- povolení adresy v souboru $PGDATA/pg_hba.conf se nelze pripojit k
- PostgreSQL z ostatních stanic. Zmena vıse zmínenıch parametru vyzaduje
- restart databázového serveru.
-
- 3.3) Jak vyladit databázi na vyssí vıkon?
-
- Vıkon systému muzete ovlivnit ve trech oblastech:
-
- Zmeny dotazu
-
- * Pouzitím indexu vcetne cástecnıch a funkcionálních
- * Pouzitím COPY místo opakovanıch INSERTu
- * Sloucením mnoha SQL príkazu do jedné transakce snízením rezie na
- commit
- * Pouzíváním CLUSTERU, pokud nacítáte vetsí pocet rádek podle indexu
- * Pouzitím klauzule LIMIT v poddotazech
- * Pouzitím predpripravenıch dotazu
- * Pouzíváním ANALYZE. Tento príkaz aktualizuje statistiky, které se
- pouzívají pri optimalizaci dotazu
- * Pravidelné pouzití VACUUM nebo pouzívání pg_autovacuum
- * Odstranením indexu pred rozsáhlımi zmenami v datech
-
- Konfigurace serveru
-
- Urcité parametry v souboru postgresql.conf mají vliv na vıkon serveru.
- Detaily naleznete v prírucce Administrátora v Server Run-time
- Environment/Run-time Configuration. Dalsí komentáre naleznete v
- http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.ht
- ml a http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.
-
- Vıber hardware
-
- Vliv hardware na vıkon serveru je popsán v dokumentech
- http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html
- a http://www.powerpostgresql.com/PerfList/.
-
- 3.4) Jaké mám ladící prostredky?
-
- Nastavením log_* promennıch v konfiguraci serveru si vynutíte logování
- dotazu a procesních statistik, které Vám mohou pomoci pri ladení a
- optimalizaci vıkonu.
-
- 3.5) Co znamená "Sorry, too many clients", kdyz se zkousím pripojit?
-
- Prekrocil jste vıchozí limit, kterı je 100 soucasne pripojenıch
- uzivatelu. V konfiguraci serveru v postgresql.conf tuto hodnotu muzete
- zvetsit zmenou hodnoty max_connection. Nezapomente restartovat server.
-
- 3.6) Proc je nutnı dump a obnovení (load) databáze pri upgradu PostgreSQL?
-
- Zpusob císlování je popsán v dokumentaci na
- http://www.postgresql.org/support/versioning. Instrukce k provedení
- migrace na vyssí verzi jsou taktéz v dokumentaci na adrese
- http://www.postgresql.org/docs/current/static/install-upgrading.html.
-
- 3.7) Jakı hardware bych mel pouzívat?
-
- Jelikoz PC jsou vetsinou kompatibilní, lidé mají tendence verit, ze
- vsechna PC jsou stejne kvalitní. Coz není pravda. Pameti ECC, SCSI a
- kvalitní základní desky jsou mnohem spolehlivejsí a vıkonnejsí nez
- lacinejsí hardware. PostgreSQL pobezí na vetsine hardwaru, nicméne
- pokud je pro Vás spolehlivost a vıkon systému dulezitá, je dobré
- venovat cas nalezení vhodné hardwarové konfigurace. Na nasich
- elektronickıch konferencích muzete diskutovat o vhodnıch konfiguracích
- a znackách.
- _________________________________________________________________
-
- Provozní dotazy
-
- 4.1) Jak získat pouze první rádek dotazu? Náhodnı rádek?
-
- Pokud potrebujete pouze nekolik rádku a pokud víte kolik, pouzijte
- SELECT LIMIT. Pokud bude mozné pouzít index shodující se s ORDER BY,
- je mozné, ze se nebude provádet celı dotaz. Pokud neznáte pocet
- záznamu, pouzijte kurzor a príkaz FETCH.
-
- Pro vıber náhodného rádku pouzijte príkaz ve tvaru:
-SELECT col
-FROM tab
-ORDER BY random()
-LIMIT 1;
-
- 4.2) Jak získám seznam tabulek, indexu, databází, a definovanıch uzivatelu.
- Mohu videt dotazy, které pouzívá psql pro zobrazení techto informací?
-
- V psql príkazem \dt získáte seznam tabulek. Úplnı seznam príkazu psql
- získáte príkazem \?. Alternativne si muzete prostudovat zdrojovı kód
- psql - soubor pgsql/src/bin/psql/describe.c, kterı obsahuje SQL
- príkazy, které jsou generovány pro získání vıstupu psql "backslash"
- príkazu. Také muzete nastartovat psql s parametrem -E, kterı zpusobí
- zobrazení vsech SQL príkazu, které se odesílají na server. PostgreSQL
- také podporuje SQL standard INFORMACNÍ SCHÉMATA (standardní systémové
- tabulky). Klasickım dotazem do systémovıch tabulek získáte pozadované
- informace o strukture databáze.
-
- Systémové tabulky PostgreSQL (mimo rámec SQL standardu) pouzívají
- prefix pg_. Pro zjistení struktury databáze je muzete pouzít také, i
- kdyz preferovány jsou dotazy do informacního schématu.
-
- Seznam vsech databází získáte príkazem psql -l
-
- Dalsí inspiraci najdete v souboru pgsql/src/tutorial/syscat.source.
- Obsahuje ilustracní SELECTy potrebné k získání informací z systémovıch
- tabulek databáze.
-
- 4.3) Jak zmenit datovı typ sloupce?
-
- Ve verzích 8.0 a pozdejsích jednoduse:
-ALTER TABLE ALTER COLUMN TYPE
-
- V starsích verzích:
-BEGIN;
-ALTER TABLE tab ADD COLUMN new_col new_data_type;
-UPDATE tab SET new_col = CAST(old_col AS new_data_type);
-ALTER TABLE tab DROP COLUMN old_col;
-COMMIT;
-
- Po zmene spustte príkaz VACUUM FULL, aby doslo k uvolnení diskového
- prostoru pouzitého v tu chvíli jiz neplatnımi záznamy.
-
- 4.4) Jaká je maximální velikost rádku, tabulky a databáze?
-
- PostgreSQL má tato omezení:
-
- Maximální velikost databáze: neomezena (existují 32TB db)
- Maximální velikost tabulky: 32 TB
- Maximální velikost rádky: 480GB
- Maximální velikost polozky 1 GB
- Maximální pocet rádku v tabulce: neomezeno
- Maximální pocet sloupcu v tabulce: 250-1600 podle typu
- Maximální pocet indexu na tabulce: neomezeno
-
- Ve skutecnosti nic není neomezeno, limitem bıvá vzdy dostupná disková
- pamet nebo velikost operacní pameti. Pokud máte nekterou z techto
- hodnot neobvykle velkou, muze dojít ke snízení vıkonu.
-
- Maximální velikost tabulky je 32 TB a nevyzaduje podporu velkıch
- souboru operacním systémem. Velké tabulky se ukládají do nekolika 1 GB
- souboru takze limity souborového systému nejsou podstatné.
-
- Maximální velikost tabulky a maximální pocet sloupcu muzeme
- zectyrnásobit nastavením velikosti bloku na 32K.
-
- Indexy jsou povolené pouze na sloupcích jejichz délka je mensí nez
- 2000 znaku. Pokud tuto délku prekrocíme a index potrebujeme pro
- zajistení jednoznacnosti, je vhodnejsí pouzít funkcionální index nad
- MD5 funkcí nebo fulltextovı index.
-
- 4.5) Kolik diskového prostoru je potreba k ulození dat z normálního textového
- souboru?
-
- PostgreSQL vyzaduje az petinásobek diskového prostoru k ulození dat z
- textového souboru.
-
- Napríklad, uvazujme soubor se 100 tisíci rádky obsahující na kazdé
- rádce celé císlo a textovı popis. Text je v prumerne dvacet bytu
- dlouhı. Textovı soubor bude 2.8 MB dlouhı. Velikost databáze
- obsahující odpovídající data bude zhruba 5.2 MB.
- 24 bytu: hlavicka rádku (priblizne)
- 24 bytu: jedna celocíselná polozka a jedna textová
- + 4 byty: ukazatel na stránku k entici
- ------------------------------------------------------
- 52 bytu na rádek
-
- Velikost datové stránky PostgreSQL je 8192 bytu (8KB)
- 8192 bytu na stránce
----------------------- = 158 rádek na stránku
- 52 bytu za rádek
-
-100000 rádek
------------------------ = 633 stránek (zaokrouhleno nahoru)
- 158 rádek na stránce
-
-633 datovıch stránek * 8192 bytu na kazdou stránku = 5,185,536 bytu (5.2 MB)
-
- Indexy nemají tak velkou rezii, ale mohou bıt také velké, protoze
- obsahují indexovaná data.
-
- Hodnoty NULL jsou ulozeny v bitmapách, takze zabírají jen velmi málo
- diskového prostoru.
-
- 4.6) Muj dotaz je pomalı a nepouzívá vytvorené indexy. Proc?
-
- Kazdı dotaz nemusí nutne pouzít existující indexy. Index se pouzije
- tehdy, kdyz je tabulka vetsí nez urcitá minimální velikost, a dotaz
- vybírá pouze procentuálne malou cást rádku tabulky. To proto, ze
- náhodnı prístup k disku danı ctením indexu muze bıt pomalejsí nez
- lineární ctení tabulky nebo sekvencní ctení.
-
- PostgreSQL rozhoduje o pouzití indexu na základe statistiky prístupu k
- tabulce. Tyto statistiky se shromazdují príkazy VACUUM ANALYZE nebo
- ANALYZE. Díky statistikám má optimizer informaci o poctu rádek v
- tabulce a muze lépe rozhodnout o pouzití indexu. Statistiky se uplatní
- pri urcení optimálního poradí a metody spojení tabulek. Statistiky by
- se meli aktualizovat opakovane, tak jak se mení obsah tabulek.
-
- Indexy nejsou obycejne pouzity pro setrídení nebo spojení tabulek.
- Sekvencní zpracování následované explicitním trídením je obycejne
- rychlejsí nez pouzití indexu na velké tabulce.
-
- Jinak je tomu v prípade pouzití LIMIT a ORDER BY, pri kterém se
- vetsinou index pouzije, jelikoz je vısledkem pouze malá cást tabulky.
-
- Pokud si myslíte, ze optimizer mylne zvolil sekvencní prohledávání
- tabulky, pouzijte príkaz SET enable_seqscan TO 'off' a zkuste zda je
- prohledávání s indexem rychlejsí.
-
- Pri vyhledávání na základe vzoru jako je napr. operátor LIKE nebo ~ se
- indexy pouzijí pouze za urcitıch skutecností:
- * zacátek hledaného vzoru musí bıt ukotven k zacátku, tj.
- + vzor LIKE nesmí zacínat %
- + ~ regulární vıraz musí zacínat ^
- * vzor nesmí zacínat intervalem, napr. [a-e]
- * vyhledávaní, které není Case sensitiv jako je ILIKE nebo ~*
- nepouzívá indexy. Muzete ale pouzít funkcionální indexy, které
- jsou popsány v sekci 4.8
- * pri inicializaci databáze (initdb) musí bıt pouzito C locale nebo
- vytvorte speciální text_pattern_index, kterı umozní, pri
- respektování zmínenıch podmínek pouzití indexu operací LIKE. Pro
- vyhledávání celıch slov je mozné a vıhodné pouzít fulltext.
-
- 4.7) Jak zjistím, jak se vyhodnocuje muj dotaz?
-
- Podívejte se do nápovedy k príkazu EXPLAIN.
-
- 4.8) Jak pouzít case-(in)sensitive regulární vıraz? Jak pouzít index pro case
- insensitive hledání?
-
- Vyhledávání prostrednictvím regulárních vzoru zajistuje operátor ~,
- kterı je case-sensitive. Jeho case-insensitive varianta je operátor
- ~*. Case-insensitive variací operátoru LIKE je operátor ILIKE.
-
- Case-insensitive vyhledání se resí:
-SELECT *
-FROM tab
-WHERE lower(col) = 'abc';
-
- Tento dotaz nepouzije standardní index. Musíte pouzít tzv.
- funkcionální index:
-CREATE INDEX tabindex ON tab (lower(col));
-
- Pokud index vytvoríme jako unikátní, tak muzeme ukládat retezce
- obsahující malá i velká písmena, ale nikoliv retezce, které se od sebe
- odlisují jen v malıch a velkıch písmenech. K zajistení zápisu retezce
- obsahující pouze malá nebo pouze velká písmena pouzijte CHECK kontroly
- nebo triggery.
-
- 4.9) Jak v dotazu detekovat, ze polozka je NULL? Jak bezpecne spojit dva
- retezce, pokud mohou obsahovat NULL? Lze trídit podle toho, jestli je polozka
- NULL nebo ne?
-
- Pokud chcete testovat hodnotu NULL pouzijte operátor IS:
- SELECT *
- FROM tab
- WHERE col IS NULL;
-
- K spojení retezcu, které mohou obsahovat hodnotu NULL, pouzívejte
- funkci COALESCE(), napr.:
- SELECT COALESCE(col1, '') || COALESCE(col2, '')
- FROM tab
-
- Pokud chcete trídit podle hodnoty NULL, pouzijte vıraz IS NULL nebo IS
- NOT NULL v klauzuli ORDER. Hodnota pravda má prednost pred hodnotou
- false a tedy pokud pouzijete:
- SELECT *
- FROM tab
- ORDER BY (col IS NOT NULL)
-
- tak záznamy s NULL budou na zacátku setrídenıch dat.
-
- 4.10) Jaké jsou rozdíly mezi ruznımi znakovımi typy?
-
- Typ Interní název Poznámky
- VARCHAR(n) varchar n urcuje maximální délku
- CHAR(n) bpchar retezec je do dané délky rozsíren mezerami
- TEXT text bez omezení délky
- BYTEA bytea pole bytu nespecifikované délky
- "char" char jeden znak
-
- Na interní názvy muzete narazit v systémovém katalogu nebo v nekterıch
- chybovıch hláseních.
-
- Ctyri první typy jsou tzv. varlena typy (první ctyri byty na disku
- jsou obsahují délku, ostatní obsahují vlastní data). Skutecne obsazenı
- prostor je tedy o neco málo vetsí nez deklarovaná velikost. Na druhou
- stranu, delsí retezce jsou komprimovány, takze obsazenı prostor na
- disku muze bıt mensí nez se ceká.
-
- VARCHAR(n) je vhodnı pro ukládání ruzne dlouhıch retezcu u kterıch
- známe délkové omezení, TEXT pro retezce bez omezení délky (maximum je
- jeden gigabyte).
-
- CHAR(n) se pouzívá pro ulození stejne dlouhıch retezcu. CHAR(n) doplní
- mezerami na specifikovanou délku, VARCHAR(n) hodnoty se ukládají tak
- jak jsou. BYTEA je pro ukládání binárních dat - non ASCII hodnot.
- Vsechny zmínené typy mají podobné vıkonové charakteristiky.
-
- 4.11.1) Jak vytvorit serial/auto-increment polozku?
-
- V PostgreSQL muzete pouzít datovı typ SERIAL. Jeho pouzitím se
- automaticky vytvorí sekvence. Napríklad:
-CREATE TABLE person (
- id SERIAL,
- name TEXT
-);
-
- je automaticky transformováno na:
-CREATE SEQUENCE person_id_seq;
-CREATE TABLE person (
- id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
- name TEXT
-);
-
- Podrobnejsí informace najdete v manuálu v popisu príkazu
- create_sequence.
-
- 4.11.2) Jak získat hodnotu SERIAL po vlození rádku?
-
- Nejjednodussím zpusob, jak získat vygenerovanou hodnotu typu SERIAL,
- je vyuzít klauzuli RETURNING. Pro tabulku z 4.11.1 vypadá takto:
-INSERT INTO person (name) VALUES ('Blaise Pascal') RETURNING id;
-
- Také muzete pouzít funkci nextvall() a její vısledek pouzít v príkazu
- INSERT, nebo zavolat currval() po provedení príkazu INSERT.
-
- 4.11.3) Nezpusobí currval() a nextval() problémy ve více uzivatelském
- prostredí?
-
- Ne, currval vrací vzdy hodnotu, která byla vygenerována pro vás.
-
- 4.11.4) Proc není vygenerované císlo pouzito pri prerusení transakce?Proc
- vznikají díry v císlování prostrednictvím sekvence nebo typu SERIAL?
-
- Poté co sekvence vygeneruje nové císlo, tak se nedochází k zamcení
- sekvence a neceká se na úspesné nebo neúspesné dokoncení transakce.
- Odvoláním transakce, která si vyzádala císla sekvence se tato císla
- nenávratne ztratí.
-
- 4.12) Co to je OID? Co je to CTID?
-
- V prípade, ze tabulku nezalozíme s atributem WITHOUT OIDS, tak má
- kazdı rádek unikátní identifikacní císlo OID. Toto císlo je 4 bajtové
- celé císlo, které je jedinecné v celé instalaci. Pretece po 4
- miliardách rádku. PostgreSQL pouzívá OIDs jako interní linky v
- interních systémovıch tabulkách.
-
- K získání unikátního císla v nesystémovıch tabulkách je vhodnejsí
- pouzití typu SERIAL nez OID, jelikoz sekvence SERIAL se pouzívá pouze
- pro jednu tabulku a je tudíz méne náchylná na pretecení. Pokud byste
- se toho obávali, pouzijte typ SERIAL8.
-
- CTID se pouzívá k identifikaci konkrétního fyzického rádku. CTID se
- mení pokud je rádek modifikován nebo znovu nacten. Pouzívají ho indexy
- jako adresaci fyzickıch rádku.
-
- 4.13) Co znamená chybové hlásení "ERROR: Memory exhausted in
- AllocSetAlloc()"?
-
- Pravdepodobne jste vycerpal dostupnou virtuální pamet, nebo tvuj
- kernel má prílis nízké limity u urcitıch zdroju. Pred startem
- PostgreSQL vyzkousejte:
-ulimit -d 262144
-limit datasize 256m
-
- Mozná, ze se projde pouze jeden príkaz - zálezí to na vasem shellu.
- Mel by zvednout limity datovıch segmentu vasich procesu na dostatecne
- velkou hodnotu a snad umoznit dokoncení dotazu. Zmena limitu se bude
- aplikovat pouze na aktuální proces a na vsechny nove vytvorené
- procesy. Jestlize máte problém s SQL klientem, protoze vám server
- vrátil prílis dat, zkuste to pred startem klienta.
-
- 4.14) Jak zjistím, kterou verzi PostgreSQL pouzívám?
-
- V psql napiste:
-SELECT version();
-
- 4.15) Jak vytvorit sloupec, kterı bude implicitne obsahovat aktuální cas?
-
- Pouzijte CURRENT_TIMESTAMP:
-CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
-
- 4.16) Jak provést vnejsí spojení (outer join)?
-
- PostgreSQL podporuje standardní SQL syntaxi pro vnejsí spojení. Zde
- jsou dva príklady:
-SELECT *
-FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
- nebo
-SELECT *
-FROM t1 LEFT OUTER JOIN t2 USING (col);
-
- Tyto identické dotazy spojí sloupec t1.col k sloupci t2.col, a jeste
- vrátí vsechny nespárované rádky t2 (ty, které nedohledá v t2). RIGHT
- JOIN by pripojil vsechny nespárované rádky z t2. FULL JOIN vrátí
- vsechny spárované rádky i vsechny zbıvající rádky z obou tabulek.
- Klícové slovo OUTER je volitelné. Bezná operace JOIN se také oznacuje
- jako vnitrní spojení.
-
- 4.17) Jak provést dotaz napríc nekolika databázemi?
-
- Neexistuje zádnı zpusob, jak se v dotazu odkazovat na tabulky z jiné
- nez aktuální databáze. A to protoze má systémové tabulky ulozené
- nezávisle v kazdé databázi a není tak úplne zrejmé, jak by se dotaz
- provedenı napríc databázemi mel chovat.
-
- Jeden z doplnku dblink umoznuje dotaz nad nekolika tabulkami pomocí
- funkcí. Druhı zpusob je simultální pripojení klienta ke vsem
- relevantním databázím a sloucení vısledku na strane klienta.
-
- 4.18) Muze funkce vrátit více rádku nebo sloupcu?
-
- Jde to jednoduse pomocí set-returning funkce. Více na
- http://www.postgresql.org/docs/techdocs.17.
-
- 4.19) Co je prícinou chyby "relation with OID xxxxx does not exist"?
-
- Nechtenım vedlejsím efektem kesování SQL dotazu v PL/pgSQL funkci je
- problém s neplatnımi odkazy na docasné tabulky, které byly od prvního
- spustení funkce zruseny a znovu vytvoreny pred dalsím spustením
- PL/pgSQL funkce. Resením je pouzít príkaz EXECUTE a to proto, ze
- provádecí plán SQL príkazu spousteného príkazem EXECUTE se vytvárí
- pokazdé znovu (neukládá se do cache).
-
- Tento problém by se nemel vyskytovat u PostgreSQL verze 8.3 a vyssích
- verzích.
-
- 4.20) Jaké jsou moznosti replikace databází?
-
- Replikaci databáze umoznuje nekolik technoligií. Kazdá má urcité
- vıhody a nevıhody.
-
- Master/Slave replikaci podporuje jeden hlavní server, kterı prijímá
- pozadavky na zápis a ctení, a nekolik podrízenıch serveru, které
- umoznují pouze ctení (SELECT). Nejrozsírenejsím volne dostupnım
- resením tohoto typu je Slony-I.
-
- Replikace typu Multi-master podporuje existenci nekolika serveru s
- povolenım zápisem na více replikovanıch serverech. Toto resení zvysuje
- zátez serveru, protoze je nutná synchronizace serveru.
- Nejrozsírenejsím volne dostupnım resením je PGCluster.
-
- Jeste existuje nekolik komercních a hardware resení replikací
- podporujících ruzné modely replikace.
-
- 4.21) Proc v dotazu nejsou rozpoznány názvy mıch tabulek nebo funkcí? Proc
- jsou velká písmena v názvech automaticky prevedena na malá písmena?
-
- Nejcastejsím duvodem nerozpoznání názvu objektu bylo pouzití vlození
- názvu sloupce nebo tabulky mezi uvozovky pri zakládání tabulky. Pokud
- se název zapíse mezi uvozovky, pak je case sensitive, a v dusledku
- toho je nutné názvy techto sloupcu nebo tabulek v SQL príkazech také
- vkládat mezi uvozovky (pokud obsahují velká písmena). Nekteré
- programy, jako je napríklad pgAdmin, automaticky pouzívají uvozovky.
- Takze pokud chcete, aby systém identifikoval identifikátor, musíte:
- * nepouzívat uvozovky v príkazu CREATE TABLE
- * v identifikátoru pouzít pouze malá písmena
- * v dotazech vkládat identifikátory do uvozovek
diff --git a/doc/FAQ_farsi b/doc/FAQ_farsi
deleted file mode 100644
index 95b28bb9b65..00000000000
--- a/doc/FAQ_farsi
+++ /dev/null
@@ -1,1256 +0,0 @@
-PostgreSQL FAQسواÙâ€Ã˜Â§Ã˜ÂªÃ™Å  كه اغÙâ€Ã˜Â¨ در مورد PostgreSQL‌
-پرسيده مي شوند
-تاريخ آخرين اصÙâ€Ã˜Â§Ã˜Â­ اين ÙÂايÙâ€: 28 شهریور 1383 هجری
-شمسی
-نگهدارنده اصÙâ€Ã™Å  ÙÂاين(زبان انگÙâ€Ã™Å Ã˜Â³Ã™Å )در حاÙâ€
-حاضر : Bruce Momjian pgman@candle.pha.pa.us
-نگهدارنده ÙÂاينبه زبان ÙÂارسي: m.taghizadeh@imenafzar.net
- محمود تقي‌زاده مهرجردی
-
-آخرين نسخه اين ÙÂاينرا مي‌توانيد از اين
-آدرس بگيريد http://www.PostgreSQL.org/docs/faqs/FAQ.html
-سواÙâ€Ã˜Â§Ã˜ÂªÃ™Å  كه در مورد يك سکوی(Ù¾Ùâ€Ã˜ÂªÃ™Âرم) خاص است در
-اين آدرس جواب داده شده اند
-http://www.PostgreSQL.org/docs/index.html
-
-
-
-سواÙâ€Ã˜Â§Ã˜Âª عمومي
-1.1) PostgreSQL چيست Ùˆ چگونه بايد آن را تÙâ€Ã™Âظ كرد؟
-1.2) قانون كپي رايت‌ (حقوق معنوي) در مورد
-PostgreSQL به چه صورت است؟
-1.3) PostgreSQL‌ روي چه نوع يونيكسهايي اجرا
-مي‌شود؟
-1.4) روي چه محيطهاي غير يونيكسي مي‌توان آن را
-اجرا كرد؟
-1.5) PostgreSQL را از كجا مي‌توانم بگيرم؟
-1.6) از كجا خدمات پشتيباني بگيرم؟
-1.7) آخرين نسخه اعÙâ€Ã˜Â§Ã™â€¦ شده چيست؟
-1.8) چه مستندات و راهنمائيهايي وجود دارند؟
-1.9) چگونه مي‌توانم ازاشكاÙâ€Ã˜Â§Ã˜Âª شناخته شده Ùˆ يا
-امكاناتي كه در اين پايگاه داده وجود ندارد
-مطÙâ€Ã˜Â¹ شوم؟
-1.10) چگونه مي‌توانم زبان SQL را ياد بگيرم؟
-1.11) آيا PostgreSQL مشكنY2K‌ دارد يا خير؟
-1.12) چگونه مي‌توانم به تيم برنامه نويس PostgreSQL
-Ù…Ùâ€Ã˜Â­Ã™â€š شوم؟
-1.13) چگونه مي‌توانم يك اشكانرا به گروه
-برنامه نويس اعÙâ€Ã˜Â§Ã™â€¦ كنم؟
-1.14) وضعيت PostgreSQL‌ در مقايسه با ساير DBMSها به
-چه صورت است؟
-1.15) من چگونه مي‌توانم از نظر ماÙâ€Ã™Å  به PostgreSQL
-كمك كنم؟
-
-سواÙâ€Ã˜Â§Ã˜Âª مربوط به استÙÂاده از پايگاه داده
-2.1) آيا هيچ درايور ODBC‌ براي PostgreSQL وجود دارد؟
-2.2) Ú†Ù‡ ابزارهايي براي استÙÂاده از PostgreSQL‌ با
-صÙÂحات وب وجود دارد؟
-2.3) آيا PostgreSQL‌ يك واسط كاربري گراÙÂيكي دارد؟
-2.4) با چه زبانهاي برنامه‌نويسي مي‌توان با
-PostgreSQL‌ ارتباط برقرار كرد؟
-
-سواÙâ€Ã˜Â§Ã˜Âª مربوط به راهبري
-3.1) چگونه مي‌توانم PostgreSQL‌ را در شاخه‌اي غير
-از /usr/local/pgsql/ نصب كنم؟
-3.2) چرا موقعي كه من برنامه postmaster‌ را اجرا مي
-كنم پيام Bad system call‌ و يا core dump ‌مي‌گيرم؟
-3.3) چرا موقعي كه من سعي مي‌كنم برنامه postmaster‌
-را اجرا كنم خطاي IpcMemoryCreate مي‌گيرم؟
-3.4) چرا موقعي كه من سعي مي‌كنم برنامه postmaster‌
-را اجرا كنم خطاي IpcSemaphoreCreate مي‌گيرم؟
-3.5) چگونه مي‌توانم اتصاÙâ€Ã˜Â§Ã˜Âª ساير ماشينها را
-كنترنكنم؟
-3.6) براي كارايي باÙâ€Ã˜Â§Ã˜ÂªÃ˜Â± Ùˆ بهتر پايگاه داده من
-چه تنظيماتي را بايد انجام دهم؟
-3.7) Ú†Ù‡ امكاناتي براي پيدا كردن اشكاÙâ€Ã¢â‚¬Å’ وجود
-دارد؟
-3.8) چرا موقعي كه من مي‌خواهم به پايگاه داده
-وصنشوم پيام "Sorry, too many clients" ‌مي‌گيرم؟
-3.9) در شاخه pgsql_tmp چه چيزي قرار دارد؟
-3.10) چرا براي به روز كردن نسخه پايگاه داده من
-بايد كنداده ها را dump‌ و مجدداً restore كنم؟
-3.11) از Ú†Ù‡ سخت اÙÂزاري بايد استÙÂاده كنم؟
-
-سواÙâ€Ã˜Â§Ã˜Âª عمÙâ€Ã™Å Ã˜Â§Ã˜ÂªÃ™Å 
-4.1) تÙÂاوت بين binary cursors Ùˆ Normal cursors چيست؟
-4.2) من چگونه مي‌توانم ÙÂقط روي چند ردي٠اونيا
-يك ردي٠تصادÙÂÙŠ درخواست SELECT‌ بزنم؟
-4.3) من چگونه مي‌توانم Ùâ€Ã™Å Ã˜Â³Ã˜ÂªÃ™Å  از جداونيا ساير
-چيزهايي كه در psql‌ وجود دارد را ببينم؟
-4.4) چگونه يك ستون جدونرا حذ٠مي‌كنيد؟ چگونه
-نوع داده آن را عوض كنيم؟
-4.5) حداكثر اندازه يك رديÙÂ،‌ جدونو خود
-پايگاه داده چقدر است؟
-4.6) چقدر ÙÂضاي ديسك سخت براي ذخيره كردن
-داده‌‌هاي يك ÙÂاينمتني مورد نياز است؟
-4.7) چگونه مي‌توانم بÙÂهمم كه Ú†Ù‡ كاربران،‌
-پايگاه داده،‌ نمايه Ùˆ جداوÙâ€Ã™Å  در سيستم تعريÙÂ
-شده است؟
-4.8) چرا درخواستهاي من كند اجرا مي‌شوند يا
-چرا از نمايه ها استÙÂاده نمي‌كنند؟
-4.9) چگونه مي‌توانم نحوه بررسي درخواست را
-توسط بهينه‌ساز درخواستها مشاهده كنم؟
-4.10) نمايه R-tree‌ چيست؟
-4.11) بهينه ساز تكويني درخواست چيست؟ (Genetic Query
-Optimizer)
-4.12) چگونه از عبارات منظم براي جستجو استÙÂاده
-كنم؟ چگونه جستجويي انجام دهم كه حساس به متن
-نباشد؟ چگونه براي يك جستجوي غير حساس به متن
-از نمايه استÙÂاده كنم؟
-4.13) چگونه مي‌توانم در يك درخواست تشخيص دهم
-كه يك ÙÂÙŠÙâ€Ã˜Â¯ NULL‌ است؟
-4.14) تÙÂاوت بين گونه‌هاي مختÙâ€Ã™Â character چيست؟
-4.15.1) چگونه مي‌توانم يك ÙÂÙŠÙâ€Ã˜Â¯ سريانيا
-اÙÂزايشي ايجاد كنم؟
-4.15.2) چگونه مي‌توانم مقدار يك درج سرياÙâ€Ã™Å  را
-بدانم؟
-4.15.3) آیا توابع ()nextval و ()currval منجر به ایجاد
-شرایط race برای سایر کاربران می شوند؟
-4.15.4) چرا اعداد سریاÙâ€Ã›Å’ مربوط به تراکنشهای abort
-شده مجدداً استÙÂاده نمی شود؟ چرا بین اعداد
-سریاÙâ€Ã›Å’ یک ÙÂاصÙâ€Ã™â€¡ خاÙâ€Ã›Å’ ایجاد Ù…ÛŒ شود؟
-4.16) OID و TID چه هستند؟
-4.17) معني بعضي از ترمها Ùˆ ÙƒÙâ€Ã™â€¦Ã˜Â§Ã˜ÂªÃ™Å  كه در PostgreSQL‌
-استÙÂاده مي‌شود چيست؟
-4.18) چرا من خطاي "ERROR: Memory exhausted in AllocSetAlloc"
-مي‌گيرم؟
-4.19) از كجا تشخيص دهم كه ويرايش يا نسخه
-PostgreSQLيي كه من استÙÂاده مي‌كنم چيست؟
-4.20) چرا در حین اجرای عمÙâ€Ã›Å’ات روی large-objectها
-خطای "invalid large obj descriptor"به وجود می آید؟
-4.21) چگونه يك ستون ايجاد كنم كه مقدار زمان
-جاري را به عنوان مقدار پيش‌ÙÂرض داشته باشد؟
-4.22) چرا زير درخواستهايي كه از IN استÙÂاده
-مي‌كنند كند هستند؟
-4.23) چگونه مي‌توانم يك اÙâ€Ã˜Â­Ã˜Â§Ã™â€š خارجي (outer join)
-انجام دهم؟
-4.24) چگونه مي‌توان درخواستهايي از چند پايگاه
-داده توÙâ€Ã™Å Ã˜Â¯ كرد؟
-4.25) چگونه خروجي يك تابع مي‌تواند چند رديÙÂ
-يا ستون باشد؟
-4.26) در توابع PL/PgSQL چرا نمي‌توان با اطمينان
-جداونموقت را ايجاد يا حذ٠كرد؟
-4.27) چه گزينه‌هايي براي تكرار (replication) وجود
-دارد؟
-4.28) چه گزينه‌هايي براي رمزنگاري وجود دارد؟
-
-توسعه PostgreSQL
-5.1) من يك تابع نوشته‌ام. چگونه آن را در psql
-اجرا كنم؟ چرا با اجراي آن core dump مي‌گيرم؟
-5.2) چگونه مي‌توانم در توÙâ€Ã™Å Ã˜Â¯ نوع‌ها Ùˆ توابع
-جديد Ùˆ جاÙâ€Ã˜Â¨ براي PostgreSQL‌ همكاري Ùˆ مشاركت
-داشته باشم.
-5.3) چگونه مي‌توانم يك تابع به زبان C بنويسم
-كه خروجي آن يك ‌tuple (چند تايي) باشد؟
-5.4) من يك ÙÂاينمنبع را عوض كرده ام چرا در
-عمÙâ€Ã™Å Ã˜Â§Ã˜Âª كامپينمجدد آن تغيير ديده نمي‌شود؟
-
-
-
-
-سواÙâ€Ã˜Â§Ã˜Âª عمومي
-1.1) PostgreSQL چيست Ùˆ چگونه آن را بايد تÙâ€Ã™Âظ كرد؟
-PostgreSQL به صورت Post-Gres-Q-L‌ تÙâ€Ã™Âظ مي‌شود. يك ÙÂايÙâ€
-صوتي در آدرس http://www.postfresql.org/postgresql.mp3‌ براي
-كساني كه مايÙâ€Ã™â€ Ã˜Â¯ تÙâ€Ã™Âظ صحيح را بشنوند وجود
-دارد.
-PostgreSQL از روي سيستم مديريت پايگاه داده POSTGRES
-توسعه داده شده است (هنوز هم بعضي مواقع براي
-سادگي به آن Postgres Ú¯ÙÂته مي‌شود) كه يك نمونه
-تحقيقاتي از پايگاه داده‌هاي نسنبعد است.
-PostgreSQL همان اÙâ€ÃšÂ¯Ã™Ë†Ã™Å  داده قوي Ùˆ انواع داده را
-Ø­ÙÂظ كرده است ÙˆÙâ€Ã™Å  زبان PostQuel را با يك
-زيرمجموعه پيشرÙÂته از SQL جايگزين كرده است.
-PostgreSQL متن باز بوده و متن كامنآن در دسترس
-است.
-PostgreSQL توسط يك تيم برنامه‌نويس كه همگي در
-گروه پست اÙâ€Ã™Æ’ترونيك برنامه‌نويسان PostgreSQL
-عضو هستند، انجام مي‌شود. هماهنگ كننده اصÙâ€Ã™Å 
-در حانحاضر Marc G. Fournier‌ به آدرس scrappy@PostgreSQL.org
-مي‌باشد. (براي ديدن نحوه Ù…Ùâ€Ã˜Â­Ã™â€š شدن به اين تيم
-قسمت 1.6 را ببينيد). اين تيم در حاضر مسئوÙâ€Ã™Å Ã˜Âª
-تمام مسائنمربوط به برنامه‌نويسي PostgreSQL را
-بر عهده دارد. اين يك پروژه گروهي است و تحت
-كنترنهيچ شركتي نيست. براي اطÙâ€Ã˜Â§Ã˜Â¹Ã˜Â§Ã˜Âª بيشتر در
-مورد اين تيم به آدرس
-http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html مراجعه كنيد.
-اوÙâ€Ã™Å Ã™â€  نسخه PostgreSQL‌ توسط Andrew Yu and Jolly Chen به
-وجود آمد. اÙÂراد بسياري در توسعه Ùˆ رÙÂع اشكانو
-انتقانآن شركت كرده‌اند. متن اصÙâ€Ã™Å  Postgres كه
-PostgreSQL از روي آن نوشته شده است، توسط تعداد
-زيادي دانشجوي كارشناسي ارشدو دانشجوي
-كارشناسي و تيم برنامه‌نويسي كه تحت نظر
-پروÙÂسور Michael Stonebrake در دانشگاه
-بركÙâ€Ã™Å Ã˜Å’‌كاÙâ€Ã™Å Ã™Âرنيا كار مي‌كرده‌اند نوشته
-شده است.
-نام اصÙâ€Ã™Å  نرم اÙÂزار در دانشگاه بركÙâ€Ã™Å  Postgres‌
-بود. در سان1995 بعد از اضاÙÂÙ‡ شدن SQL نام آن به
-Postgres95 تغيير داده شد. در سان1996 نام آن به
-PostgreSQL تغيير داده شد.
-1.2) قوانين كپي رايت در مورد PostgreSQL به چه صورت
-است؟
-PostgreSQL تحت قانون كپي رايت زير قرار دارد:
-PostgreSQL Data Base Management System
-Portions copyright (c) 1996-2004, PostgreSQL Global Development Group Portions
-Copyright (c) 1994-6 Regents of the University of California
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose, without fee, and without a written agreement is
-hereby granted, provided that the above copyright notice and this paragraph and
-the following two paragraphs appear in all copies.
-IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
-DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST
-PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
-THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND
-THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
-UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-قانون باÙâ€Ã˜Â§ Ùâ€Ã™Å Ã˜Â³Ã˜Â§Ã™â€ Ã˜Â³ BSD كه يك Ùâ€Ã™Å Ã˜Â³Ã˜Â§Ã™â€ Ã˜Â³ ÙƒÙâ€Ã˜Â§Ã˜Â³Ã™Å Ã™Æ’
-براي متن‌هاي باز است مي‌باشد. هيچ محدوديتي
-در مورد نحوه استÙÂاده از متن در آن ديده
-نمي‌شود. ما آن را دوست داريم و هيچ قصدي براي
-تغيير آن نداريم.
-1.3) PostgreSQL‌ روي چه نوع يونيكسهايي اجرا
-مي‌شود؟
-در حاÙâ€Ã˜Âª ÙƒÙâ€Ã™Å  PostgreSQL روي هر Ù¾Ùâ€Ã˜ÂªÃ™Âرم (سكوي) سازگار
-با يونيكس اجرا مي‌شود. Ùâ€Ã™Å Ã˜Â³Ã˜Âª Ù¾Ùâ€Ã˜ÂªÃ™Âرمهايي كه
-تاكنون PostgreSQL‌ روي آنها نصب و تست شده است
-درقسمت دستوراÙâ€Ã˜Â¹Ã™â€¦Ã™â€Ã™â€¡Ã˜Â§Ã™Å  نصب آمده است.
-1.4) روي چه محيطهاي غير يونيكسي مي‌توان آن را
-اجرا كرد؟
-Client
-مي‌توان psql, كتابخانه libpq و ساير واسطها و
-برنامه‌هاي كاربردي را طوري كامپينكرد كه
-روي محيطهاي ويندوز نيز اجرا شوند. در اين
-حاÙâ€Ã˜Âª Client روي ويندوز اجرا مي‌شود Ùˆ از طربق
-شبكه Ùˆ پروتكنTCP/IP با يك سرور كه روي يك Ù¾Ùâ€Ã˜ÂªÃ™Âرم
-Ùâ€Ã™Å Ã™â€ Ã™Ë†Ã™Æ’س در حاناجراست ارتباط برقرار
-مي‌كند.يك ÙÂاينwin32.mak همراه با كدهاي PostgreSQL
-وجود دارد كه براي كامپينكردن كتابخانه libpq و
-برنامه psql مي‌باشد. P‌ostgreSQL‌ همچنين امكان
-ارتباط به صورت ODBC‌ را نيز دارد.
-Server
-با استÙÂاده از Cygwin‌ Ùˆ كتابخانه Cygnus مي‌توان
-پايگاه داده را روي ويندوز NT و يا Win2K اجرا
-كرد.براي ديدن اطÙâ€Ã˜Â§Ã˜Â¹Ã˜Â§Ã˜Âª بيشتر ÙÂاينpgsql/doc/FAQ_MSWIN
-‌را كه بهمراه توزبع‌هاي PostgreSQL آمده است
-ببينيد Ùˆ يا اينكه به اين صÙÂحه
-http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN مراجعه كنيد.
-در حانحاضر يك عمÙâ€Ã™Å Ã˜Â§Ã˜Âª انتقانPostgreSQL به روي
-سكوهاي Win NT/2000/XP در جريان است. براي ديدن وضعيت
-اين پروژه به سايت‌هاي
-http://momjian.postgresql.org/main/writings/pgsql/win32.htm Ùˆ
-http://techdocs.postgresql.org/guides/Windows مراجعه كنيد.
-همچنين يك عمÙâ€Ã™Å Ã˜Â§Ã˜Âª انتقانبر روي Novell Netware 6 نيز
-در حانانجام است كه در سايت http://forge.novell.com
-مي‌توانيد اطÙâ€Ã˜Â§Ã˜Â¹Ã˜Â§Ã˜Âª بيشتر را ببينيد.
-1.5) PostgreSQL را از كجا مي‌توانم بگيرم؟
-PostgreSQL‌ را از سايت اصÙâ€Ã™Å  آن ftp://ftp.PostgreSQL.org/pub
-مي‌توانيد بگيريد. در صÙÂحه اصÙâ€Ã™Å  سايت Ùâ€Ã™Å Ã˜Â³Ã˜Âª
-ساير آدرسهايي كه مي‌توانيد PostgreSQL‌ را از
-آنها بگيريد آمده است.
-1.6) از كجا خدمات پشتيباني بگيرم؟
-گروه پستي اصÙâ€Ã™Å  pgsql-general@PostgreSQL.org مي‌باشد. اين
-گروه براي بحث در مورد موضوعات مختÙâ€Ã™Â در زمينه
-PostgreSQL است. براي عضو شدن در اين گروه پستي يك
-نامه اÙâ€Ã™Æ’ترونيكي به آدرس گروه با محتوياتی كه
-در ادامه آمده است ارسانكنيد. در قسمت Subject
-چيزي ننويسيد.
- subscribe
- end
-آدرس گروه: pgsql-general-request@PostgreSQL.org
-همچنين يك گروه پستي هم به صورت ارسانچكيده
-پيامها وجود دارد. براي عضو شدن در اين گروه يك
-نامه با محتويات زير به این آدرس ارسانكنيد.
-pgsql-general-digest-request@PostgreSQL.org
- subscribe
- end
-در اين گروه هر موقع حجم نامه‌ها به 30
-كيÙâ€Ã™Ë†Ã˜Â¨Ã˜Â§Ã™Å Ã˜Âª رسيد براي تمام اعضاء ارسانمي‌شود.
-گروه پستي بررسي اÙÂشكاÙâ€Ã˜Â§Ã˜Âª هم وجود دارد. براي
-عضو شدن در اين گروه يك نامه با محتويات زير به
-pgsql-bugs-request@PostgreSQL.org ارسانكنيد.
- subscribe
- end
-گروه پستي مخصوص توسعه دهندگان
-(برنامه‌نويسان) نيز وجوددارد. براي عضويت در
-اين گروه يك نامه به آدرس زير با محتويات مشخص
-شده ارسانكنيد. pgsql-hackers-request@PostgreSQL.org
- subscribe
- end
-گروههاي پستي ديگري نيز در زمينه PostgreSQL‌ وجود
-دارد كه مي‌توانيد در سايت http://www.postgresql.org
-ببينيد.
-همچنين يك كانانIRC روي Freenode و EFNet بنام PostgreSQL#
-وجود دارد. شما مي‌توانيد از ÙÂرمان يونيكسي irc
--c '#PostgreSQL' "$USER" irc.phoenix.net. يا irc -c '#PostgreSQL' "$USER"
-irc.freenode.net استÙÂاده كنيد.
-Ùâ€Ã™Å Ã˜Â³Ã˜Âª شركتهايي كه از طريق آنها مي‌توانيد
-خدمات پشتيباني تجاري در زمينه PostgreSQL درياÙÂت
-كنيد در اين آدرس http://techdocs.postgresql.org/companies.php
-موجود است.
-1.7) آخرين نسخه اعÙâ€Ã˜Â§Ã™â€¦ شده چيست؟
-آخرين نسخه PostgreSQL‌ كه وجود دارد 7.4.3 است.
-هد٠ما آن است كه هر 6 ماه تا 8 ماه يك نسخه جديد
-ارائه شود.
-1.8) چه مستندات و راهنمائيهايي وجود دارند؟
-چندين كتابچه Ùˆ صÙÂحات راهنما Ùˆ مثاÙâ€Ã™â€¡Ã˜Â§Ã™Å  كوچك
-همراه با متن اصÙâ€Ã™Å  PostgreSQL‌ در شاخه doc وجود
-دارد. براي ديدن صÙÂحات راهنما مي‌توانيد به
-سايت http://www.PostgreSQL.org/docs نيز مراجعه نماييد.
-دو كتاب در زمينه PostgreSQL‌ در آدرس‌هاي
-http://www.PostgreSQL.org/docs/awbook.htm Ùˆ http://www.commandprompt.com/ppbook
-وجود دارد. Ùâ€Ã™Å Ã˜Â³Ã˜ÂªÃ™Å  از كتابهايي كه قابنخريد
-است در آدرس http://techdocs.PostgreSQL.org/techdocs/bookreviews.php
-وجود دارد. همچنين Ùâ€Ã™Å Ã˜Â³Ã˜ÂªÃ™Å  از مقاÙâ€Ã˜Â§Ã˜Âª ÙÂني در
-مورد PostgreSQL در آدرس http://techdocs.PostgreSQL.org وجود
-دارد.
-برنامه psql يك دستور d\ دارد كه اطÙâ€Ã˜Â§Ã˜Â¹Ã˜Â§Ã˜ÂªÃ™Å  در
-مورد انواع داده‌هاي قابنتعري٠و عمÙâ€ÃšÂ¯Ã˜Â±Ã¢â‚¬Å’ها
-Ùˆ توابع Ùˆ ... به ما نشان مي‌دهد. در سايت اصÙâ€Ã™Å 
-ما اطÙâ€Ã˜Â§Ã˜Â¹Ã˜Â§Ã˜Âª بيشتري را مي‌توانيد پيدا كنيد.
-1.9) چگونه مي‌توانم ازاشكاÙâ€Ã˜Â§Ã˜Âª شناخته شده Ùˆ يا
-امكاناتي كه در اين پايگاه داده وجود ندارد
-مطÙâ€Ã˜Â¹ شوم؟
-PostgreSQL يك زير مجموعه پيشرÙÂته از SQL-92 را
-پشتيباني مي‌كند. در Ùâ€Ã™Å Ã˜Â³Ã˜Âª TODO اÙÂشكاÙâ€Ã˜Â§Ã˜Âª
-شناخته شده يا امكاناتي كه وجود ندارد و يا
-برنامه‌‌هاي آينده آمده است.
-1.10) چگونه مي‌توانم زبان SQL را ياد بگيرم؟
-كتاب PostgreSQL در آدرس SQL http://www.PostgreSQL.org/docs/awbook.html
-‌را آموزش مي‌دهد. همچنين يك كتاب در آدرس
-http://www.commandprompt.com/ppbook وجود دارد. يك راهنماي
-خيÙâ€Ã™Å  خوب هم در سايت‌هاي
-http://www.intermedia.net/support/sql/sqltut.shtm Ùˆ
-http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM Ùˆ
-http://sqlcourse.com در مورد SQL وجود دارد.
-كتاب ديگري كه مي‌توان براي يادگيري SQL از آن
-استÙÂاده كرد كتاب "SQL را در 21 روز ياد بگيريد،‌
-ويرايش دوم" در سايت
-http://members.tripod.com/er4ebus/sql/index.htm مي‌باشد.
-تعداد زيادي از كاربران كتاب The Practical SQL را
-ترجيح مي‌دهند. كتاب ديگر The Complete Refrence SQL
-انتشارات McGraw-Hill مي‌باشد.
-1.11) آيا PostgreSQL مشكنY2K‌ دارد يا خير؟
-خير،‌PostgreSQL‌ با تاريخ‌هاي قبنو بعد از 2000
-مشكÙâ€Ã™Å  ندارد.
-1.12) چگونه مي‌توانم به تيم برنامه نويس PostgreSQL
-Ù…Ùâ€Ã˜Â­Ã™â€š شوم؟
-ابتدا،‌آخرين سورس را دونÙâ€Ã™Ë†Ã˜Â¯ كرده Ùˆ مستندات
-مربوط به برنامه‌نويسي PostgreSQL را در سايت
-مطاÙâ€Ã˜Â¹Ã™â€¡ كنيد. سپس به گروههاي پستي ‌ pgsql-patches Ùˆ
-pgsql-hackers عضو شويد. در مرحÙâ€Ã™â€¡ آخر وصÙâ€Ã™â€¡Ã¢â‚¬Å’هاي با
-كيÙÂيت باÙâ€Ã˜Â§ را به pgsql-patches ارسانكنيد.
-تعداد زيادي از برنامه‌نويسان وجود دارند كه
-امتياز انجام تغييرات در cvs‌ را دارند. هر
-كدام از آنها تعداد زيادي وصÙâ€Ã™â€¡Ã¢â‚¬Å’‌ با كيÙÂيت
-باÙâ€Ã˜Â§ به گروه ارسانكرده‌اند كه اعتماد
-گردانندگان PostgreSQL را به دست آورده‌اند.
-1.13) چگونه مي‌توانم يك اÙÂشكانرا به گروه
-برنامه نويس اعÙâ€Ã˜Â§Ã™â€¦ كنم؟
-Ùâ€Ã˜Â·Ã™Âاً صÙÂحه مربوط به اÙÂشكاÙâ€Ã˜Â§Ã˜Âª PostgreSQL را در
-سايت http://www.PostgreSQL.org/bugs/bugs.php مشاهده‌ كنيد. در
-اين سايت نحوه گزارش و ارسانيك اشكانتوضيح
-داده شده است.
- همچنين براي ديدن نسخه‌هاي جديدتر PostgreSQL و
-يا وجود يك وصÙâ€Ã™â€¡ جديد از سايت ftp://ftp.PostgreSQL.org/pub
-بازديد كنيد.
-1.14) وضعيت PostgreSQL‌ در مقايسه با ساير DBMSها به
-چه صورت است؟
-راههاي مختÙâ€Ã™ÂÙŠ براي اندازه‌گيري Ùˆ مقايسه
-نرم‌اÙÂزارها وجود دارد كه عبارتند از
-امكانات، كارايي، قابÙâ€Ã™Å Ã˜Âª اعتماد، پشتيباني Ùˆ
-قيمت
- امكانات
- PostgreSQL بيشتر امكانات موجود در سيستم‌هاي
- پايگاه داده تجاري بزرگ نظير transactions, subselets,
- triggers, views, foreign key referential integrity Ùˆ sophisticated
- locking‌ را دارد. در PostgreSQL‌‌ امكاناتي وجود
- دارد كه پايگاههاي داده ديگر آن را ندارند
- نظير user-defined types‌و Inheritance‌و rules‌و multi-version
- concurrency control
-
- كارايي
- كارايي PostgreSQL در حد بقيه سيستم‌هاي
- تجاري و متن باز است. در بعضي موارد سريعتر و
- در بعضي موارد از آنها كندتر است. در مقايسه
- با MySQL براي كاربران بيشتر و درخواست‌هاي
- پيچيده و بار زياد خواندن/نوشتن سريعتر است.
- در درخواست‌هاي ساده SELECT‌ از MySQL كندتر است.
- اÙâ€Ã˜Â¨Ã˜ÂªÃ™â€¡ MySQL خيÙâ€Ã™Å  از امكانات PostgreSQL كه در باÙâ€Ã˜Â§
- به آن اشاره شد را ندارد. هد٠اصÙâ€Ã™Å  ما امكانات
- Ùˆ قابÙâ€Ã™Å Ã˜Âª اعتماد باÙâ€Ã˜Â§Ã˜Â³Ã˜Âª در ضمن آنكه تÙâ€Ã˜Â§Ã˜Â´
- مي‌كنيم تا كارايي آن نيز بهبود يابد. در
- آدرس http://openacs.org/philosophy/why-not-mysql.html يك مقايسه
- جاÙâ€Ã˜Â¨ بين MySQL Ùˆ PostgreSQL وجود دارد. از طر٠ديگر
- MySQL‌ يك شركت است كه محصونخود را به صورت متن
- باز ارائه مي‌كند ÙˆÙâ€Ã™Å  براي نرم‌اÙÂزار غير
- متن باز خود احتياج به Ùâ€Ã™Å Ã˜Â³Ã˜Â§Ã™â€ Ã˜Â³ تجاري دارد بر
- Ø®Ùâ€Ã˜Â§Ã™Â PostgreSQL كه يك گروه كامÙâ€Ã˜Â§Ã™â€¹ متن باز هستند.
-
- قابÙâ€Ã™Å Ã˜Âª اطمينان
- ما ÙÂكر مي‌كنيم كه يك سيستم پايگاه
- داده‌اي كه مطمئن نباشد ارزشي ندارد. ما
- تمام تÙâ€Ã˜Â§Ã˜Â´Ã™â€¦Ã˜Â§Ã™â€  را براي ارائه كدهاي پايداري
- كه به خوبي تست شده باشند Ùˆ كمترين اÙÂشكاÙâ€Ã˜Â§Ã˜Âª
- را داشته باشند مي‌كنيم. هر نسخه جديدي كه
- ارائه مي‌شود حداقنيك ماه را در مرحÙâ€Ã™â€¡ تست
- بتا مي‌گذراند. ما بر اين باور هستيم كه
- قابÙâ€Ã™Å Ã˜Âª اطمينان PostgreSQL‌ در مقايسه با ساير
- سيستم‌هاي پايگاه داده قابنتوجه است و
- نسخه‌هايي كه تاكنون ارائه شده است نشان
- مي‌دهد كه ما توانايي ارائه يك سيستم قوي و
- محكم و مطمئن را كه آماده بهره‌برداري است
- داريم.
- پشتيباني
- گروههاي پستي ما امكان ارتباط و تماس به
- گروه بزرگي از برنامه نويسان و كاربران را
- مي‌دهد كه مي‌توانند در حنمشكÙâ€Ã˜Â§Ã˜Âª به
- ديگران كمك كنند. دسترسي مستقيم به
- برنامه‌نويسان و گروههاي كاربران و
- راهنماها Ùˆ كداصÙâ€Ã™Å  باعث مي‌شود كه
- پشتيباني PostgreSQL نسبت به ساير پايگاههاي
- داده به نحو بهتري انجام شود. همچنين امكان
- ارائه خدمات پشتيباني به صورت تجاري نيز
- وجود دارد. براي ديدن اطÙâ€Ã˜Â§Ã˜Â¹Ã˜Â§Ã˜Âª بيشتر به FAQ
- section 1.6 مراجعه كنيد.
- قيمت
- هم براي استÙÂاده تجاري Ùˆ هم غير تجاري هيچ
- هزينه‌اي نبايد پرداخت شود. هيچ محدوديتي
- براي انجام تغييرات در PostgreSQL توسط استÙÂاده
- كنندگان وجود ندارد به جز مواردي كه در
- Ùâ€Ã™Å Ã˜Â³Ã˜Â§Ã™â€ Ã˜Â³ BSD به آن اشاره شده است.
-1.15) من چگونه مي‌توانم از نظر ماÙâ€Ã™Å  به PostgreSQL
-كمك كنم؟
-PostgreSQL داراي يك ساختار تشكيÙâ€Ã˜Â§Ã˜ÂªÃ™Å  درجه اوناست
-كه آن را مديون Marc Fournier‌ است كه اين ساختار را
-ايجاد كرده است.
-كيÙÂيت يك ساختار براي يك پروژه متن باز بسيار
-اهميت دارد. يك ساختار خوب مي‌تواند مانع از
-حوادثي شود كه در حركت روبه‌جÙâ€Ã™Ë†Ã™Å  پروژه Ø®Ùâ€Ã™â€Ã™Å 
-وارد مي‌كنند.
-اÙâ€Ã˜Â¨Ã˜ÂªÃ™â€¡ اين ساختار تشكيÙâ€Ã˜Â§Ã˜ÂªÃ™Å  ارزان نيست.
-هزينه‌هاي ثابت ماهانه و روزمره براي
-نگهداري Ùˆ Ø­ÙÂظ اين ساختار مورد نياز است. اگر
-شما يا شركت شما مايناست كه از نظر ماÙâ€Ã™Å  به
-اين حركت كمك كند Ùâ€Ã˜Â·Ã™Âاً به سايت
-http://store.pgsql.com/shopping مراجعه كرده و كمك خود را
-اهدا كنيد.
-هر چند در صÙÂحه اصÙâ€Ã™Å  عبارت PostgreSQL,Inc‌ ذكر شده
-است ÙˆÙâ€Ã™Å  مشاركت عمدتاً براي پشتيباني از
-پروژه PostgreSQL‌ مي باشد و نه براي يك شركت مشخص.
-اگر ترجيح مي‌دهيد مي‌توانيد يك چك به آدرس
-مشخص شده ارسانكنيد.
-اگر يك استÙÂاده موÙÂÙ‚ از PostgreSQL سراغ داريد
-Ùâ€Ã˜Â·Ã™Âاً آن را به سايت http://advocacy.postgresql.org گزارش
-دهيد.
-
-
-
-سواÙâ€Ã˜Â§Ã˜Âª مربوط به استÙÂاده از پايگاه داده
-2.1) آيا هيچ درايور ODBC‌ براي PostgreSQL وجود دارد؟
-دو درايور ODBC بنامهاي psqlODBC‌ و OpenLink براي
-PostgreSQL‌ وجود دارد.
-براي گرÙÂتن psqlODBC به سايت
-http://gborg.postgresql.org/project/psqlodbc/projdisplay.php مراجعه
-كنيد.
-OpenLlink را از اين سايت http://www.openlinksw.com
-مي‌توانيد بگيريد. اين درايور با
-نرم‌اÙÂزارهاي مختÙâ€Ã™Â ODBC كار مي‌كند بنابراين
-شما قادر خواهيد بود با استÙÂاده از OpenLink روي
-اكثر سكو‌هايي كه نرم‌اÙÂزارODBC‌دارند بدون
-مشكنبه PostgreSQL نيز متصنشويد.
-اين محصونبه كساني كه احتياج به خدمات
-پشتيباني تجاري دارند ÙÂروخته مي‌شود. ÙˆÙâ€Ã™Å 
-نسخه آزاد اين نرم‌اÙÂزار هميشه در درسترس
-مي‌باشد. براي كسب اطÙâ€Ã˜Â§Ã˜Â¹Ã˜Â§Ã˜Âª بيشتر سواÙâ€Ã˜Â§Ã˜Âª خود
-را به آدرس postgres95@openlink.co.uk ‌ارساننماييد.
-2.2) Ú†Ù‡ ابزارهايي براي استÙÂاده از PostgreSQL‌ با
-صÙÂحات وب وجود دارد؟
-در سايت http://www.webreview.com براي استÙÂاده از
-PostgreSQL‌ در صÙÂحات وب راهنماييهاي خوبي وجود
-دارد.
-براي تركيب Ùˆ استÙÂاده در صÙÂحات وب زبان PHP‌ يك
-واسط بسيار مناسب است. اطÙâ€Ã˜Â§Ã˜Â¹Ã˜Â§Ã˜Âª بيشتر راجع به
-PHP‌در سايت http://www.php.net وجود دارد.
-مثاÙâ€Ã™â€¡Ã˜Â§Ã™Å Ã™Å  نيز با استÙÂاده از Perl‌ Ùˆ CGI.pm Ùˆ mod_perl
-وجود دارد.
-2.3) آيا PostgreSQL‌ يك واسط كاربري گراÙÂيكي دارد؟
-چند نرم اÙÂزار گراÙÂيكي براي PostgreSQL‌ وجود دارد
-كه شامنpgAccess درسايت http://www.pgaccess.org و pgAdmin III در
-سايت http://www.pgadmin.org و RHDB Admin در سايت
-http://sources.redhat.com/rhdb و Rekall در سايت
-http://www.thekompany.com/products/rekall مي‌باشد. همچنين يك
-phpPgAdmin هم در سايت http://phppgadmin.sourceforge.net وجود
-دارد كه يك واسط وبي براي مديريت PostgreSQL
-مي‌باشد.
-براي ديدن اطÙâ€Ã˜Â§Ã˜Â¹Ã˜Â§Ã˜Âª بيشتر راجع به
-نرم‌اÙÂزارهاي گراÙÂيكي براي PostgreSQL به آدرس
-http://techdocs.postgresql.org/guides/GUITools مراجعه كنيد.
-2.4) با چه زبانهاي برنامه‌نويسي مي‌توان با
-PostgreSQL‌ ارتباط برقرار كرد؟
-بيشتر زبانهاي برنامه‌نويسي مي‌توانند با
-PostgreSQL‌ ارتباط برقرار كنند. به همراه سورس
-PostgreSQL تعدادي از واسطهاي مورد نياز براي
-ارتباط با پايگاه داده از طريق زبانهاي مختÙâ€Ã™Â
-آمده است كه در زير Ùâ€Ã™Å Ã˜Â³Ã˜Âª آنها را مشاهده
-مي‌كنيد.
- C (libpq)
- Embedded C (ecpg)
- Java (jdbc)
- Python (PyGreSQL)
- TCL (libpgtcl)
-واسطهاي ديگر در سايت http://gborg.postgresql.org در قسمت
-Drivers/Interfaces وجود دارد.
-
-
-
-سواÙâ€Ã˜Â§Ã˜Âª مديريتي
-3.1) چگونه مي‌توانم PostgreSQL‌ را در شاخه‌اي غير
-از /usr/local/pgsql/ نصب كنم؟
-موقع اجراي دستور configure از گزينه prefix-- استÙÂاده
-كنيد.
-3.2) چرا موقعي كه من برنامه postmaster‌ را اجرا مي
-كنم پيام Bad system call‌ و يا core dump ‌مي‌گيرم؟
-به دÙâ€Ã˜Â§Ã™Å Ã™â€ مختÙâ€Ã™Â ممكن است اين اتÙÂاق بيÙÂتد. اما
-در قدم اونشما مطمئن شويد كه كه امكانات
-اضاÙÂÙ‡ System V‌ در كرننشما نصب شده باشد. PostgreSQL
-براي اجرا شدن نياز به استÙÂاده از امكانات
-حاÙÂظه مشترك Ùˆ سماÙÂورها دارد.
-3.3) چرا موقعي كه من سعي مي‌كنم برنامه postmaster‌
-را اجرا كنم خطاي IpcMemoryCreate مي‌گيرم؟
-احتماÙâ€Ã˜Â§Ã™â€¹Ã¢â‚¬Å’ قسمت ايجاد حاÙÂظه مشترك در كرننبه
-درستي تنظيم نشده است Ùˆ يا اينكه بايد ÙÂضاي
-حاÙÂظه اشتراكي در كرننرا زياد كرد. ميزان
-دقيق حاÙÂظه مشترك مورد نياز بسته به معماري Ùˆ
-نحوه استÙÂاده از باÙÂرها توسط برنامه postmaster
-دارد. براي بيشتر سيستم‌ها كه با تنظيمات
-پيش‌ÙÂرض كار مي‌كنند مقدار اين حاÙÂظه حدود 1
-مگابايت است. براي ديدن اطÙâ€Ã˜Â§Ã˜Â¹Ã˜Â§Ã˜Âª بيشتر راجع به
-حاÙÂظه مشترك Ùˆ سماÙÂور به PostgreSQL Administrator's Guide
-مراجعه كنيد.
-3.4) چرا موقعي كه من سعي مي‌كنم برنامه postmaster‌
-را اجرا كنم خطاي IpcSemaphoreCreate مي‌گيرم؟
-اگر پيغام خطا (‌pcSemaphoreCreate: semget failed (No space left on
-device باشد به اين معني است كه تعداد سماÙÂورهاي
-تنظيم شده در كرننكاÙÂÙŠ نيست. PostgreSQL‌ براي هر
-ÙÂرايندي كه در backend اجرا مي‌شود به يك سماÙÂور
-نياز دارد. يك راه حنموقت براي اين مسئÙâ€Ã™â€¡ آن
-است كه postmaster را با اعمانمحدوديت روي تعداد
-ÙÂرايندهايي كه مي‌تواند ايجاد كند اجرا كنيم.
-براي اينكار از گزينه N- و يك عدد كمتر از 32
-استÙÂاده كنيد. راه حندائمي اين مشكنآن است كه
-پارامترهاي SEMMNS, SEMMNI كرننرا اÙÂزايش دهيم.
-در زمان دسترسي خيÙâ€Ã™Å  زياد به پايگاه داده، ‌
-سماÙÂورهاي نامعتبر مي‌توانند باعث crash‌ كردن
-سيستم شوند.
-اگر پيغام خطا چيز ديگري باشد احتماÙâ€Ã˜Â§Ã™â€¹ به
-دÙâ€Ã™Å Ã™â€ آن است كه كرنناز سماÙÂورها پشتيباني
-نمي‌كند. براي ديدن اطÙâ€Ã˜Â§Ã˜Â¹Ã˜Â§Ã˜Âª بيشتر راهنماي
-مديريتي PostgreSQL را مطاÙâ€Ã˜Â¹Ã™â€¡ كنيد.
-3.5) چگونه مي‌توانم اتصاÙâ€Ã˜Â§Ã˜Âª ساير ماشينها را
-كنترنكنم؟
-به صورت پيش ÙÂرض ÙÂقط از ماشيني كه PostgreSQL روي آن
-در حاناجراست مي‌توان با استÙÂاده از
-سوكت‌هاي يونيكسي به آن متصنشد. ساير
-ماشين‌ها قادر نيستند به PostgreSQL متصنشوند مگر
-آنكه گزينه tcp_sockets در ÙÂاينpostgresql.conf ÙÂعانشده Ùˆ
-همچنين با اصÙâ€Ã˜Â§Ã˜Â­ ÙÂاينPGDATA/ph_hba.conf هويت‌شناسي
-مبتني بر ميزبان نيز ÙÂعانشود. با اين كار
-مي‌توان اتصاÙâ€Ã˜Â§Ã˜Âª TCP/IP به PostgreSQL‌ ايجاد كرد.
-3.6) براي كارايي باÙâ€Ã˜Â§Ã˜ÂªÃ˜Â± Ùˆ بهتر پايگاه داده من
-چه تنظيماتي را بايد انجام دهم؟
-به طور حتم استÙÂاده از انديس‌ها باعث باÙâ€Ã˜Â§
-رÙÂتن سرعت پاسخ‌گويي به درخواست‌ها خواهد
-شد. دستور EXPLAIN ANALYZE به شما امكان ديدن نحوه
-پردازش يك دستور توسط PostgreSQL را مي‌دهد.
-اگر شما تعداد زيادي INSERT‌ داريد سعي كنيد
-آنها را با قرار دادن در يك ÙÂاينبا دستور COPY‌
-اجرا كنيد. اين دستور به مراتب از INSERT سريعتر
-است. حتي‌اÙâ€Ã˜Â§Ã™â€¦Ã™Æ’ان سعي كنيد از تراكنشها
-استÙÂاده نكنيد. تراكنشها مجموعه دستوراتي
-هستند كه بيند BEGIN Ùˆ â€ÂCOMMIT مي‌آيند. اگر يك
-دستور به صورت عادي اجرا شود PostgreSQL خود آن
-دستور را به صورت يك تراكنش مستقننگاه كرده و
-اجرا مي‌كند. موقعی كه تغييرات زيادي در
-پايگاه داده انجام مي‌شود انديسهاي قبÙâ€Ã™Å  را
-حذ٠و مجدداً‌ ايجاد كنيد.
-استÙÂاده از گزينه o -F- در ÙÂرمان postmaster باعث غير
-ÙÂعانكردن ()fsync مي‌شود. اين دستور بعد از هر
-تراكنش اطÙâ€Ã˜Â§Ã˜Â¹Ã˜Â§Ã˜Âª را روي هاردديسك منتقÙâ€
-مي‌كند.
-براي اÙÂزايش تعداد باÙÂرهاي حاÙÂظه اشتراكي از
-گزينه B- به همراه ÙÂرمان postmaster استÙÂاده كنيد.
-توجه كنيد كه اگر اين عدد خيÙâ€Ã™Å  بزرگ باشد ممكن
-است postmaster اصÙâ€Ã˜Â§Ã™â€¹Ã¢â‚¬Å’ اجرا نشود. هر باÙÂر 8 كيÙâ€Ã™Ë†
-بايت حاÙÂظه نياز دارد Ùˆ تعداد باÙÂرها به طور
-پيش ÙÂرض 64 است.
-همچنين مي‌توان با گزينه S- ميزان حاÙÂظه‌اي
-كه براي مرتب‌سازي‌هاي موقت توسط PostgreSQL
-استÙÂاده مي‌شود را اÙÂزايش داد. مقدار پيش ÙÂرض
-512 كيÙâ€Ã™Ë† بايت است.
-استÙÂاده از دستور CLUSTER نيز براي باÙâ€Ã˜Â§ بردن
-كارايي موثر ا ست. دستور راهنماي CLUSTER اطÙâ€Ã˜Â§Ã˜Â¹Ã˜Â§Ã˜Âª
-بيشتري در اين زمينه به شما مي‌دهد.
-3.7) Ú†Ù‡ امكاناتي براي پيدا كردن اشكاÙâ€Ã¢â‚¬Å’ وجود
-دارد؟
-PostgerSQL‌ امكانات مختÙâ€Ã™ÂÙŠ براي گزارش دادن
-وضعيت خود دارد كه براي اشكانزدايي مي‌توان
-از آنها استÙÂاده كرد.
-با استÙÂاده از گزينه enable-assert-- تعداد زيادي
-()assert براي مونيتور كردن و توق٠برنامه در صورت
-بروز خطاهاي ناخواسته ÙÂعانمي‌شود.
-هم Postmaster و هم postgres گزينه‌هاي زيادي براي
-اشكانزدايي دارند. موقعي كه postmaster را اجرا
-مي‌كنيد خروجي استاندارد Ùˆ خطا را سمت ÙÂاينlog
-ارسانكنيد.
- cd /usr/local/pgsql
- ./bin/postmaster >server.log 2>&1 &
-اين كار يك ÙÂاينlog در باÙâ€Ã˜Â§Ã˜ÂªÃ˜Â±Ã™Å Ã™â€  شاخه PostgreSQL‌
-ايجاد مي‌كند. اين ÙÂاينحاوي اطÙâ€Ã˜Â§Ã˜Â¹Ã˜Â§Ã˜Âª Ù…ÙÂيدي
-در مورد مسائنو خطاهايي است كه براي سرور
-اتÙÂاق اÙÂتاده است. براي ديدن جزئيات بيشتر
-مي‌توان از d- به همراه ÙÂرمان postmaster‌ استÙÂاده
-كرد. گزينه d- همچنين يك عدد مي‌گيرد كه نشان
-دهنده سطح جزئياتي است كه در Log‌ÙÂايننوشته
-مي‌شود. با باÙâ€Ã˜Â§Ã˜Â¨Ã˜Â±Ã˜Â¯Ã™â€  اين عدد حجم اطÙâ€Ã˜Â§Ã˜Â¹Ã˜Â§Ã˜Âª
-توÙâ€Ã™Å Ã˜Â¯ شده در LogÙÂايننيز اÙÂزايش مي‌يابد.
-اگر postmaster در حاناجرا نباشد، مي‌توانيم postgres
-را به طور مستقيم از خط ÙÂرمان اجرا كرده Ùˆ
-دستورات SQL را به آن بدهيم. اين كار ÙÂقط براي
-اشكاÙâ€Ã¢â‚¬Å’يابي توصيه مي‌شود. توجه كنيد كه در
-اين حاÙâ€Ã˜Âª يك دستور با كاراكتر newline خاتمه پيدا
-مي‌كند و نه با ;. اگر postmaster را با امكانات
-اشكاÙâ€Ã¢â‚¬Å’يابي كامپينكرده باشيد مي‌توانيد با
-استÙÂاده از يك برنامه اشكاÙâ€Ã¢â‚¬Å’ياب اجراي
-برنامه را مونيتور كنيد.
-اگر postmaster در حاناجرا باشد با دستور psql
-مي‌توان به postgres متصنشد. با پيدا كردن PID
-ÙÂرايند postgres كه psql به آن متصنشده است مي‌توان
-آن را مونيتور كرد. براي اينكار بايد يك
-برنامه اشكاÙâ€Ã¢â‚¬Å’ياب را به آن pid متصنكرد. اگر
-بخواهيم باÙâ€Ã˜Â§ آمدن postgres را مونيتور كنيم كاÙÂÙŠ
-است "PGOPTIONS="-W n و psql را اجرا كنيم. اين كار باعث
-مي‌شود كه postgres با n ثانيه تاخير اجرا شود و در
-اين ÙÂاصÙâ€Ã™â€¡ شما مي‌توانيد برنامه اشكاÙâ€Ã¢â‚¬Å’ياب
-را به آن متصنكرده و با قرار دادن يك نقطه
-توق٠روند اجراي آن را مونيتور كنيد.
-postgres گزينه‌هاي s-‌ و A- و t-‌ دارد كه براي
-پيدا كردن اشكاÙâ€Ã˜Â§Ã˜Âª بسيار مناسب هستند.
-شما مي‌توانيد postgreSQL را با امكانات profiling
-كامپينكنيد. اين كار باعث مي‌شود كه زمان
-اجراي دقيق هر تابع در برنامه مشخص شود.
-خروجي‌هاي توÙâ€Ã™Å Ã˜Â¯ شده در اين حاÙâ€Ã˜Âª در ÙÂايÙâ€
-DLINUX_PROFILE. ريخته مي‌شود.
-3.8) چرا موقعي كه من مي‌خواهم به پايگاه داده
-وصنشوم پيام "Sorry, too many clients" ‌مي‌گيرم؟
-شما بايد حداكثر تعداد ÙÂرايندهاي همزمان
-postmaster را اÙÂزايش دهيد. مقدار پيش ÙÂرض 32 است.
-براي اÙÂزايش آن مي‌توان از گزينه N- استÙÂاده
-كرد Ùˆ يا ÙÂاينpostgresql.conf را اصÙâ€Ã˜Â§Ã˜Â­ نمود
-توجه كنيد كه اگر N- مقداري بيشتر از 32 داشته
-باشد بايد مقدار B- را نيز اÙÂزايش دهيم. اين
-مقدار بايد حداقندو برابر مقدار N-‌ باشد.
-براي اعداد خيÙâ€Ã™Å  باÙâ€Ã˜Â§ بايد بعضي از
-پارامترهاي كرننرا نيز اصÙâ€Ã˜Â§Ã˜Â­ كرد.
-پارامترهايي نظير حداكثر اندازه حاÙÂظه
-اشتراكي SHMMAX ØŒ حداكثر تعداد سماÙÂورها SEMMNI‌ Ùˆ
-SEMMNS ØŒ حداكثر تعداد ÙÂرايندها NPROCØŒ حداكثر
-ÙÂرايندهاي يك كاربر MAXUPRC Ùˆ حداكثر ÙÂايÙâ€Ã™â€¡Ã˜Â§Ã™Å  باز
-NFILE Ùˆ NINODE. يكي از دÙâ€Ã˜Â§Ã™Å Ã™â€Ã™Å  كه تعداد اتصاÙâ€Ã˜Â§Ã˜Âª
-همزمان postgreSQL محدود است آن است كه نيازهاي
-PostgreSQL بيش از منابع موجود سيستم نباشد.
-3.9) در شاخه pgsql_tmp چه چيزي قرار دارد؟
-دراين شاخه ÙÂايÙâ€Ã™â€¡Ã˜Â§Ã™Å  موقتي قرار دارد كه با
-اجراي درخواستها به وجود آمده است. به عنوان
-مثاناگر براي اجراي دستور order by نياز به انجام
-مرتب سازي باشد Ùˆ در صورتي كه حاÙÂظه مشخص شده
-با گزينه S- براي اينكار كاÙÂÙŠ نباشد سيستم يك
-ÙÂاينموقت در اين شاخه ايجاد مي‌كند تا عمÙâ€
-مرتب سازي را انجام دهد.
-ÙÂايÙâ€Ã™â€¡Ã˜Â§Ã™Å  موقت معموÙâ€Ã˜Â§Ã™â€¹ به صورت اتوماتيك پاك
-مي‌شود اما اگر postgreSQL در حين مرتب سازي crash‌
-كند آن ÙÂايÙâ€Ã™â€¡Ã˜Â§ باقي مي‌مانند. با stop Ùˆ start كردن
-برنامه postmaster اين ÙÂايÙâ€Ã™â€¡Ã˜Â§ پاك مي‌شوند.
-3.10) چرا براي به روز كردن نسخه پايگاه داده من
-بايد كنداده ها را dump‌ و مجدداً restore كنم؟
-تيم برنامه نويس postgreSQL در نسخه‌هاي ارائه شده
-كه ÙÂقط minor آنها متÙÂاوت است ÙÂقط تغييرات كوچكي
-اعمانمي‌كنند؛ بنابراين براي به روز كردن از
-نسخه 7.2‌به 7.2.1 نيازي به dump و restore نيست. اما در
-نسخه‌هايي كه major آنها تغيير مي‌كند غاÙâ€Ã˜Â¨Ã˜Â§Ã™â€¹
-ساختار داخÙâ€Ã™Å  جداونو ÙÂايÙâ€Ã™â€¡Ã˜Â§Ã™Å  داده تغيير
-مي‌كند. اين تغييرات معموÙâ€Ã˜Â§Ã™â€¹Ã¢â‚¬Å’ پيچيده هستند.
-براي انتقانداده‌هاي موجود در پايگاه داده
-در اين حاÙâ€Ã˜Âª بايد ‌از dump Ùˆ restore استÙÂاده كرد.
-در نسخه‌هايي كه ساختار روي ديسك تغييري
-نمي‌كند مي توان از برنامه pg_upgrade براي به روز
-كردن پايگاه داده استÙÂاده كرد بدون اينكه
-نيازي به استÙÂاده از dump Ùˆ restore باشد. در
-يادداشتي كه به همراه هر توزيع مي‌آيد ذكر
-شده است كه آيا برنامه pg_upgrade براي اين توزيع
-وجود دارد يا خير.
-3.11) از Ú†Ù‡ سخت اÙÂزاري بايد استÙÂاده كنم؟
-
-چون اكثر سخت‌اÙÂزارهاي PC سازگار هستند مردم
-ÙÂكر مي‌كنند كه كيÙÂيت آنها نيز يكسان است. در
-حاÙâ€Ã™Å Ã™Æ’Ù‡ اينطور نيست. استÙÂاده از هاردهاي SCSI Ùˆ
-حاÙÂظه‌هاي ECC Ùˆ مادربردهاي با كيÙÂيت باÙâ€Ã˜Â§
-نسبت به سخت اÙÂزارهاي ارزانتر نتايج بهتري از
-نظر كارايي و پايداري سيستم بهمراه خواهد
-داشت. PostgreSQL روي بيشتر سخت اÙÂزارها اجرا
-مي‌شود اما اگر كارايي Ùˆ اطمينان ÙÂاكتورهاي
-مهمي هستند بايد سخت اÙÂزار مناسب استÙÂاده شود.
-در گروههاي پستي در مورد سخت اÙÂزار مناسب Ùˆ
-انتخاب آن بحث شده است.
-
-
-
-سواÙâ€Ã˜Â§Ã˜Âª عمÙâ€Ã™Å Ã˜Â§Ã˜ÂªÃ™Å 
-4.1) تÙÂاوت بين binary cursors Ùˆ Normal cursors چيست؟
-راهنماي دستور DECLARE‌ را مطاÙâ€Ã˜Â¹Ã™â€¡ كنيد.
-4.2) من چگونه مي‌توانم ÙÂقط روي چند ردي٠اونيا
-يك ردي٠تصادÙÂÙŠ درخواست SELECT‌ بزنم؟
-راهنماي دستور FETCH يا SELECT...LIMIT را ببينيد.
-در واقع كندرخواست بايد بررسي و ارزيابي شود
-حتي اگر شما ÙÂقط چند ردي٠اونرا بخواهيد. براي
-مثاندرخواست ORDER BY را در نظر بگيريد. اگر
-انديس يا نمايه‌اي براي ORDER BY وجود داشته
-باشد،‌postgreSQL‌ ممكن است بتواند ÙÂقط چند سطر
-اوندرخواستي را ارزيابي كند Ùˆ يا اينكه ÙƒÙâ€
-درخواست پردازش شود تا تعداد رديÙÂ‌هاي
-درخواستي توÙâ€Ã™Å Ã˜Â¯ شود.
-براي انتخاب يك سطر تصادÙÂÙŠ به روش زير عمÙâ€
-مي‌كنيم:
- SELECT col
- FROM tab
- ORDER BY random()
- LIMIT 1;
-4.3) من چگونه مي‌توانم Ùâ€Ã™Å Ã˜Â³Ã˜ÂªÃ™Å  از جداونيا ساير
-چيزهايي كه در psql‌ وجود دارد را ببينم؟
-براي ديدن Ùâ€Ã™Å Ã˜Â³Ã˜Âª جداوندستور dt\ را در برنامه
-psql‌ استÙÂاده كنيد. براي ديدن Ùâ€Ã™Å Ã˜Â³Ã˜Âª كامÙâ€
-ÙÂرمانها ?\ را اجرا كنيد. راه ديگر خواندن متن
-برنامه psql‌ است كه در شاخه pgsql/src/bin/psql/describe.c
-‌قرار دارد. اين ÙÂاينحاوي ÙÂرامين SQLيي است كه
-خروجي را براي دستوراتي كه با \‌در psql شروع
-مي‌شوند توÙâ€Ã™Å Ã˜Â¯ مي‌كنند. راه ديگر اجراي psql با
-گزينه E-‌است. اينكار باعث مي‌شود كه psql قبÙâ€
-از اجرا هر دستور SQL‌متناظر آن را نشان دهد.
-PostgreSQL‌همچنين يك برنامه SQLi دارد كه مي‌توان
-با استÙÂاده از آن اطÙâ€Ã˜Â§Ã˜Â¹Ã˜Â§Ã˜Âª داخÙâ€Ã™Å  پايگاه داده
-را استخراج كرد.
-4.4) چگونه يك ستون جدونرا حذ٠مي‌كنيد؟ چگونه
-نوع داده آن را عوض كنيم؟
-حذ٠يك ستون در توزيع 7.3 با استÙÂاده از دستور
-ALTER TABLE DROP COLUMN اضاÙÂÙ‡ شده است. در نسخه‌هاي
-قبÙâ€Ã™Å  به روش زير عمنكنيد:
- BEGIN;
- LOCK TABLE old_table;
- SELECT ... -- تمام ستونها غير از ستوني كه مي‌خواهيد آن را حذ٠كنيد را در اينجا بياوريد
- INTO TABLE new_table
- FROM old_table;
- DROP TABLE old_table;
- ALTER TABLE new_table RENAME TO old_table;
- COMMIT;
-براي عوض كردن نوع داده يك ستون به روش زير عمÙâ€
-كنيد:
- BEGIN;
- ALTER TABLE tab ADD COLUMN new_col new_data_type;
- UPDATE tab SET new_col = CAST(old_col AS new_data_type);
- ALTER TABLE tab DROP COLUMN old_col;
- COMMIT;
-4.5) حداكثر اندازه يك رديÙÂ،‌ جدونو خود
-پايگاه داده چقدر است؟
-محدوديتها عبارتند از:
- حداكثر اندازه پايگاه داده نامحدود (تا 32 ترابايت وجود دارد)
- حداكثر اندازه يك جدون32 ترابايت
- حداكثر ا ندازه يك ردي٠1.6 ترابايت
- حداكثر اندازه يك ÙÂÙŠÙâ€Ã˜Â¯ 1 گيگا بايت
- حداكثر اندازه رديÙÂهاي يك جدوننا محدود
- حداكثر ستونهاي يك جدونبسته به نوع جدونبين 250 تا 6000
- حداكثر انديسهاي يك جدوننا محدود
-اÙâ€Ã˜Â¨Ã˜ÂªÃ™â€¡ در حاÙâ€Ã˜Âª نامحدود نيز ما محدود به حجم
-هاردديسك Ùˆ ÙÂضاي حاÙÂظه خواهيم بود. در صورتي
-که مقادير مشخص شده به عنوان نامحدود به صورت
-غير معموÙâ€Ã™Å  بزرك شوند كارايي سيستم كاهش
-خواهد ياÙÂت.
-براي ذخيره كردن جداونبا اندازه خيÙâ€Ã™Å  بزرگ
-نيازي نيست كه سيستم عامنامكان ايجاد
-ÙÂايÙâ€Ã™â€¡Ã˜Â§Ã™Å  بزرگ را داشته باشد. بÙâ€Ã™Æ’Ù‡ جداونخيÙâ€Ã™Å 
-بزرگ به صورت ÙÂايÙâ€Ã™â€¡Ã˜Â§Ã™Å Ã™Å  به حجم يك گيگا بايت
-نگاهداري مي‌شوند.
-اگر اندازه بÙâ€Ã™Ë†Ã™Æ’هاي داده را برابر 32 كيÙâ€Ã™Ë† بايت
-قرار دهيم حداكثر اندازه جدونو حداكثر تعداد
-ستونها 4 برابر خواهد شد.
-4.6) چقدر ÙÂضاي ديسك سخت براي ذخيره كردن
-داده‌‌هاي يك ÙÂاينمتني مورد نياز است؟
-يك پايگاه داده PostgreSQL‌ تا 5 برابر ÙÂضايي روي
-هاردديسك براي نگاهداري يك ÙÂاينمتني نياز
-دارد.
-به عنوان مثانيك ÙÂاينبا 100000 خط را در نظر
-بگيريد كه در هر خط يك عدد صحيح و يك توضيح
-متني آمده است. ÙÂرض كنيد كه رشته متني به طور
-متوسط 20 بايت باشد. اندازه ÙÂاينبرابر 2.8 مگا
-بايت خواهد بود ÙˆÙâ€Ã™Å  PostgreSQL براي نگاهداري اين
-ÙÂاينبه 6.4 مگا بايت اطÙâ€Ã˜Â§Ã˜Â¹Ã˜Â§Ã˜Âª نياز خواهد داشت.
- 32 bytes: اندازه سرايند هر خط به طور تقريبي
- 24 bytes: يك عدد صحيح و يك رشته 24 بايتي
- + 4 bytes: اشاره گر روي صÙÂحه به يك چندتايي
- ----------------------------------------
- 60 bytes در هر رديÙÂ
-
-اندازه صÙÂحات داده در PostgreSQL برابر با 8 كيÙâ€Ã™Ë† بايت است
- 8192 تعداد بايت‌ها در هر صÙÂحه
- ------------------- = 136 تعداد رديÙÂ‌ها در يك صÙÂحه پايگاه داده
- 60 تعداد بايت‌هاي هر رديÙÂ
-
- 100000 تعداد رديÙÂها
- -------------------- = تعدادصÙÂحات پايگاه داده
- 128 تعداد رديÙÂها در هر صÙÂحه
-
-735 تعداد صÙÂحات * 8192 تعداد بايت‌هاي هر صÙÂحه = 6,021,120 مگا بايت
-سربار انديسها يا نمايه‌ها از اين مقدار كمتر
-است ÙˆÙâ€Ã™Å  چون شامنخود داده‌ها هم هست ممکن است
-اندازه آنها هم بزرگ شود.
-NULLها به صورت bitmap ذخيره مي‌شوند و از اينرو
-ÙÂضاي بسيار كمي را اشغانمي‌كنند.
-4.7) چگونه مي‌توانم بÙÂهمم كه Ú†Ù‡ كاربران،‌
-پايگاه داده،‌ نمايه Ùˆ جداوÙâ€Ã™Å  در سيستم تعريÙÂ
-شده است؟
-psql تعداد زيادي دستور دارد كه با \ شروع
-مي‌شوند Ùˆ اين اطÙâ€Ã˜Â§Ã˜Â¹Ã˜Â§Ã˜Âª را در اختيار ما قرار
-مي‌دهند. براي ديدن آنها دستور ?\ را اجرا
-كنيد. همچنين جداونسيستمي كه با نام آنها pg_
-‌شروع مي‌شود نيز اين اطÙâ€Ã˜Â§Ã˜Â¹Ã˜Â§Ã˜Âª را در خود
-دارند. اجراي برنامه psql با گزينه l- نيز باعث
-نشان دادن Ùâ€Ã™Å Ã˜Â³Ã˜Âª تمام پايگاههاي داده مي‌شود.
-همچنين ÙÂاينpgsql/src/tutorial/syscat.source نيز ÙÂرمانهاي
-SELECT كه با استÙÂاده از آن مي‌توان اطÙâ€Ã˜Â§Ã˜Â¹Ã˜Â§Ã˜Âª
-پايگاه داده را استخراج كرد شرح داده است.
-4.8) چرا درخواستهاي من كند اجرا مي‌شوند يا
-چرا از نمايه ها استÙÂاده نمي‌كنند؟
-به طور معمونبراي درخواستها از نمايه‌ها
-استÙÂاده نمي‌شود. تنها در صورتي از نمايه‌ها
-استÙÂاده مي‌شود كه اندازه جدوناز يك اندازه
-حداقنبزرگتر باشد Ùˆ درخواست هم ÙÂقط قسمتي از
-رديÙÂ‌هاي جدونرا انتخاب كرده باشد. دÙâ€Ã™Å Ã™â€ اين
-كار آن است كه دسترسي‌هاي تصادÙÂÙŠ به هاردديسك
-كه به خاطر نمايه‌ها ايجاد مي‌شود ممكن است
-از خواندن مستقيم جدونيا خواندن ترتيبي
-ركوردها كندتر باشد.
-براي تعيين اينكه از نمايه استÙÂاده شود يا
-خير، PostgreSQL بايد اطÙâ€Ã˜Â§Ã˜Â¹Ã˜Â§Ã˜Âª آماري را در مورد يك
-جدونبداند. اين اطÙâ€Ã˜Â§Ã˜Â¹Ã˜Â§Ã˜Âª توسط دستور ANALYZE Ùˆ VACUUM
-ANALYZE به دست مي‌آيد. با استÙÂاده از اين
-اطÙâ€Ã˜Â§Ã˜Â¹Ã˜Â§Ã˜ÂªÃ˜Å’‌ بهينه ساز از تعداد رديÙÂ‌هاي يك
-جدوناطÙâ€Ã˜Â§Ã˜Â¹ پيدا مي‌كند Ùˆ بهتر مي‌تواند
-تعيين كند كه آيا از نمايه استÙÂاده شود يا خير.
-اطÙâ€Ã˜Â§Ã˜Â¹Ã˜Â§Ã˜Âª آماري همچنين براي تعيين ترتيب اÙâ€Ã˜Â­Ã˜Â§Ã™â€š
-Ùˆ روشهاي اÙâ€Ã˜Â­Ã˜Â§Ã™â€š به صورت بهينه نيز كاربر دارد.
-جمع آوري اطÙâ€Ã˜Â§Ã˜Â¹Ã˜Â§Ã˜Âª آماري بايد به صورت دوره‌اي
-همزمان با تغيير داده‌هاي جدونانجام شود.
-نمايه‌ها به طور معمونهمراه با دستور ORDER BY
-به كار برده نمي‌شوند. براي يك جدونبزرگ يك
-پيمايش ترتيبي همراه با دستور مرتب سازي از به
-كار بردن نمايه‌ها سريعتر خواهد بود.
-اما اگر همراه با ORDER BY‌ از LIMIT استÙÂاده شود
-اغÙâ€Ã˜Â¨ از نمايه‌ها استÙÂاده مي‌شود چون ÙÂقط
-قسمتي از جدوناستÙÂاده مي‌شود. در حقيقت هر
-چند توابع ()MIN‌ Ùˆ ()MAX از نمايه‌ها استÙÂاده
-نمي‌كنند ÙˆÙâ€Ã™Å  مي‌توانيم با استÙÂاده از دستور
-زير با استÙÂاده از نمايه‌ها Ùˆ دستور ORDER BY Ùˆ
-LIMIT‌ آنها را به دست آوريم.
- SELECT col
- FROM tab
- ORDER BY col [ DESC ]
- LIMIT 1;
-اگر شما ÙÂكر مي‌كنيد كه بهينه ساز سيستم در
-انتخاب پيمايش ترتيبي اشتباه كرده است با
-دستور 'SET enable_seqscan TO 'off' مي‌توانيد ببينيد آيا
-استÙÂاده از نمايه‌ها باعث اÙÂزايش سرعت
-درخواست‌ها خواهد شد.
-استÙÂاده از نمايه‌ها هنگامي كه از عÙâ€Ã˜Â§Ã˜Â¦Ã™â€¦ ويژه
-نظير LIKE Ùˆ ~ استÙÂاده مي‌كنيد ÙÂقط در بعضي
-شرايط خاصي كه در اينجا ذكر شده است ممكن است:
- ابتداي رشته جستجو بايد به طور صريح مشخص
- باشد براي مثاÙâ€:
- دستورات LIKE نبايد با عÙâ€Ã˜Â§Ã™â€¦Ã˜Âª % شروع شوند
- اÙâ€ÃšÂ¯Ã™Ë†Ã™â€¡Ã˜Â§Ã™Å  منظمي كه با ~ مي‌ايد حتماً بايد با
- عÙâ€Ã˜Â§Ã™â€¦Ã˜Âª ^ شروع شود
- رشته جستجو نبايد با يك مجموعه از
- كاراكتر‌ها مثن[a-e] شروع شود
- جستجوهاي غيرحساس به متن مثنILIKE‌ و *~ از
- نمايه‌ها استÙÂاده نمي‌كنند. در عوض از
- توابع نمايه‌اي كه در قسمت 4.12 توضيح داده شد
- استÙÂاده مي‌كنند.
- مقدار پيش ÙÂرض locale‌ بايد در initdb استÙÂاده شود.
-
-4.9) چگونه مي‌توانم نحوه بررسي درخواست را
-توسط بهينه‌ساز درخواستها مشاهده كنم؟
-راهنماي دستور EXPLAIN را نگاه كنيد.
-4.10) نمايه R-tree‌ چيست؟
-از نمايه R-Tree براي انديس كردن داده‌هاي
-ÙÂاصÙâ€Ã™â€¡Ã¢â‚¬Å’اي استÙÂاده مي‌شود. يك نمايه hash
-نمي‌توانند جستجوهاي محدوده‌اي را انجام
-دهد. نمايه "B-tree" نيز براي انجام جستجوي
-محدوده‌اي در يك جهت قابناستÙÂاده است. اما
-R-Tree مي‌تواند داده‌هاي چند بعدي را نيز
-پشتيباني كند. براي مثاناستÙÂاده اگر از نمايه
-R-tree‌ براي گونه Point استÙÂاده شود سرعت
-درخواست‌هايي نظير "select all points within a bounding
-rectangle" به مراتب اÙÂزايش مي‌يابد.
-مقاÙâ€Ã™â€¡Ã¢â‚¬Å’اي كه طراحي R-tree را توضيح داده است
-Guttman, A. "R-trees: A Dynamic Index Structure for Spatial Searching."
-Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57.
-R-tree‌ مي‌تواند چندضÙâ€Ã˜Â¹Ã™Å Ã™â€¡Ã˜Â§ Ùˆ چند وجهي را
-پشتيباني كند. در تئوري R-tree مي‌تواند تعداد
-بعدهاي باÙâ€Ã˜Â§Ã˜ÂªÃ˜Â± ري نيز پشتيباني كند. در عمÙâ€
-توسعه R-tree‌ نياز به كار بيشتري دارد.
-4.11) بهينه ساز تكويني درخواست چيست؟ (Genetic Query
-Optimizer)
-استÙÂاده از GEQO سرعت بهينه سازي درخواست را
-هنگاميكه تعداد زيادي جدونرا با استÙÂاده از
-اÙâ€ÃšÂ¯Ã™Ë†Ã˜Â±Ã™Å Ã˜ÂªÃ™â€¦ ژنتيك اÙâ€Ã˜Â­Ã˜Â§Ã™â€š مي‌كنيم اÙÂزايش
-مي‌دهد.
-4.12) چگونه از عبارات منظم براي جستجو استÙÂاده
-كنم؟ چگونه جستجويي انجام دهم كه حساس به متن
-نباشد؟ چگونه براي يك جستجوي غير حساس به متن
-از نمايه استÙÂاده كنم؟
-براي جستجوي عبارت منظم از عمÙâ€ÃšÂ¯Ã˜Â± ~‌ استÙÂاده
-مي‌كنيم. براي جستجوي غير حساس به متن از
-عمÙâ€ÃšÂ¯Ã˜Â± *~ Ùˆ يا ILIKE‌ استÙÂاده مي‌كنيم.
-روش ديگر انجام جستجوي غير حساس به متن در زير
-نشان داده شده است.
- SELECT *
- FROM tab
- WHERE lower(col) = 'abc';
-اين از نمايه‌هاي استاندارد استÙÂاده
-نمي‌كند. ÙˆÙâ€Ã™Å  شما مي توانيد با دستور زير يك
-نمايه ايجاد كنيد Ùˆ از آن استÙÂاده كنيد.
- CREATE INDEX tabindex ON tab (lower(col));
-4.13) Iچگونه مي‌توانم در يك درخواست تشخيص دهم
-كه يك ÙÂÙŠÙâ€Ã˜Â¯ NULL‌ است؟
-با استÙÂاده از توابع IS NULL Ùˆ IS NOT NULL مي‌توانيم
-NULL بودن يك ÙÂÙŠÙâ€Ã˜Â¯ را تست كنيم.
-4.14) تÙÂاوت بين گونه‌هاي مختÙâ€Ã™Â character چيست؟
-Type Internal Name Notes
---------------------------------------------------
-VARCHAR(n) varchar اندازه، حداكثر طونرا نشان مي دهد بدون اضاÙÂÙ‡ شدن كاراكتر اضاÙÂÙ‡
-CHAR(n) bpchar كاراكترهاي بÙâ€Ã˜Â§Ã™â€ Ã™Æ’ براي پر شدن طونمشخص شده استÙÂاده مي‌شود
-TEXT text حداكثر طونرا مشخص نمي‌كند
-BYTEA bytea آرايه‌اي از بايت با طونمتغير
-"char" char يك كاراكتر
-نام داخÙâ€Ã™Å  گونه‌ها را در system catalogue ‌و بعضي از
-پيغامهاي خطا مي‌توان ديد.
-چهار گونه اونهمگي از نوع varlena هستند (4 بايت
-اونروي ديسك طونرا مشخص مي‌كند كه به دنباÙâ€
-آن داده‌ها قرار دارند.)‌بنابراين ÙÂضاي
-واقعي استÙÂاده شده روي ديسك از اندازه تعريÙÂ
-شده بيشتر است. اما اين گونه‌ها را مي‌توان
-ÙÂشرده كرد كه اينكار باعث مي‌شود ÙÂضاي كمتري
-روي ديسك اشغانكنند.
-براي ذخيره رشته‌هاي با طونمتغير(VARCHAR(n‌
-بهترين انتخاب است. در اين گونه حداكثر طوÙâ€
-رشته محدود است بر Ø®Ùâ€Ã˜Â§Ã™Â text كه هيچ محدوديتي
-روي حداكثر اندازه رشته نمي‌گذارد.(در اين
-گونه حداكثر طونيك رشته يك گيگا بايت خواهد
-بود)
-گونه (CHAR(n براي ذخيره داده‌هاي با طونيكسان
-است.يك گونه‌ي (CHAR(n با كاراكترهاي بÙâ€Ã˜Â§Ã™â€ Ã™Æ’
-(خاÙâ€Ã™Å ) پر مي‌شود تا به طونمشخص شده برسد در
-حاÙâ€Ã™Å Ã™Æ’Ù‡ گونه VARCHAR كاراكترها را به همان صورت
-كه هستند ذخيره مي‌كند. گونه BYTEA براي ذخيره
-داده‌هاي باينري است به خصوص داده‌هاي
-باينتري كه شامنبايت‌هاي NULL هستند. از نظر
-كارايي تمام اين گونه‌ها يكسان هستند.
-4.15.1) چگونه مي‌توانم يك ÙÂÙŠÙâ€Ã˜Â¯ سريانيا
-اÙÂزايشي ايجاد كنم؟
-PostgreSQL از داده‌هاي سريانپشتيباني مي‌كند.
-براي ايجاد يك ÙÂÙŠÙâ€Ã˜Â¯ سريان(براي داشتن يك ÙÂÙŠÙâ€Ã˜Â¯
-منحصر به ÙÂرد براي هر ردي٠)به روش زير عمÙâ€
-كنيد:
- CREATE TABLE person (
- id SERIAL,
- name TEXT
- );
-دستور باÙâ€Ã˜Â§ به طور اتوماتيک به دستور زير
-تبدينمي‌شود:
- CREATE SEQUENCE person_id_seq;
- CREATE TABLE person (
- id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
- name TEXT
- );
-براي ديدن اطÙâ€Ã˜Â§Ã˜Â¹Ã˜Â§Ã˜Âª بيشتر به راهنماي دستور
-create_sequence مراجعه كنيد. همچنين مي‌توان از
-OID‌هر ردي٠به عنوان يك مقدار منحصر به ÙÂرد
-استÙÂاده كرد. اما در اين حاÙâ€Ã˜Âª براي dump كردن Ùˆ
-reload‌كردن پايگاه داده بايد دستور pg_dumps‌ را
-با گزينه o-‌ اجرا كنيد.
-4.15.2) چگونه مي‌توانم مقدار يك درج سرياÙâ€Ã™Å  را
-بدانم؟
-يك روش براي گرÙÂتن مقدار بعدي يك ÙÂÙŠÙâ€Ã˜Â¯ سرياÙâ€
-استÙÂاده از تابع ()nextval است. در شبه ÙƒÙÂدي كه در
-ادامه آمده است روش انجام اين كار نشان داده
-شده است:
- new_id = execute("SELECT nextval('person_id_seq')");
- execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
-با اجرا دستور ÙÂوق مقدار جديد را در متغير new_id
-نيز خواهيدداشت كه مي‌توانيد آن را در بقيه
-درخواست‌هاي نيز استÙÂاده كنيد. توجه داشته
-باشيد كه نام SEQUENCEيي كه به طور اتوماتيك ايجاد
-شده است به صورت table_serialcolumn_seq‌ خواهد بود. كه
-در آن table‌ نام جدونو serialcolumn نام ÙÂÙŠÙâ€Ã˜Â¯ سرياÙâ€
-جدونمي‌باشد.
-براي ديدن مقدار نسبت داده شده به ÙÂÙŠÙâ€Ã˜Â¯ سرياÙâ€
-نيز مي‌توان از تابع () currval به صورت زير
-استÙÂاده كرد.
- execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
- new_id = execute("SELECT currval('person_id_seq')");
-و سرانجام شما مي‌توانيد از مقدار OID كه خروجي
-دستور INSERT است براي ديدن مقدار پيش ÙÂرض
-استÙÂاده كنيد. هر چند اين روش در همه Ù¾Ùâ€Ã˜ÂªÃ™Âرمها
-قابناستÙÂاده نيست Ùˆ ضمن اينكه ÙÂÙŠÙâ€Ã˜Â¯ oid‌ بعد
-از عدد 4 ميÙâ€Ã™Å Ã˜Â§Ã˜Â±Ã˜Â¯ دوباره صÙÂر مي‌شود. در زبان
-perl با استÙÂاده از DBI Ùˆ DBD::Pg مقدار oid‌را
-مي‌توانيد به شكنزير استخراج كنيد: بعد از
-اجراي ()st->execute$ مقدار oid‌ در متغير sth->pg_oid_status$
-ذخيره خواهد شد.
-4.15.3) آیا توابع ()nextval و ()currval منجر به ایجاد
-شرایط race برای سایر کاربران می شوند؟
-خیر، استÙÂاده از این توابع شرایط race را به
-وجود نمی آورد.
-4.15.4) چرا اعداد سریاÙâ€Ã›Å’ مربوط به تراکنشهای abort
-شده مجدداً استÙÂاده نمی شود؟ چرا بین اعداد
-سریاÙâ€Ã›Å’ یک ÙÂاصÙâ€Ã™â€¡ خاÙâ€Ã›Å’ ایجاد Ù…ÛŒ شود؟
-برای باÙâ€Ã˜Â§ بردن امکان اجرای همزمان تراکنشها،
-اعداد سریاÙâ€Ã›Å’ به محض اجرای تراکنش به آنها
-تخصیص Ù…ÛŒ یابد در این حاÙâ€Ã˜Âª اگر بعضی از
-تراکنشها abort شوند بین اعداد سریاÙâ€Ã›Å’ استÙÂاده
-شده یک ÙÂاصÙâ€Ã™â€¡ خاÙâ€Ã›Å’ به وجود Ù…ÛŒ آید.
-4.16) OID و TID چه هستند؟
-OID راه حنPostgreSQL برای داشتن یک شناسه منحصر به
-ÙÂرد برای هر ردی٠است. هر ردی٠جدیدی Ú©Ù‡ ایجاد
-Ù…ÛŒ شود یک OID منحصر به ÙÂرد به آن اختصاص Ù…ÛŒ
-یابد. تمام OIDهایی که در حین initdb ایجاد می شوند
-از 16384 کمتر هستند Ùˆ OIDهایی بعداً توÙâ€Ã›Å’د Ù…ÛŒ شود
-از این عدد بزرگتر خواهد بود. نکته مهم آن است
-Ú©Ù‡ OIDها نه تنها در یک جدونشبیه نیستند بÙâ€ÃšÂ©Ã™â€¡
-در کنپایگاه داده هیچ دو ردیÙÂÛŒ دارای OID یکسان
-نخواهد بود.
-PostgreSQL از OID در سیستم داخÙâ€Ã›Å’ خود برای ایجاد
-ارتباط بین ردیÙÂهای جداونمختÙâ€Ã™Â استÙÂاده Ù…ÛŒ
-کند. توصیه می شود که یک ستون از نوع OID برای
-ذخیره این ÙÂÛŒÙâ€Ã˜Â¯ در جدونایجاد کنید. ساختن یک
-نمایه برای این ÙÂÛŒÙâ€Ã˜Â¯ باعث دسترسی سریعتر به آن
-خواهد شد.
-تمام پایگاههای داده در PostgreSQL برای گرÙÂتن OID
-جدید از یک ناحیه مرکزی استÙÂاده Ù…ÛŒ کند. ÙˆÙâ€Ã›Å’
-اگر بخواهیم OID را به روش دیگری بگیریم و یا
-اینکه در حین کپی کردن یک جدونبخواهیم OIDهای
-اصÙâ€Ã›Å’ آن تغییر نکند به روش زیر Ù…ÛŒ توانیم عمÙâ€
-کنیم:
-
- CREATE TABLE new_table(mycol int);
- SELECT oid AS old_oid, mycol INTO tmp_table FROM old_table;
- COPY tmp_table TO '/tmp/pgtable';
- COPY new_table WITH OIDS FROM '/tmp/pgtable';
- DROP TABLE tmp_table;
-OID یک عدد صحیح 4 بایتی است و بنابراین حداکثر
-مقدار آن 4 Ù…ÛŒÙâ€Ã›Å’ارد خواهد بود Ùˆ بعد از آن
-مقدار آن سرریز خواهد شد. اÙâ€Ã˜Â¨Ã˜ÂªÃ™â€¡ تا کنون برای
-کسی این اتÙÂاق Ù†ÛŒÙÂتاده است Ùˆ تصمیم گرداندگان
-PostgreSQL آن است Ú©Ù‡ قبناز آنکه این اتÙÂاق رخ دهد
-این مشکنرا برطر٠کنند.
-TIDها برای شناسایی محنÙÂیزیکی یک ردی٠بر اساس
-بÙâ€Ã™Ë†ÃšÂ© Ùˆ Ø¢ÙÂست Ù…ÛŒ باشد. TIDها بعد از تغییر پیدا
-کردن یک ردی٠و یا بازخوانی آن عوض می شوند.
-TIDها توسط نمایه ها استÙÂاده Ù…ÛŒ شوند.
-4.17) معني بعضي از ترمها Ùˆ ÙƒÙâ€Ã™â€¦Ã˜Â§Ã˜ÂªÃ™Å  كه در PostgreSQL‌
-استÙÂاده مي‌شود چيست؟
-Ùâ€Ã›Å’ست برخی از ترمها Ùˆ Ú©Ùâ€Ã™â€¦Ã˜Â§Ã˜ÂªÃ›Å’ Ú©Ù‡ استÙÂاده Ù…ÛŒ
-شوند:
- table, relation, class :Ú©Ùâ€Ã˜Â§Ã˜Â³Ã˜Å’ رابطه، جدوÙâ€
- row, record, tuple چندتایی، رکورد، ردیÙÂ
- column, field, attribute صÙÂت، ÙÂÛŒÙâ€Ã˜Â¯Ã˜Å’ ستون
- retrieve, select انتخاب، خواندن
- replace, updateبه روز کردن، جایگزینی
- append, insert درج، اضاÙÂÙ‡ کردن
- OID, serial value مقدار سریاÙâ€
- portal, cursor
- range variable, table name, table alias
-یک Ùâ€Ã›Å’ست عمومی از ترمهای مورد استÙÂاده در
-پایگاه داده در آدرس
-http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.htm
-وجود دارد.
-4.18) چرا من خطاي "ERROR: Memory exhausted in AllocSetAlloc"
-مي‌گيرم؟
-این خطا احتماÙâ€Ã˜Â§Ã™â€¹ یا به خاطر تمام شدن حاÙÂظه
-مجازی سیستم شماست و یا اینکه کرننبرای
-برنامه ها در مورد میزان استÙÂاده از حاÙÂظه
-مجازی محدودیت اعمانکرده است. قبناز اجرای
-برنامه اصÙâ€Ã›Å’ یکی از دستورات زیر را اجرا کنید.
- ulimit -d 262144
- limit datasize 256m
-بسته به نوع شنیکی از این دستورات ممکن است با
-موÙÂقیت اجرا شود. با اجرای آن دستور محدودیت
-حاÙÂظه مجازی برای برنامه ها برداشته شده Ùˆ با
-این کار احتماÙâ€Ã˜Â§Ã™â€¹ درخواستی Ú©Ù‡ قبÙâ€Ã˜Â§Ã™â€¹ خطا Ù…ÛŒ
-داده است اجرا خواهد شد.
-4.19) از كجا تشخيص دهم كه ويرايش يا نسخه
-PostgreSQLيي كه من استÙÂاده مي‌كنم چيست؟
-با اجرای دستور ()SELECT version
-4.20) چرا در حین اجرای عمÙâ€Ã›Å’ات روی large-objectها
-خطای "invalid large obj descriptor"به وجود می آید؟
-شما باید قبناز شروع دستوراتی که با large-objectها
-کار می کنند از BEGIN و بعد از آنها هم یک END
-بگذارید. در حانحاضر PostgreSQL هندنlarge-objectها را
-در زمان نهایی شدن تراکنش (commitشدن) می بندد. به
-همین دÙâ€Ã›Å’ناوÙâ€Ã›Å’Ù† تÙâ€Ã˜Â§Ã˜Â´ برای انجام هر کاری با
-هندنمنجر به خطای invalid large obj descriptor خواهد شد.
-برای جÙâ€Ã™Ë†ÃšÂ¯Ã›Å’ری از این خطا حتماً باید از یک
-تراکنش استÙÂاده کنید. این کار همانطور Ú©Ù‡
-قبÙâ€Ã˜Â§Ã™â€¹ Ú¯ÙÂته شد با استÙÂاده از قرار دادن BEGIN Ùˆ END
-در ابتدا و انتهای دستورات انجام می شود.
-اگر این خطا را در حین استÙÂاده از یک درایور ODBC
-دریاÙÂت کردید احتماÙâ€Ã˜Â§Ã™â€¹ باید این دستور را
-اجرا کنید: set auto-commit off
-4.21) چگونه يك ستون ايجاد كنم كه مقدار زمان
-جاري را به عنوان مقدار پيش‌ÙÂرض داشته باشد؟
-از CURRENT_TIMESTAMP استÙÂاده کنید در مثانزیر نحوه
-انجام این کار نشان داده شده است:
-CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
-
-4.22) چرا "زير درخواستهايي" كه از IN استÙÂاده
-مي‌كنند كند هستند؟
-در نسخه های قبناز 7.4 عمناÙâ€Ã˜Â­Ã˜Â§Ã™â€š زیر درخواست Ùˆ
-درخواست اصÙâ€Ã›Å’ به این صورت انجام Ù…ÛŒ شود Ú©Ù‡
-نتایج به دست آمده از زیر درخواست به صورت
-ترتیبی برای هر ردی٠اعمانمی شود. اگر
-زیردرخواست ردی٠های کمی را به عنوان خروجی
-برگرداند و درخواست بیرونی ردی٠های زیادی را
-شامنشود استÙÂاده از IN بهترین روش است در غیر
-اینصورت بهتر است از EXISTS استÙÂاده شود
- SELECT *
- FROM tab
- WHERE col IN (SELECT subcol FROM subtab);
-به:
- SELECT *
- FROM tab
- WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
-برای اجرای سریع این درخواست باید برای ستون
-subcol نمایه ایجاد شده باشد.
-در نسخه های بعد از 7.4 IN برای اÙâ€Ã˜Â­Ã˜Â§Ã™â€š از همان
-تکنیک پیچیده مورد استÙÂاده در دستورات معموÙâ€Ã›Å’
-استÙÂاده Ù…ÛŒ کند Ùˆ بنابراین استÙÂاده از آن نسبت
-به EXISTS ارجحیت دارد.
-4.23) چگونه مي‌توانم يك اÙâ€Ã˜Â­Ã˜Â§Ã™â€š خارجي (outer join)
-انجام دهم؟
-برای انجام اÙâ€Ã˜Â­Ã˜Â§Ã™â€š خارجی به روش زیر عمنکنید:
- SELECT *
- FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-یا
- SELECT *
- FROM t1 LEFT OUTER JOIN t2 USING (col);
-درخواستهای باÙâ€Ã˜Â§ t1.col , t2.col را به هم اÙâ€Ã˜Â­Ã˜Â§Ã™â€š Ù…ÛŒ
-کند Ùˆ همچنین ردیÙÂهای t1 Ú©Ù‡ نظیر آنها در t2
-نبوده است را نیز برمی گرداند. اگر از RIGHT
-استÙÂاده شود نتیجه بر عکس است. یعنی ردیÙÂهای t2
-که نظیر آنها در t1 نباشد را نشان می دهد و اگر
-از FULL استÙÂاده شود نتیجه هم شامنردیÙÂهای t1
-است Ùˆ هم شامنردیÙÂهای t2. استÙÂاده از Ú©Ùâ€Ã™â€¦Ã™â€¡ OUTER
-اختیاری است چرا Ú©Ù‡ این Ú©Ùâ€Ã™â€¦Ã™â€¡ به طور ضمنی
-دستورهای LEFT, RIGHT, FULL وجود دارد.
-در نسخه های قبÙâ€Ã›Å’ پایگاه داده Ù…ÛŒ توانیم اÙâ€Ã˜Â­Ã˜Â§Ã™â€š
-خارجی را به کمک دستورهای UNION, NOT IN شبیه سازی
-کنیم. این کار در مثانزیر نشان داده شده است:
-
- SELECT tab1.col1, tab2.col2
- FROM tab1, tab2
- WHERE tab1.col1 = tab2.col1
- UNION ALL
- SELECT tab1.col1, NULL
- FROM tab1
- WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
- ORDER BY col1
-4.24) چگونه مي‌توان درخواستهايي از چند پايگاه
-داده توÙâ€Ã™Å Ã˜Â¯ كرد؟
-در حانحاضر این کار امکان پذیر نیست. PostgreSQL
-ÙÂقط امکان درخواست از پایگاه داده ای را Ù…ÛŒ
-دهد که در حانحاضر به آن متصنباشید و نمی
-توان به طور همزمان از دو پایگاه داده استÙÂاده
-کرد. اÙâ€Ã˜Â¨Ã˜ÂªÃ™â€¡ یک برنامه کاربردی خود Ù…ÛŒ تواند به
-طور همزمان دو پایگاه داده را مورد استÙÂاده
-قرار داده Ùˆ نتایج را با هم ترکیب کند ÙˆÙâ€Ã›Å’ نمی
-تواند در یک درخواست به هر دو پایگاه داده
-رجوع کند.
-4.25) چگونه خروجي يك تابع مي‌تواند چند رديÙÂ
-يا ستون باشد؟
-در نسخه 7.3 خروجی یک تابع می تواند چند ردی٠یا
-چند ستون باشد. برای دیدن اطÙâ€Ã˜Â§Ã˜Â¹Ã˜Â§Ã˜Âª بیشتر به
-سایت زیر مراجعه
-کنید:http://techdocs.postgresql.org/guides/SetReturningFunctions
-4.26) در توابع PL/PgSQL چرا نمي‌توان با اطمينان
-جداونموقت را ايجاد يا حذ٠كرد؟
-PL/PgSQL محتوای توابع را ذخیره (cache) می کند. یک
-اثر بد جانبی این کار آن است که اگر در تابع از
-یک جدونموقت استÙÂاده شود Ùˆ بعداً آن جدونحذÙÂ
-و یک جدونجدید به جای آن ایجاد شود، در
-ÙÂراخوانی مجدد آن تابع، محتوای ذخیره شده
-تابع هنوز به جدونقدیمی اشاره می کند و
-بنابراین اجرای تابع با اشکانمواجه می شود.
-راه حناین مشکنآن است که برای جداونموقت از
-دستور EXECUTE استÙÂاده شود Ú©Ù‡ این کار سبب Ù…ÛŒ شود
-که درخواست برای هر بار اجرا مجدداً پیمایش و
-تÙÂسیر شود.
-4.27) چه گزينه‌هايي براي تكرار (replication) وجود
-دارد؟
-There are several master/slave replication options available. These allow only
-the master to make database changes and the slave can only do database reads.
-The bottom of http://gborg.PostgreSQL.org/genpage?replication_research lists
-them. A multi-master replication solution is being worked on at
-http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
-4.28) چه گزينه‌هايي براي رمزنگاري وجود دارد؟
- contrib/pgcrypto شامنتوابع رمزنگاری زیادی است که
- Ù…ÛŒ توان از آنها در دستورات SQL استÙÂاده کرد.
- برای رمز کردن ارتباط بین client و server ، پایگاه
- داده حتماً گزینه SSL را بر روی پایگاه داده
- ÙÂعانکنیم.
- در نسخه 7.3 به بعد Ú©Ùâ€Ã™â€¦Ã˜Â§Ã˜Âª عبور کاربران به طور
- اتوماتیک به صورت رمز شده ذخیره Ù…ÛŒ شود ÙˆÙâ€Ã›Å’
- در نسخه های قبÙâ€Ã›Å’ باید گزینه PASSWORD_ENCRYPTION در
- ÙÂایÙâ€postgresql.conf ÙÂعانکنیم.
- Ù…ÛŒ توان پایگاههای داده را روی یک ÙÂاینسیستم
- رمزشده نگاهداری کرد
-
-
-
-Extending PostgreSQL
-5.1) من يك تابع نوشته‌ام. چگونه آن را در psql
-اجرا كنم؟ چرا با اجراي آن core dump مي‌گيرم؟
-دÙâ€Ã˜Â§Ã›Å’نمختÙâ€Ã™ÂÛŒ Ù…ÛŒ تواند باعث بروز این مشکÙâ€
-شود. اما قبناز همه تابع خود را به صورت جدا
-تست کنید.
-5.2) چگونه مي‌توانم در توÙâ€Ã™Å Ã˜Â¯ نوع‌ها Ùˆ توابع
-جديد Ùˆ جاÙâ€Ã˜Â¨ براي PostgreSQL‌ همكاري Ùˆ مشاركت
-داشته باشم؟
-کد خود را به گروه پستی pgsql-hackers ارسانکنید.
-5.3) چگونه مي‌توانم يك تابع به زبان C بنويسم
-كه خروجي آن يك ‌tuple (چند تايي) باشد؟
-در نسخه های 7.3 به بعد یک تابع Ù…ÛŒ تواند یک جدوÙâ€
-را به عنوان خروجی برگرداند. این ویژگی در
-توابعی که به زبانهای C و PL/PgSQL نوشته می شوند
-به طور کامنوجود دارد. راهنما برنامه نویسان
-را مطاÙâ€Ã˜Â¹Ã™â€¡ کنید. یک مثاناز نحوه برگرداندن یک
-جدونبه عنوان خروجی در contrib/tablefunc آمده است.
-5.4) من يك ÙÂاينمنبع را عوض كرده ام چرا در
-عمÙâ€Ã™Å Ã˜Â§Ã˜Âª كامپينمجدد آن تغيير ديده نمي‌شود؟
-Makefile برای ÙÂایÙâ€Ã™â€¡Ã˜Â§Ã›Å’ include شده وابستگیها را به
-درستی نشان نمی دهد. برای اطمینان از اینکه
-ÙÂایÙâ€Ã›Å’ Ú©Ù‡ عوض کرده اید حتماً دوباره کامپینمی
-شود دستور make clean را اجرا کنید. اگر از کامپیÙâ€Ã˜Â±
-gcc استÙÂاده Ù…ÛŒ کنید Ù…ÛŒ توانید از گزینه
-enable-depend-- در موقع اجرای برنامه configure استÙÂاده
-کنید این گزینه باعث می شود که وابستگیها به
-طور اتوماتیک توÙâ€Ã›Å’د شود. \ No newline at end of file
diff --git a/doc/FAQ_french b/doc/FAQ_french
deleted file mode 100644
index 71f19f0095d..00000000000
--- a/doc/FAQ_french
+++ /dev/null
@@ -1,1289 +0,0 @@
-
- Foire Aux Questions (FAQ) pour PostgreSQL
-
- Dernière mise à jour : vendredi 14 novembre 2004 16:32:47
-
- Mainteneur actuel : Bruce Momjian (pgman@candle.pha.pa.us)
-
- La plus récente version de ce document est disponible sur
- http://www.PostgreSQL.org/docs/faqs/FAQ.html.
-
- Les questions spécifiques à la plateforme sont répondues sur
- http://www.PostgreSQL.org/docs/index.html.
- _________________________________________________________________
-
- Questions générales
-
- 1.1) Qu'est ce que PostgreSQL ? Comment le prononcer ?
- 1.2) Quelle est la licence de PostgreSQL ?
- 1.3) Sous quels environnements Unix PostgreSQL tourne-t-il ?
- 1.4) Sous quels environnements non-Unix PostgreSQL tourne-t-il ?
- 1.5) Où puis-je me procurer PostgreSQL ?
- 1.6) Où puis-je obtenir du support ?
- 1.7) Quelle est la dernière version ?
- 1.8) Quelle documentation est disponible ?
- 1.9) Comment savoir quels sont les bogues connus ou les
- fonctionnalités manquantes ?
- 1.10) Comment puis-je apprendre le SQL ?
- 1.11) PostgreSQL est-il compatible an 2000 ?
- 1.12) Comment puis-je rejoindre l'équipe de développement ?
- 1.13) Comment dois-je soumettre un rapport de bogue ?
- 1.14) Comment PostgreSQL se compare-t'il à d'autres SGBD ?
- 1.15) Comment puis-je aider financièrement PostgreSQL ?
-
- Questions sur le client utilisateur
-
- 2.1) Y a-t-il des pilotes ODBC pour PostgreSQL ?
- 2.2) Quels outils sont disponibles pour utiliser PostgreSQL avec des
- pages Web ?
- 2.3) PostgreSQL a-t-il une interface graphique ?
- 2.4) Quels langages sont disponibles pour communiquer avec
- PostgreSQL ?
-
- Questions administratives
-
- 3.1) Comment installer PostgreSQL ailleurs que sous /usr/local/pgsql ?
- 3.2) Quand je lance postmaster, j'obtiens un Bad System Call ou un
- message core dumped. Pourquoi ?
- 3.3) Quand je lance postmaster, j'obtiens des erreurs IpcMemoryCreate.
- Pourquoi ?
- 3.4) Quand je lance postmaster, j'obtiens des erreurs
- IpcSemaphoreCreate. Pourquoi ?
- 3.5) Comment contrôler les connexions d'autres machines ?
- 3.6) Comment règler le moteur de la base de données pour de meilleures
- performances ?
- 3.7) Quelles fonctionalités de déboguage sont disponibles ?
- 3.8) Pourquoi est-ce que j'obtiens des messages Sorry, too many
- clients quand je me connecte ?
- 3.9) Que contient le répertoire pgsql_tmp ?
- 3.10) Pourquoi ai-je besoin de faire une sauvegarde des bases et de
- restaurer pour mettre a jour les versions de PostgreSQL ?
- 3.11) Quels matériels dois-je utiliser ?
-
- Questions fonctionnelles
-
- 4.1) Quelle est la différence entre curseur binaire et curseur
- normal ?
- 4.2) Comment faire un SELECT seulement sur les premières lignes d'une
- requête ? Sur une ligne aléatoire ?
- 4.3) Comment obtenir une liste des tables ou d'autres choses que je
- vois dans psql ?
- 4.4) Comment supprime-t-on une colonne d'une table, ou comment
- change-t-on son type de données ?
- 4.5) Quelle est la taille maximale pour une ligne, une table et une
- base de données ?
- 4.6) Combien d'espace disque faut-il pour stocker les données d'un
- fichier texte typique ?
- 4.7) Comment puis-je savoir quels index, tables, bases de données et
- utilisateurs sont définis ?
- 4.8) Mes requêtes sont lentes ou ne font pas usage des index.
- Pourquoi ?
- 4.9) Comment puis-je savoir si l'optimiseur évalue mes requêtes ?
- 4.10) Qu'est-ce qu'un index R-tree ?
- 4.11) Qu'est-ce que l'optimiseur génétique de requêtes ?
- 4.12) Comment puis-je réaliser des recherches par des expressions
- rationnelles ainsi que des recherches non sensibles à la casse ?
- Comment puis-je utiliser un index lors de recherches non sensibles à
- la casse ?
- 4.13) Comment puis-je détecter si un champ est NULL dans une requête ?
- 4.14) Quelle sont les différences entre les nombreux types de
- caractères ?
- 4.15.1) Comment puis-je créer un champ série, c'est-à-dire
- s'incrémentant automatiquement ?
- 4.15.2) Comment puis-je obtenir la valeur d'un SERIAL suite à une
- insertion ?
- 4.15.3) Est-ce que currval() et nextval() n'amènent pas des problèmes
- lorsque plusieurs utilisateurs les lancent en même temps ?
- 4.15.4) Pourquoi mes numéros de séquences ne sont pas ré-utilisés lors
- d'une annulation de transaction ? Pourquoi existe-t'il des trous dans
- la numérotation de ma colonne séquentielle (SERIAL) ?
- 4.16) Qu'est-ce qu'un OID? Qu'est-ce qu'un TID ?
- 4.17) A quoi correspond certains termes utilisés avec PostgreSQL ?
- 4.18) Pourquoi ai-je l'erreur ERROR: Memory exhausted in
- AllocSetAlloc() ?
- 4.19) Comment puis-je connaître la version de PostgreSQL que
- j'utilise ?
- 4.20) Pourquoi ai-je invalid large obj descriptor lors d'opérations
- avec des gros objets ?
- 4.21) Comment puis-je créer une colonne qui aura par défaut l'heure
- actuelle comme valeur ?
- 4.22) Pourquoi mes sous-requêtes utilisant IN sont-elles si lentes ?
- 4.23) Comment puis-je réaliser une jointure externe ?
- 4.24) Comment puis-je lancer des requêtes utilisant plusieurs bases de
- données ??
- 4.25) Comment puis-je renvoyer plusieurs lignes ou colonnes à partir
- d'une fonction ?
- 4.26) Pourquoi ne puis-je pas créer/supprimer des tables temporaires
- dans les fonctions PL/PgSQL de façon stable ?
- 4.27) Quelles options de cryptage sont disponibles ?
-
- Etendre PostgreSQL
-
- 5.1) J'ai écrit une fonction utilisateur. Lorsque je l'exécute avec
- psql, pourquoi cela finit-il avec un "dump core" ?
- 5.2) Comment puis-je contribuer avec de nouveaux types et fonctions
- pour PostgreSQL ?
- 5.3) Comment puis-je écrire une fonction C pour récupérer une ligne ?
- 5.4) J'ai modifié un fichier source. Pourquoi la modification
- n'est-elle pas visible après la recompilation ?
- _________________________________________________________________
-
- Questions générales
-
- 1.1) Qu'est ce que PostgreSQL ? Comment le prononcer ?
-
- PostgreSQL se prononce Post-Gres-Q-L. Un fichier audio est disponible
- sur http://www.postgresql.org/postgresql.mp3 pour ceux souhaitant
- entendre la prononciation.
-
- PostgreSQL est une amélioration du système de gestion de bases de
- données POSTGRES (et est toujours quelque fois appelé "Postgres"), un
- prototype de recherche de SGBD de prochaine génération. PostgreSQL
- garde le puissant modèle de données et les types de données riches de
- POSTGRES, mais remplace le langage de requêtes PostQuel par un
- sous-ensemble étendu de SQL. PostgreSQL est gratuit et les sources
- complets sont disponibles.
-
- PostgreSQL est écrit par une équipe de développeurs qui sont tous
- inscrits à la liste de diffusion de développement de PostgreSQL. Le
- coordinateur actuel est Marc G. Fournier (scrappy@PostgreSQL.org et
- voir la section 1.6 pour contacter les développeurs). Cette équipe est
- responsable de tout le développement de PostgreSQL. C'est un projet
- soutenu par une communauté sans être contrôlé par une société. Pour y
- contribuer, voir la FAQ des développeurs sur
- http://www.postgresql.org/docs/faqs/FAQ_DEV.html.
-
- Les auteurs de PostgreSQL 1.01 étaient Andrew Yu et Jolly Chen.
- Beaucoup d'autres personnes ont contribué au portage, aux tests, au
- déboguage et à l'amélioration du code. Le code de Postgres original,
- duquel PostgreSQL est dérivé, était le fruit de l'effort de nombreux
- étudiants diplômés et non diplômés, et de programmeurs travaillant
- sous la direction du Professeur Michael Stonebraker à l'université de
- Californie, Berkeley.
-
- Le nom original du logiciel à Berkeley était Postgres. Quand le SQL
- fut ajouté en 1995, le nom a dû être changé en Postgres95. Fin 1996,
- le nom fut changé en PostgreSQL.
-
- 1.2) Quelle est la licence de PostgreSQL ?
-
- PostgreSQL est distribué sous la licence suivante :
-
- PostgreSQL Data Base Management System
-
- Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
- Portions Copyright (c) 1994-6 Regents of the University of California
-
- Permission to use, copy, modify, and distribute this software and its
- documentation for any purpose, without fee, and without a written
- agreement is hereby granted, provided that the above copyright notice
- and this paragraph and the following two paragraphs appear in all
- copies.
-
- IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
- FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
- INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND
- ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
- PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
- CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
- UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-
- La licence ci-dessus est la licence BSD, une licence open-source
- classique.
-
- 1.3) Sous quels environnements Unix PostgreSQL tourne-t-il ?
-
- En général, tout environnement compatible Unix moderne devrait pouvoir
- faire fonctionner PostgreSQL. Les environnements qui ont été testés
- explicitement sont listés dans les instructions d'installation.
-
- 1.4) Sous quels environnements non Unix PostgreSQL fonctionne-t'il ?
-
- À partir de la version 8.0, PostgreSQL fonctionne nativement sur les
- systèmes d'exploitation Microsoft Windows à base NT comme Win2000,
- WinXP et Win2003. Un installeur est disponible sur
- http://pgfoundry.org/projects/pginstaller.
-
- Il existe aussi un port sur Novell Netware sur
- http://forge.novell.com.
-
- 1.5) Où puis-je me procurer PostgreSQL ?
-
- Le site FTP anonyme principal de PostgreSQL est
- ftp://ftp.PostgreSQL.org/pub. Pour les sites miroirs, voir notre site
- web principal.
-
- 1.6) Où puis-je obtenir du support ?
-
- La liste de diffusion principale est pgsql-general@PostgreSQL.org.
- Elle est disponible pour discuter de sujets en rapport avec
- PostgreSQL. Pour s'y inscrire, il faut envoyer un courriel avec les
- lignes suivantes dans le corps du message (pas dans la ligne du
- sujet) :
- subscribe
- end
-
- à pgsql-general-request@PostgreSQL.org.
-
- Il existe aussi un recueil de la liste. Pour s'y inscrire, envoyez un
- courriel à pgsql-general-digest-request@PostgreSQL.org avec dans le
- corps :
- subscribe
- end
-
- Les recueils sont envoyés aux membres de cette liste dès que la liste
- principale a reçu 30 Ko de messages.
-
- Une liste de diffusion de bogues est disponible. Pour s'y inscrire,
- envoyer un courriel à pgsql-bugs-request@PostgreSQL.org avec dans le
- corps :
- subscribe
- end
-
- Une liste de diffusion pour les développeurs est aussi disponible.
- Pour s'y inscrire, envoyez un courriel à
- pgsql-hackers-request@PostgreSQL.org avec dans le corps :
- subscribe
- end
-
- Vous pouvez trouver d'autres listes et informations sur PostgreSQL sur
- le site web de PostgreSQL :
-
- http://www.PostgreSQL.org
-
- Il y a aussi un canal IRC sur Freenode et EFNet, le canal #PostgreSQL.
- Vous pouvez utiliser la commande Unix irc -c '#PostgreSQL' "$USER"
- irc.phoenix.net ou irc -c '#PostgreSQL' "$USER" irc.freenode.net.
-
- Une liste de sociétés pouvant fournir un support commercial est
- disponible sur http://techdocs.postgresql.org/companies.php.
-
- 1.7) Quelle est la dernière version ?
-
- La dernière version de PostgreSQL est la version 7.4.5.
-
- Nous projetons de sortir une version majeure tous les six à huit mois.
-
- 1.8) Quelle documentation est disponible ?
-
- Plusieurs manuels, pages de manuel ainsi que des petits exemples de
- test sont inclus dans la distribution. Voir le répertoire /doc. Vous
- pouvez aussi accéder aux manuels en ligne sur
- http://www.PostgreSQL.org/docs.
-
- Deux livres sur PostgreSQL sont disponibles en ligne sur
- http://www.PostgreSQL.org/docs/awbook.html et
- http://www.commandprompt.com/ppbook/. Il y a une liste de livres sur
- PostgreSQL pouvant être achetés sur
- http://techdocs.PostgreSQL.org/techdocs/bookreviews.php. Il y a aussi
- une collection d'articles techniques sur PostgreSQL sur
- http://techdocs.PostgreSQL.org/.
-
- psql possède des commandes \d pratiques montrant des informations sur
- les types, opérateurs, fonctions, aggrégats, etc.
-
- Notre site web contient encore plus de documentations.
-
- 1.9) Comment savoir quels sont les bogues connus ou les fonctionnalités
- manquantes ?
-
- PostgreSQL supporte un sous-ensemble étendu de SQL-92. Voir notre
- liste TODO pour les bogues connus, les fonctionnalités manquantes et
- les plans pour le futur.
-
- 1.10) Comment puis-je apprendre le SQL ?
-
- Le livre PostgreSQL sur http://www.PostgreSQL.org/docs/awbook.html
- enseigne le SQL. Il existe un autre livre PostgreSQL sur
- http://www.commandprompt.com/ppbook. Il existe de bons tutoriels sur
- http://www.intermedia.net/support/sql/sqltut.shtm,
- http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM
- et http://sqlcourse.com.
-
- Un autre (en anglais uniquement) "Teach Yourself SQL in 21 Days,
- Second Edition" se trouve sur
- http://members.tripod.com/er4ebus/sql/index.htm
-
- Nombre de nos utilisateurs aiment The Practical SQL Handbook, Bowman,
- Judith S., et al., Addison-Wesley. D'autres aiment The Complete
- Reference SQL, Groff et al., McGraw-Hill.
-
- 1.11) PostgreSQL est-il compatible an 2000 ?
-
- Oui, nous manipulons facilement les dates après et avant l'an 2000.
-
- 1.12) Comment puis-je rejoindre l'équipe de développement ?
-
- Tout d'abord, téléchargez les derniers sources et lisez la
- documentation pour les développeurs sur notre site web ou bien dans la
- distribution. Ensuite, inscrivez-vous aux listes de diffusion
- pgsql-hackers et pgsql-patches. Et pour finir, soumettez des
- correctifs de grande qualité sur pgsql-patches.
-
- Environ une douzaine de personnes ont des droits de modification sur
- l'archive CVS de PostgreSQL. Ils ont chacun soumis tellement de
- correctifs de qualité qu'il était devenu impossible aux développeurs
- de tenir la cadence et nous avions confiance dans le qualité des
- correctifs qu'ils soumettaient.
-
- 1.13) Comment dois-je soumettre un rapport de bogue ?
-
- Merci de visiter la page PostgreSQL BugTool sur
- http://www.PostgreSQL.org/bugs/bugs.php, qui donne des indications sur
- la façon de soumettre un rapport de bogue.
-
- De même, vérifiez notre site ftp ftp://ftp.PostgreSQL.org/pub pour
- voir s'il existe une version PostgreSQL plus récente ou des
- correctifs.
-
- 1.14) Comment PostgreSQL se compare-til à d'autres SGBD ?
-
- Il y a plusieurs manières de mesurer un logiciel : les
- fonctionnalités, les performances, la fiabilité, le support, et le
- prix.
-
- Fonctionnalités
- PostgreSQL possède la plupart des fonctionnalités présentes
- dans les SGBD commerciaux, comme les transactions, les requêtes
- imbriquées, les déclencheurs, les vues, l'intégrité
- référentielle par clés étrangères, et le verrouillage
- sophistiqué. Nous avons des fonctionnalités qu'ils n'ont pas,
- comme les types définis par l'utilisateur, l'héritage, les
- règles, et le contrôle de concurrence par multi-versionnage
- pour réduire les contentions de verrouillage.
-
- Performances
- PostgreSQL a des performances similaires aux autres bases de
- données commerciales et open source. Il est plus rapide pour
- certaines opérations, plus lent pour d'autres. Par rapport à
- MySQL ou d'autres SGBD plus léger, nous sommes plus rapides
- pour de nombreux utilisateurs, des requêtes complexes et une
- charge pour les requêtes de lecture/écriture. MySQL est plus
- rapide pour des requêtes SELECT simples effectuées par quelques
- utilisateurs. Bien sûr, MySQL ne possède aucune des
- fonctionnalités de la section Fonctionnalités ci-dessus.
- PostgreSQL est construit pour la fiabilité et les
- fonctionnalités et nous continuons à améliorer les performances
- à chaque version. Il y a une page web intéressante qui compare
- PostgreSQL à MySQL sur
- http://openacs.org/philosophy/why-not-mysql.html. De plus,
- MySQL est une société qui distribue son produit via l'open
- source et requiert une licence commerciale pour les logiciels
- propriétaires, donc pas une communauté de développement open
- source comme PostgreSQL.
-
- Fiabilité
- Nous somme conscients qu'un SGBD doit être fiable ou bien il
- est inutile. Nous faisons le maximum pour sortir des versions
- bien testées, du code stable ne contenant qu'un minimum de
- bogues. Chaque version a au moins un mois de tests, et notre
- historique de versions montre que nous pouvons fournir des
- versions stables et robustes, prêtes pour une utilisation en
- environnement de production. Nous pensons que nous nous
- comparons favorablement aux autres bases de données dans ce
- domaine.
-
- Support
- Nos listes de diffusion offrent un contact avec un large groupe
- de développeurs et d'utilisateurs afin d'aider à la résolution
- des problèmes rencontrés. Nous ne pouvons garantir un correctif
- mais les SGBD commerciaux ne le garantissent pas toujours non
- plus. L'accès direct aux développeurs, à la communauté
- d'utilisateurs, aux manuels, et au code source, fait du support
- pour PostgreSQL un support supérieur aux autres SGBD. Un
- support commercial par incident est disponible pour ceux qui en
- ont le besoin (voir la section 1.6 de la FAQ).
-
- Prix
- Nous sommes gratuits pour tous les usages, commerciaux et non
- commerciaux. Vous pouvez inclure notre code dans vos produits
- sans limitation, exceptées celles citées dans notre licence de
- type BSD donnée plus haut.
-
- 1.15) Comment puis-je aider financièrement PostgreSQL ?
-
- PostgreSQL possède une infrastructure de première classe depuis le
- début en 1996. Ceci grâce à Marc Fournier, qui a créé et géré cette
- infrastructure des années durant.
-
- Une infrastructure de qualité est importante pour un projet
- open-source. Cela permet d'empêcher l'éparpillement qui ralentirait
- beaucoup l'avancement du projet.
-
- Bien sûr, cette infrastructure n'est pas donnée. Elle requiert un
- certain nombre de dépenses mensuelles ou ponctuelles. Si vous ou votre
- société peut donner de l'argent pour soutenir cet effort, merci de
- consulter la page web http://store.pgsql.com/shopping/ et de faire une
- donation.
-
- Bien que la page web mentionne PostgreSQL, Inc, les contributions sont
- exclusivement utilisées pour soutenir le projet PostgreSQL et ne
- soutiennent aucune société que ce soit. Si vous le préférez, vous
- pouvez aussi envoyer un chèque à l'adresse de contact.
- _________________________________________________________________
-
- De plus, si vous avez une histoire de succès avec PostgreSQL, merci de
- la soumettre à notre site d'évangélisation sur
- http://advocacy.postgresql.org.
-
- Questions sur le client utilisateur
-
- 2.1) Existe-t'il des pilotes ODBC pour PostgreSQL ?
-
- Il y a deux pilotes ODBC disponibles, PsqlODBC et OpenLink ODBC.
-
- Vous pouvez télécharger PsqlOBDC depuis
- http://gborg.postgresql.org/project/psqlodbc/projdisplay.php.
-
- OpenLink ODBC peut être obtenu depuis http://www.openlinksw.com. Il
- fonctionne avec leur logiciel client ODBC standard, vous aurez donc
- PostgreSQL ODBC sur toutes les plateformes client qu'ils supportent
- (Win, Mac, Unix, VMS).
-
- Ils vendront probablement ce produit aux gens qui recherchent une
- qualité de support professionnelle mais une version freeware sera
- toujours disponible. Merci d'envoyer vos questions à
- postgres95@openlink.co.uk.
-
- 2.2) Quels outils sont disponibles pour utiliser PostgreSQL avec des pages
- Web ?
-
- Une bonne introduction aux pages Web adossés à une base de données se
- trouve à http://www.webreview.com
-
- Pour l'intégration Web, PHP est une excellente interface. Elle se
- trouve à http://www.php.net.
-
- Pour les cas complexes, beaucoup utilisent l'interface Perl et CGI.pm
- ou mod_perl.
-
- 2.3) PostgreSQL a-t-il une interface graphique ?
-
- Oui, il y a plusieurs interfaces graphiques disponibles pour
- PostgreSQL, dont PgAccess http://www.pgaccess.org), PgAdmin III
- (http://www.pgadmin.org), RHDB Admin (http://sources.redhat.com/rhdb/
- et Rekall ( http://www.thekompany.com/products/rekall/, propriétaire).
- Il y a aussi PhpPgAdmin ( http://phppgadmin.sourceforge.net/ ), une
- interface Web pour PostgreSQL.
-
- Voir http://techdocs.postgresql.org/guides/GUITools pour une liste
- plus détaillée.
-
- 2.4) Quels langages sont disponibles pour communiquer avec PostgreSQL ?
-
- La plupart des langages de programmation couramment utilisés ont une
- interface pour PostgreSQL. Vérifiez la liste des modules de votre
- langage.
-
- Les interfaces ci-dessous sont incluses dans la distribution :
- * C (libpq)
- * Embedded C (ecpg)
- * Java (jdbc)
- * Python (PyGreSQL)
- * TCL (libpgtcl)
-
- Interfaces supplémentaires disponibles sur http://gborg.postgresql.org
- dans la section Drivers/Interfaces
- _________________________________________________________________
-
- Questions Administratives
-
- 3.1) Comment installer PostgreSQL ailleurs que sous /usr/local/pgsql ?
-
- Il faut spécifier l'option --prefix lors du lancement de configure.
-
- 3.2) Quand je lance postmaster, j'obtiens un Bad System Call ou un message
- core dumped . Pourquoi ?
-
- Cela peut être dû à une variété de problèmes mais vérifiez d'abord que
- vous avez les extensions System V installées pour votre noyau.
- PostgreSQL nécessite le support noyau pour la mémoire partagée et les
- sémaphores.
-
- 3.3) Quand je lance postmaster, j'obtiens des erreurs IpcMemoryCreate.
- Pourquoi ?
-
- Soit vous n'avez pas configuré correctement la mémoire partagée dans
- votre noyau, soit vous devez augmenter la mémoire partagée disponible
- dans le noyau. Le montant exact dont vous avez besoin dépend de votre
- architecture et du nombre de tampons et de processus que vous avez
- configuré pour postmaster. Pour la plupart des systèmes avec un nombre
- par défaut de tampons et de processus, vous aurez besoin d'un minimum
- d'environ 1 Mo. Voir le chapitre Administration du manuel PostgreSQL
- pour des informations plus détaillées sur la mémoire partagée et les
- sémaphores.
-
- 3.4) Quand je lance postmaster, j'obtiens des erreurs IpcSemaphoreCreate.
- Pourquoi ?
-
- Si le message d'erreur est IpcSemaphoreCreate: semget failed (No space
- left on device) alors votre noyau n'est pas configuré avec
- suffisamment de sémaphores. PostgreSQL a besoin d'un sémaphore par
- processus serveur potentiel. Une solution provisoire est de lancer
- postmaster avec une plus petite limite sur le nombre de processus
- serveur. Utilisez l'option -N avec un paramètre inférieur au choix par
- défaut de 32. Une solution permanente est d'augmenter les paramètres
- SEMMNS et SEMMNI de votre noyau.
-
- Des sémaphores inopérantes peuvent aussi provoquer des plantages
- pendant de gros accès à la base de données.
-
- Si le message d'erreur est autre chose, vous n'avez peut-être pas du
- tout le support des sémaphores dans votre noyau. Voir le chapitre
- Administration du manuel PostgreSQL pour des informations plus
- détaillées sur la mémoire partagée et les sémaphores.
-
- 3.5) Comment contrôler les connexions d'autres machines ?
-
- Par défaut, PostgreSQL autorise seulement les connexions de la machine
- locale en utilisant les sockets de domaine Unix ou les connexions
- TCP/IP. D'autres machines ne seront pas capables de se connecter sauf
- si vous modifiez listen_addresses dans postgresql.conf et activez une
- authentification basée sur l'hôte en modifiant le fichier
- $PGDATA/pg_hba.conf en accord.
-
- 3.6) Comment régler le moteur de la base de données pour de meilleures
- performances ?
-
- Des index accéléreront les requêtes. La commande EXPLAIN ANALYZE vous
- permet de voir comment PostgreSQL traite votre requête et quels index
- sont utilisés.
-
- Si vous faites beaucoup d'insertions (instruction INSERT), envisagez
- de les faire en une fois en utilisant la commande COPY. Ceci est plus
- rapide que des commandes INSERTS individuelles. Deuxièment, les
- requêtes qui ne sont pas dans des blocs de transaction BEGIN
- WORK/COMMIT sont considérés comme étant dans leur propre transaction.
- Envisagez de faire plusieurs instructions dans un seul bloc de
- transaction. Ceci réduira la surcharge apportée par les transactions.
- Aussi, envisagez d'abandonner et de recréer des index lors de grosses
- modifications de données.
-
- Il y a plusieurs options d'optimisations. Vous pouvez désactiver
- fsync() en lançant postmaster avec l'option -o -F. Ceci empêchera les
- fsync()s d'écrire sur disque après toute transaction.
-
- Vous pouvez utiliser l'option -B de postmaster pour augmenter le
- nombre de tampons de mémoire partagée utilisés par les processus
- serveurs. Si vous fixez ce paramètre trop haut, postmaster ne se
- lancera pas car vous avez dépassé la limite de votre noyau sur la
- quantité de mémoire partagée. Chaque tampon fait 8 Ko et le choix par
- défaut est de 64 tampons.
-
- Vous pouvez utiliser l'option serveur -S pour augmenter la quantité
- maximale de mémoire utilisée par les processus serveurs pour des tris
- temporaires. La valeur de -S est mesuré en kilooctets et le choix par
- défaut est de 512 (c'est-à-dire 512 Ko).
-
- Vous pouvez utiliser la commande CLUSTER pour regrouper vos données en
- tables pour correspondre à un index. Voir la page de manual CLUSTER
- pour plus de détails.
-
- 3.7) Quelles fonctionalités de déboguage sont disponibles ?
-
- PostgreSQL a plusieurs fonctionalités qui permettent de recueillir des
- informations de statut qui peuvent être utile pour des intentions de
- déboguage.
-
- D'abord, en lançant configure avec l'option --enable-cassert, beaucoup
- d'assert()s surveillent le serveur et arrêtent le programme quand
- quelque chose d'inattendu arrive.
-
- Postmaster et postgres ont tous deux plusieurs options de déboguage de
- disponible. D'abord, quand vous lancez postmaster, vérifiez que vous
- envoyez les sorties standard et d'erreur dans un fichier de traces
- comme :
- cd /usr/local/pgsql
- ./bin/postmaster >server.log 2>&1 &
-
- Ceci va créer un fichier server.log dans le répertoire racine de
- PostgreSQL. Ce fichier contient des informations utiles sur les
- problèmes ou erreurs rencontrés par le serveur. Postmaster dispose
- d'une option -d qui permet de rapporter des informations encore plus
- détaillées d'être rapportées. L'option -d prend un numéro qui spécifie
- le niveau de déboguage. Faites attention au fait que des valeurs
- élévées de niveau de déboguage génerent des fichiers de traces
- volumineux.
-
- Si postmaster ne tourne pas, vous pouvez lancer le serveur postgres de
- la ligne de commande et taper votre requête SQL directement. Ceci est
- recommandé seulement pour des fonctions de déboguage. Notez qu'un
- retour chariot termine la requête, pas un point-virgule. Si vous
- compilez avec les symboles de déboguage, vous pouvez utiliser un
- débogueur pour voir ce qui se passe. Parce que le serveur n'a pas été
- lancé par postmaster, il ne tourne pas dans un environnement identique
- et les problèmes d'interaction de verrouillage/serveur ne peuvent être
- dupliqués.
-
- Si postmaster est en train de tourner, lancez psql dans une fenêtre
- puis trouvez le PID du processus postgres utilisé par psql. Utilisez
- un débogueur pour l'attacher au PID postgres. Vous pouvez mettre un
- point d'arrêt dans le débogueur et envoyez des requêtes de psql. Si
- vous déboguez le démarrage de postgres, vous pouvez mettre
- PGOPTIONS="-W n", puis lancez psql. Ceci va retarder le démarrage de n
- secondes pour que vous puissiez attacher un débogueur au processus,
- fixer des points d'arrêt et continuer la séquence de démarrage.
-
- Le programme postgres a les options -s, -A et -t qui peuvent être
- utile pour des mesures de déboguage et de performance.
-
- Vous pouvez compiler avec les options de performance pour voir quelles
- fonctions prennent du temps d'exécution. Les fichiers de gestion du
- serveur seront déposés dans le répertoire pgsql/data/base/nom_db. Les
- fichiers de gestion clients seront mis dans le répertoire actuel du
- client. Linux requiert une compilation avec -DLINUX_PROFILE pour une
- meilleure gestion.
-
- 3.8) Pourquoi est-ce que j'obtiens des messages Sorry, too many clients
- quand je me connecte ?
-
- Vous pouvez augmenter la limite de postmaster sur le nombre de
- processus serveur concurrents qu'il peut lancer.
-
- La limite par défaut est de 32 processus. Vous pouvez l'augmenter en
- relançant postmaster avec une valeur -N appropriée ou en modifiant
- postgresql.conf.
-
- Tenez compte du fait que si vous fixez -N plus grand que 32, vous
- devez aussi augmenter -B au-dela de sa valeur par défaut 64 ; -B doit
- valoir au moins deux fois -N et probablement plus pour une meilleure
- performance. Pour de grand nombres de processus serveurs vous aurez
- probablement aussi augmenter plusieurs parametres de configuration du
- noyau Unix. Les choses a vérifier incluent la taille maximale des
- blocs de mémoire partagée, SHMMAX ; le nombre maximal de sémaphores,
- SEMMNS et SEMMNI ; le nombre maximal de processus, NPROC ; le nombre
- maximal de processus par utilisateur, MAXUPRC ; et le nombre maximal
- de fichiers ouverts, NFILE et NINODE. La raison pour laquelle
- PostgreSQL a une limite sur le nombre de processus serveurs autorisés
- est pour que votre système ne tombe pas à court de ressources.
-
- 3.9) Que contient le répertoire pgsql_tmp ?
-
- Ce répertoire contient des fichiers temporaires générés par le moteur
- de requête. Par exemple, si un tri doit être fait pour satisfaire un
- ORDER BY et que ce tri requiert plus de place que le paramètre -S du
- serveur n'autorise, alors des fichiers temporaires seront créés pour
- contenir les données nécessaires.
-
- Les fichiers temporaires sont d'habitude effacés automatiquement mais
- peuvent rester si un serveur s'arrête brutalement pendant un tri. Un
- arrêt et un redémarrage de postmaster effacera les fichiers dans ces
- répertoires.
-
- 3.10) Pourquoi est-ce que j'ai besoin de faire une sauvegarde des bases et
- de restaurer pour mettre a jour les versions de PostgreSQL ?
-
- L'équipe PostgreSQL ne fait que des changements mineurs entre des
- versions mineurs, donc mettre à jour de 7.2 vers 7.2.1 ne nécessitera
- pas de sauvegarde et de restauration. Par contre, les sorties majeures
- (c'est-à-dire de 7.2 vers 7.3) changent souvent le format interne des
- tables systèmes et des fichiers de données. Ces modifications sont
- souvent complexes alors nous ne gardons pas de compatibilité
- descendante pour les fichiers de données. Une sauvegarde exportera les
- données dans un format générique qui peut ensuite être chargé dans le
- nouveau format interne.
-
- Dans les sorties où le format sur disque ne change pas, le script
- pg_upgrade peut être utilisé pour mettre à jour sans
- sauvegarde/restauration. Les notes de sorties précisent si pg_upgrade
- est disponible pour la sortie.
-
- 3.11) Quels matériels dois-je utiliser ?
-
- Comme le matériel PC est compatible en grosse partie, les gens ont
- tendance à croire que tous les matériels PC sont de même qualité. Ce
- n'est pas le cas. La RAM ECC, le SCSI et les cartes-mère de qualité
- sont plus fiables et ont de meilleurs performances qu'un matériel
- moins coûteux. PostgreSQL fonctionnera sur à peu près tout matériel
- mais si la fiabilité et la performance sont importantes pour vous, il
- est rusé de bien considérer les options matérielles. Nos listes de
- diffusion peuvent être utilisées pour discuter des options matériels.
- _________________________________________________________________
-
- Questions fonctionnelles
-
- 4.1) Quelle est la différence entre curseur binaire et curseur normal ?
-
- Voir la page DECLARE du manuel pour une description.
-
- 4.2) Comment faire un SELECT seulement sur les premières lignes d'une
- requête ? Sur une ligne aléatoire ?
-
- Voir la page FETCH du manuel ou utiliser SELECT ... LIMIT....
-
- Il se peut que l'intégralité de la requête doive être évaluée, même si
- vous voulez seulement les premières lignes. Envisagez d'utiliser une
- requête avec une clause ORDER BY. S'il existe un index correspondant à
- l'ORDER BY, PostgreSQL peut n'évaluer que les premières lignes, sinon
- l'intégralité de la requête peut être évaluée, jusqu'à générer les
- lignes désirées.
-
- Pour faire un SELECT sur une ligne aléatoire :
- SELECT colonne
- FROM table
- ORDER BY random()
- LIMIT 1;
-
- 4.3) Comment obtenir une liste des tables ou d'autres objets que je vois
- dans psql ?
-
- Utilisez la commande \dt pour voir les tables dans psql. Pour une
- liste complète de commandes à l'intérieur de psql, vous pouvez
- utiliser \?. Autrement, vous pouvez lire le code source de psql dans
- le fichier pgsql/src/bin/psql/describe.c. Il contient des commandes
- SQL qui génèrent le contenu des commandes anti-slash de psql. Vous
- pouvez aussi lancer psql avec l'option -E, afin qu'il imprime les
- requêtes qu'il utilise pour exécuter les commandes que vous lui
- passez. PostgreSQL fournit aussi une interface d'informations sur le
- schéma compatible avec SQLi que vous pouvez interroger des
- informations sur la base de données.
-
- 4.4) Comment supprime-t-on une colonne d'une table, ou comment change-t-on
- son type de données ?
-
- La fonction DROP COLUMN a été ajoutée dans la version 7.3 avec ALTER
- TABLE DROP COLUMN. Pour les versions précédentes, vous pouvez faire :
- BEGIN;
- LOCK TABLE ancienne_table;
- SELECT ... -- sélectionnez toutes les colonnes sauf celle à supprimer
- INTO TABLE nouvelle_table
- FROM ancienne_table;
- DROP TABLE ancienne_table;
- ALTER TABLE nouvelle_table RENAME TO ancienne_table;
- COMMIT;
-
- Pour changer le type de données d'une colonne, faites :
- BEGIN;
- ALTER TABLE table ADD COLUMN nouvelle_colonne nouveau_type_de_donnees;
- UPDATE table SET nouvelle_colonne = CAST(ancienne_colonne AS nouveau_type_de_donnees);
- ALTER TABLE table DROP COLUMN ancienne_colonne;
- COMMIT;
-
- Après, vous pouvez faire VACUUM FULL tab pour récupérer l'espace
- disque utilisé par les lignes expirées.
-
- 4.5) Quelle est la taille maximale pour une ligne, une table, une base de
- données ?
-
- Les limites sont :
- Taille maximum pour une base de données illimitée (il existe des basesde 32 To)
- Taille maximum pour une table 32 To
- Taille maximum pour une ligne 1,6 To
- Taille maximum pour un champ 1 Go
- Nombre maximum de lignes dans une table illimité
- Nombre maximum de colonnes dans une table 250-1600, selon le type de colonnes
- Nombre maximum d'index sur une table illimité
-
- Bien sûr, ces valeurs ne sont pas vraiment illimitée, elles sont
- limitées par l'espace disque disponible, ainsi que par l'espace de
- mémoire et de swap. Les performances peuvent se dégrader si ces
- valeurs sont inhabituellement grandes.
-
- La taille maximum des tables (32 To) ne nécessite pas que le système
- d'exploitation supporte les grands fichiers. Les grandes tables sont
- stockées sous forme de fichiers multiples de 1 Go, donc les limites de
- taille du système de fichier ne sont pas importantes.
-
- La taille maximum des tables et le nombre maximum de colonnes peuvent
- être quadriplés, si la taille des blocs par défaut est augmentée à
- 32 Ko.
-
- 4.6) Combien d'espace disque faut-il pour stocker les données d'un fichier
- texte typique ?
-
- Une base de données PostgreSQL peut utiliser jusqu'à cinq fois
- l'espace nécessaire pour stocker les données d'un fichier texte.
-
- A titre d'exemple, considérez un fichier de 100 000 lignes, comportant
- un entier et une chaîne de description sur chaque ligne. Supposons que
- la chaîne soit longue en moyenne de 20 octets. Le fichier texte serait
- de 2,8 Mo. La taille du fichier d'une base de données PostgreSQL peut
- être estimée à 6,4 Mo :
- 32 octets: chaque ligne (approximation)
- 24 octets: un champ 'entier' et un champ 'texte'
- + 4 octets: pointeur vers le tuple sur la page
- ----------------------------------------
- 60 octets par ligne
-
- La taille des pages de données dans PostgreSQL est de 8192 octets (8 KO), donc :
-
- 8192 octets par page
- ---------------------- = 136 lignes par page de base de données (arrondi à l'entier inférieur)
- 60 octets par ligne
-
- 100000 lignes de données
- ------------------------- = 735 pages de base de données (arrondi à l'entier supérieur)
- 128 lignes par page
-
-735 pages de base de données * 8192 octets par page = 6 021 120 octets (6,4 Mo)
-
- Les index utilisent moins d'espace, mais ils contiennent les données
- indexées, ils peuvent donc également être grands.
-
- Les NULL sont stockés sous forme de bitmap, aussi utilisent-ils très
- peu d'espace.
-
- 4.7) Comment puis-je savoir quels index, tables, bases de données et
- utilisateurs sont définis ?
-
- psql dispose de plusieurs commandes commençant par un anti-slash pour
- retrouver ces informations. Utilisez \? pour les connaître. Il existe
- aussi des tables systèmes, qui commencent par pg_ et qui les décrivent
- également. Aussi, psql -l liste toutes les bases de données.
-
- Essayez également le fichier pgsql/src/tutorial/syscat.source. Il
- illustre un grand nombre de commandes SELECT nécessaires pour
- récupérer l'information des tables système de la base de données.
-
- 4.8) Mes requêtes sont lentes ou ne font pas usage des index. Pourquoi ?
-
- Les index ne sont pas automatiquement utilisés par chaque requête. Ils
- sont utilisés uniquement si la table est plus grande qu'une certaine
- taille, et si la requête sélectionne seulement un faible pourcentage
- des lignes de la table. Ceci est dû au fait qu'un accès disque
- aléatoire causé par un parcours d'index peut être plus lent qu'une
- simple lecture de la table, ou parcours séquentiel
-
- Pour déterminer si un index devrait être utilisé, PostgreSQL a besoin
- des statistiques de la table. Ces statistiques sont collectées en
- lançant VACUUM ANALYZE ou simplement ANALYZE. Avec les statistiques,
- l'optimiseur sait combien de lignes se trouvent dans la table et peut
- mieux déterminer s'il faut utiliser l'index. Les statistiques sont
- également utiles pour déterminer l'ordre optimal des opérations de
- jointure. La collecte des statistiques devrait être effectuée
- régulièrement lorsque le contenu de la table change.
-
- Les index ne sont normalement pas utilisés pour les clauses ORDER BY
- ou pour les jointures. Un parcours séquentiel suivi d'un tri explicite
- est habituellement plus rapide qu'un parcours d'index pour une table
- importante. Toutefois, LIMIT combiné avec ORDER BY utilisera souvent
- un index parce que seulement une petite partie de la table est
- renvoyée. En fait, bien que MAX() et MIN() n'utilisent pas les index,
- il est possible de retrouver ces valeurs en utilisant un index avec
- ORDER BY et LIMIT :
- SELECT colonne
- FROM table
- ORDER BY colonne [ DESC ]
- LIMIT 1;
-
- Si vous pensez que l'optimiseur choisit par erreur un parcours
- sequentiel, utilisez SET enable_seqscan TO 'off' et lancez des tests
- pour voir si le parcours d'index est effectivement plus rapide.
-
- Lorsque vous utilisez des caractères joker tels que LIKE ou ~, les
- index peuvent seulement être utilisés dans certaines circonstances :
- * Le début de la chaîne de recherche doit être ancré au départ de la
- chaîne, c'est-à-dire
- + Les modèles pour LIKE ne doivent pas commencer par %.
- + Les modèles d'expression régulière pour ~ doivent commencer
- par ^.
- * La chaîne de recherche ne peut pas commencer par une classe de
- caractères, c'est-à-dire [a-e].
- * Les recherches sans casse comme ILIKE et ~* n'utilisent pas les
- index. Utilisez plutôt les index fonctionnels, décrit dans la
- section 4.12.
- * La locale C par défaut doit être utilisée lors de initdb.
-
- Dans les versions antérieures à la 8.0, les indexs ne peuvent souvent
- pas être utilisés sauf si les types de données correspondent
- exactement au type de la colonne de l'index. Ceci est particulièrement
- vrai pour les index de colonnes de type int2, int8 et numeric.
-
- 4.9) Comment puis-je savoir si l'optimiseur évalue mes requêtes ?
-
- Voir la page EXPLAIN du manuel.
-
- 4.10) Qu'est-ce qu'un index R-tree ?
-
- Un index R-tree est utilisé pour l'indexation des données spatiales.
- Un index de hachage ne permet pas les recherches par plage. Un index
- B-tree peut seulement faire des recherches sur une dimension. Les
- index R-tree peuvent traiter des données multi-dimensionnelles. Par
- exemple, si un index R-tree peut être construit sur un attribut de
- type point, le système peut plus efficacement gérer les requêtes du
- type "Sélection de tous les points d'un rectangle".
-
- L'article de référence qui décrit le système R-tree original est :
-
- Guttman, A. "R-trees: A Dynamic Index Structure for Spatial
- Searching." Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of
- Data, 45-57.
-
- Vous pouvez également trouver ce papier dans le livre de Stonebraker
- "Readings in Database Systems".
-
- Les index R-tree intégrés peuvent prendre en charge les polygônes et
- les boîtes. En théorie, les R-trees peuvent être étendus à un plus
- grand nombre de dimensions. En pratique, l'extension des R-trees
- requiert pas mal de travail et nous n'avons pour le moment aucune
- documentation sur la façon de procéder.
-
- 4.11) Qu'est-ce que l'optimiseur génétique de requêtes ?
-
- Le module GEQO (acronyme de GEnetic Query Optimizer) accélère
- l'optimisation des requêtes lors de jointures de nombreuses tables par
- un algorithme génétique (GA). Il permet la gestion des grosses
- requêtes de jointures en utilisant une recherche non exhaustive.
-
- 4.12) Comment puis-je réaliser des recherches sur des expressions
- rationnelles ainsi que des recherches non sensibles à la casse ? Comment
- puis-je utiliser un index lors de recherches non sensibles à la casse ?
-
- L'opérateur ~ réalise des recherches d'expressions rationnelles et ~*
- le fait sans tenir compte de la casse. La variante de LIKE non
- sensible à la casse est ILIKE.
-
- Des comparaisons d'égalité non sensibles à la casse sont
- habituellement exprimées de cette façon :
- SELECT *
- FROM table
- WHERE lower(colonne) = 'abc';
-
- Ceci n'utilisera pas un index standard. Néanmoins, si vous créez un
- index fonctionnel, celui-ci sera utilisé :
- CREATE INDEX tableindex ON table (lower(colonne));
-
- 4.13) Comment puis-je détecter si un champ est NULL dans une requête ?
-
- Il vous suffit de tester la colonne avec IS NULL ou IS NOT NULL.
-
- 4.14) Quelle sont les différences entre les nombreux types de caractères ?
-
-Type Nom interne Notes
---------------------------------------------------
-VARCHAR(n) varchar n spécifie la taille maximum, sans remplissage
-CHAR(n) bpchar des espaces sont ajoutés pour obtenir la
- longueur fixe spécifiée
-TEXT text pas de limite supérieure pour la taille
-BYTEA bytea tableau d'octets (accepte les octets nuls)
-"char" char un caractère
-
- Vous verrez le nom interne en examinant les catalogues système et dans
- quelques messages d'erreur.
-
- Les quatres premiers types du dessus sont des types "varlena"
- (c'est-à-dire que les quatre premiers octets correspondent à la
- taille, suivi des données). Donc, l'espace réellement utilisé est
- légèrement plus grand que la taille déclarée. Néanmoins, ces types de
- données sont aussi sujet à la compression ou à un enregistrement en
- dehors de la table avec TOAST, donc l'espace occupé sur disque
- pourrait aussi être moindre que ce qu'on pourrait attendre.
-
- VARCHAR(n) est bien mieux pour enregistrer des chaînes de longueurs
- variables tout en limitant la taille de cette chaîne. TEXT est utile
- pour les chaînes de longueur illimitée, avec malgré tout un maximum de
- 1 Go.
-
- CHAR(n) est intéressant pour stocker des chaînes de taille identique.
- CHAR(n) complète avec des espaces pour arriver à la taille spécifiée
- alors que VARCHAR(n) n'enregistre que les caractères donnés. BYTEA
- sert à stocker des données binaires, particulièrement les données
- incluant des octets NULL. Tous les types décrits ici ont des
- performances similaires.
-
- 4.15.1) Comment puis-je créer un champ série, c'est-à-dire s'incrémentant
- automatiquement ?
-
- PostgreSQL supporte un type de données SERIAL. Il crée automatiquement
- une séquence. Par exemple, ceci :
- CREATE TABLE personne (
- id SERIAL,
- nom TEXT
- );
-
- est automatiquement traduit en ceci :
- CREATE SEQUENCE personne_id_seq;
- CREATE TABLE personne (
- id INT4 NOT NULL DEFAULT nextval('personne_id_seq'),
- nom TEXT
- );
-
- Voir la page man de create_sequence pour plus d'informations sur les
- séquences. Vous pouvez aussi utiliser le champ OID de chaque ligne
- comme valeur unique. Néanmoins, si vous avez besoin de sauvegarder
- puis recharger la base de données, vous devrez utiliser l'option -o ou
- l'option COPY WITH OIDS de pg_dump pour conserver les OIDs.
-
- 4.15.2) Comment puis-je obtenir la valeur d'un SERIAL suite à une
- insertion ?
-
- Une approche pour récupérer la prochaine valeur SERIAL à partir de
- l'objet séquence est d'utiliser la fonction nextval() avant
- l'insertion et de l'insérer ensuite explicitement. En utilisant la
- table d'exemple de la section 4.15.1, un exemple dans un
- pseudo-langage ressemblerait à ceci :
- nouvelle_id = execute("SELECT nextval('personne_id_seq')");
- execute("INSERT INTO personne (id, nom) VALUES (nouvelle_id, 'Blaise Pascal')");
-
- Vous pourriez ensuite utiliser la nouvelle valeur stockée dans
- nouvelle_id avec d'autres requêtes (c'est-à-dire en tant que clé
- étrangère de la table personne). Notez que le nom de la SEQUENCE
- automatiquement créée sera <table>_<colonneserial>_seq, où table et
- colonneserial sont les noms respectifs de votre table et de votre
- colonne SERIAL.
-
- Autrement, vous pouvez récupérer la valeur SERIAL affectée avec la
- fonction currval() après qu'elle ait été insérée par défaut,
- c'est-à-dire,
- execute("INSERT INTO personne (nom) VALUES ('Blaise Pascal')");
- nouvelle_id = execute("SELECT currval('personne_id_seq')");
-
- Enfin, vous pouvez utiliser l'OID renvoyé par l'instruction INSERT
- pour récupérer la valeur par défaut bien que cela soit l'appoche la
- moins portable et la valeur de l'OID se réinitialisera aux environs de
- quatre milliards. En Perl, avec DBI et le module DBD:Pg d'Edmund
- Mergl, l'ancienne valeur est disponible via $sth->{pg_oid_status}
- après un $sth->execute().
-
- 4.15.3) Est-ce que currval() et nextval() n'amènent pas des problèmes
- lorsque plusieurs utilisateurs les lancent en même temps ?
-
- Non. currval() renvoie la valeur actuelle affectée par votre
- processus, et non pas par tous les utilisateurs.
-
- 4.15.4) Pourquoi mes numéros de séquences ne sont pas ré-utilisés lors
- d'une annulation de transaction ? Pourquoi existe-t'il des trous dans la
- numérotation de ma colonne séquentielle (SERIAL) ?
-
- Pour améliorer les accès concurrents, les valeurs de séquences sont
- données aux transactions qui en ont besoin et ne sont pas bloquées
- jusqu'à la fin de la transaction. Ceci crée des trous dans le
- numérotage pour les transactions annulées.
-
- 4.16) Qu'est-ce qu'un OID ? Qu'est-ce qu'un TID ?
-
- Les OID sont la réponse de PostgreSQL aux identifiants de lignes
- uniques. Chaque ligne créée dans PostgreSQL obtient un OID unique.
- Tous les OID générés pendant initdb sont inférieurs à 16384 (voir
- include/access/transam.h). Tous les OID créés par un utilisateur sont
- supérieurs ou égaux à ceci. Par défaut, tous ces OID sont uniques non
- seulement dans une table ou une base mais unique à l'intérieur d'une
- installation PostgreSQL entière.
-
- PostgreSQL utilise les OID dans ses tables système interne pour lier
- les lignes entre tables. Ces OID peuvent être utilisés pour identifier
- des lignes utilisateurs spécifiques et utilisés dans des jointures. Il
- est recommandé que vous utilisiez le type de colonne OID pour stocker
- des valeurs OID. Vous pouvez créer un index sur le champ OID pour un
- accès plus rapide.
-
- Les OID sont attribués pour toute ligne d'un endroit central qui est
- utilisé par toutes les bases de données. Si vous voulez changer l'OID
- en quelque chose d'autre ou si vous voulez faire une copie de la table
- avec les OID originaux, il n'y a pas de raisons pour ne pas le faire :
- CREATE TABLE nouvelle_table (macolonne int);
- SELECT oid AS ancienne_oid, macolonne INTO table_temporaire FROM ancienne_table;
- COPY table_temporaire FROM '/tmp/tablepg';
- COPY nouvelle_table WITH OIDS FROM '/tmp/tablepg';
- DROP TABLE table_temporaire;
-
- Les OID sont stockés en tant qu'entiers de quatre octets et
- déborderont à quatre milliards. Personne n'a jamais rapporté un tel
- cas et nous avons prévu de retirer la limite avant que cela ne se
- produise.
-
- Les TIDs sont utilisés pour identifier des lignes physiques
- spécifiques avec des valeurs de bloc et décalage. Les TID changent
- après que les lignes aient été modifiés ou rechargés. Ils sont
- utilisés par des entrées d'index pour pointer vers des lignes
- physiques.
-
- 4.17) A quoi correspond certains termes utilisés avec PostgreSQL ?
-
- Une partie du code source et de l'ancienne documentation utilisent des
- termes dont l'usage est plus commun. Voici quelques exemples :
- * table, relation, classe
- * ligne (row), enregistrement (record), tuple
- * colonne (column), champ (field), attribut
- * récupère, sélectionne (select)
- * remplace (replace), met à jour (update)
- * ajoute (append), insère (insert)
- * OID, valeur séquentielle (serial value)
- * portal, curseur
- * range variable, table name, table alias
-
- Une liste des termes généraux pour le domaine des bases de données est
- disponible sur :
- http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary
- /glossary.html
-
- 4.18) Pourquoi ai-je l'erreur ERROR: Memory exhausted in AllocSetAlloc() ?
-
- Vous manquez probablement de mémoire virtuelle sur votre système ou
- votre noyau a une limite assez basse pour certaines ressources.
- Essayez ceci avant de lancer postmaster :
- ulimit -d 262144
- limit datasize 256m
-
- Suivant votre shell, seul un d'eux pourrait réussir mais cela
- configurera d'une façon plus importante la taille du segment de
- données de votre processus. Cette commande s'applique au processus
- actuel et à tous les processus lancé par celui-ci. Si vous avez des
- problèmes avec le client SQL parce que le processus serveur renvoie
- trop de données, essayez ça avant de lancer le client.
-
- 4.19) Comment puis-je connaître la version de PostgreSQL que j'utilise ?
-
- A partir de psql, tapez SELECT version();
-
- 4.20) Pourquoi ai-je invalid large obj descriptor lors d'opérations sur des
- gros objects ?
-
- Vous avez besoin de placer BEGIN WORK et COMMIT autour de chaque
- utilisateur de gros objets, c'est-à-dire pour entourer lo_open ...
- lo_close.
-
- Actuellement, PostgreSQL force cette règle en fermant les gros objets
- lors de la transaction. Donc, le premier essai d'opérations sur ces
- objets, fonctionnant habituellement (au moins la plupart du temps)
- aura un invalid large obj descriptor. Donc le code, auparavant
- fonctionnel (au moins la plupart du temps), génèrera maintenant un
- message d'erreur si vous n'utilisez pas de transaction.
-
- Si vous utilisez une interface client interface comme ODBC, vous aurez
- peut-être besoin de lancer auto-commit off.
-
- 4.21) Comment puis-je créer une colonne qui aura par défaut l'heure
- actuelle comme valeur ?
-
- Utilisez CURRENT_TIMESTAMP:
-CREATE TABLE test (x int, heuremodif timestamp DEFAULT CURRENT_TIMESTAMP );
-
- 4.22) Pourquoi mes sous-requêtes utilisant IN sont-elles si lentes ?
-
- Dans les versions précédant la 7.4, les sous-requêtes ont été jointes
- avec des jointures externes en parcourant séquentiellement le résultat
- de la sous-requête pour chaque ligne de la requête externe. Si la
- sous-requête renvoit quelques lignes et que la requête externe en
- renvoit plein, IN sera plus rapide. Pour accélérer les autres
- requêtes, remplacez IN avec EXISTS :
- SELECT *
- FROM table
- WHERE colonne IN (SELECT souscolonne FROM soustable);
-
- to:
- SELECT *
- FROM table
- WHERE EXISTS (SELECT souscolonne FROM soustable WHERE souscolonne = colonne);
-
- Pour que ceci soit rapide, souscolonne doit être une colonne indexée.
-
- A partir de la version 7.4, IN utilise actuellement les mêmes
- techniques sophistiquées de jointures comme des requêtes normales et
- est préféré à l'utilisation de EXISTS.
-
- 4.23) Comment puis-je réaliser une jointure externe ?
-
- PostgreSQL supporte les jointures externes en utilisant la syntaxe SQL
- standard. Voici deux exemples :
- SELECT *
- FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
- or
- SELECT *
- FROM t1 LEFT OUTER JOIN t2 USING (col);
-
- Ces requêtes identiques joignent t1.col à t2.col et renvoient toute
- colonne non jointe de t1 (celles sans correspondance dans t2). Une
- jointure droite (RIGHT join) ajoutera les lignes non jointes de t2.
- Une jointure complète (FULL join) renverra les lignes correspondantes
- ainsi que les lignes non jointes de t1 et t2. Le mot clé OUTER est
- optionnelle et assumé dans le cas de jointure LEFT, RIGHT et FULL. Les
- jointures ordinaires sont appelées des jointures INNER.
-
- Lors des précédentes versions, les jointures externes peuvent être
- simulées en utilisant UNION et NOT IN. Par exemple, lors d'une
- jointure de tab1 et tab2, la requête suivante réalise une jointure
- externe, outer, des deux tables :
- SELECT tab1.col1, tab2.col2
- FROM tab1, tab2
- WHERE tab1.col1 = tab2.col1
- UNION ALL
- SELECT tab1.col1, NULL
- FROM tab1
- WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
- ORDER BY col1
-
- 4.24) Comment puis-je lancer des requêtes utilisant plusieurs bases de
- données ?
-
- Il n'existe pas de moyens de lancer des requêtes sur une autre base
- que la courante. Comme PostgreSQL charge des catalogues systèmes
- spécifiques à la base de données, sa réaction aux requêtes inter-base
- de données est incertaine.
-
- contrib/dblink permet les requêtes entre bases de données en utilisant
- des fonctions. Bien sûr un client peut réaliser des connexions
- simultanées à plusieurs bases de données et joindre les résultats du
- côté client.
-
- 4.25) Comment puis-je renvoyer plusieurs lignes ou colonnes à partir d'une
- fonction?
-
- A partir de la 7.3, vous pouvez facilement renvoyer plusieurs lignes
- ou colonnes à partir d'une fonction,
- http://techdocs.postgresql.org/guides/SetReturningFunctions.
-
- 4.26) Pourquoi ne puis-je pas créer/supprimer des tables temporaires dans
- les fonctions PL/PgSQL de façon stable ?
-
- PL/PgSQL cache le contenu des fonctions et un effet de bord malheureux
- est que si une fonction PL/PgSQL accède à une table temporaire, que
- cette table est ensuite supprimée et recréée, et que la fonction est
- appelée de nouveau, la fonction échouera car le contenu de la fonction
- cachée pointera toujours vers l'ancienne table temporaire. La solution
- revient à utiliser EXECUTE pour l'accès aux tables temporaires avec
- PL/PgSQL. Ceci obligera l'analyse de la requête à chaque fois.
-
- 4.27) Quelles options de cryptage sont disponibles ?
-
- * contrib/pgcrypto contient de nombreuses fonctions de cryptage, à
- utiliser dans des requêtes SQL.
- * Pour crypter une transmission entre le client et le serveur, le
- serveur doit avoir positionné l'option ssl à true dans
- postgresql.conf, et un enregistrement applicable host ou hostssl
- doit exister dans pg_hba.conf, et le sslmode du client ne doit pas
- être désactivée. Notez qu'il est aussi possible d'utiliser un
- transport crypté d'une troisième partie, tel que stunnel ou ssh,
- plutôt que les connexions SSL natives de PostgreSQL.
- * Les mots de passe des utilisateurs sont automatiquement cryptés
- depuis la version 7.3. Pour les versions précédentes, vous devez
- activer l'option PASSWORD_ENCRYPTION dans postgresql.conf.
- * Le serveur peut fonctionner avec un système de fichiers cryptés.
- _________________________________________________________________
-
- Etendre PostgreSQL
-
- 5.1) J'ai écrit une fonction utilisateur. Lorsque je l'exécute avec psql,
- pourquoi cela finit-il avec un dump core ?
-
- Il peut y avoir plusieurs raisons. Essayez tout d'abord votre fonction
- utilisateur dans un programme de test.
-
- 5.2) Comment puis-je ajouter de bons nouveaux types ou fonctions à
- PostgreSQL ?
-
- Envoyez vos extensions à la liste de diffusion pgsql-hackers, elles
- atterriront éventuellement dans le sous-répertoire contrib/.
-
- 5.3) Comment faire pour écrire une fonction C qui renvoie un tuple ?
-
- Dans les versions de PostgreSQL à partir de 7.3, les fonctions qui
- renvoient une table sont totalement supportées en C, PL/PgSQL, et SQL.
- Voir le Guide du Programmeur pour plus d'information. Un exemple de
- fonction renvoyant une table définie en C se trouve à
- contrib/tablefunc.
-
- 5.4) J'ai modifié un fichier source. Pourquoi ma recompilation ne voit-elle
- pas les modifications ?
-
- Les Makefiles n'ont pas les dépendances adéquates pour les fichiers
- d'en-tête. Il vous faut faire make clean puis un autre make. Si vous
- utilisez GCC, vous pouvez utiliser l'option --enable-depend de
- configure pour que le compilateur calcule les dépendances
- automatiquement.
diff --git a/doc/FAQ_german b/doc/FAQ_german
deleted file mode 100644
index 1459e5a08c4..00000000000
--- a/doc/FAQ_german
+++ /dev/null
@@ -1,978 +0,0 @@
-
- Häufig gestellte Fragen (FAQ) zu PostgreSQL
-
- Current maintainer: Bruce Momjian (bruce@momjian.us).
-
- Deutsche Übersetzung von Ian Barwick (barwick@gmail.com).
-
- Letzte Aktualisierung der deutschen Übersetzung: Fr., den 19.10.2007,
- 17:00 MEZ
-
- Die aktuellste Version dieses Dokuments liegt auf der
- PostgreSQL-Website:
- * http://www.postgresql.org/docs/faqs.FAQ.html (engl.)
- * http://www.postgresql.org/docs/faqs.FAQ_german.html (dt.)
-
- Übersetzungen dieses Dokuments in anderen Sprachen sowie plattform-
- spezifische FAQs können unter http://www.postgresql.org/docs/faq/
- eingesehen werden.
- _________________________________________________________________
-
- Allgemeine Fragen
-
- 1.1) Was ist PostgreSQL? Wie wird es ausgesprochen?
- 1.2) Wer kontrolliert PostgreSQL?
- 1.3) Welchem Copyright unterliegt PostgreSQL?
- 1.4) Auf welchen Plattformen läuft PostgreSQL?
- 1.5) Woher bekomme ich PostgreSQL?
- 1.6) Was ist die neueste Version von PostgreSQL?
- 1.7) Wo bekomme ich Support für PostgreSQL?
- 1.8) Wie kann ich einen Fehlerbericht abgeben?
- 1.9) Wie erfahre ich von bekannten Bugs oder fehlenden Features?
- 1.10) Welche Dokumentation ist für PostgreSQL verfügbar?
- 1.11) Wie kann ich SQL lernen?
- 1.12) Wie kann ich im Entwicklerteam mitarbeiten?
- 1.13) Wie läuft PostgreSQL im Vergleich zu anderen Datenbanksystemen?
- 1.14) Kommt PostgreSQL mit den Anpassungen der Sommerzeit in
- verschiedenen Ländern klar?
-
- Fragen zu Benutzerprogrammen
-
- 2.1) Welche Schnittstellen gibt es für PostgreSQL?
- 2.2) Wie kann man PostgreSQL mit einer Website nutzen?
- 2.3) Hat PostgreSQL eine grafische Benutzerschnittstelle?
-
- Administrative Fragen
-
- 3.1) Wie installiere ich PostgreSQL woanders als in /usr/local/pgsql?
- 3.2) Wie regle ich Zugriffe von anderen Rechnern?
- 3.3) Wie kann ich eine bessere Performanz erreichen?
- 3.4) Welche Debugging-Funktionen sind für PostgreSQL verfügbar?
- 3.5) Ich bekomme die Meldung "Sorry, too many clients", wenn ich eine
- Verbindung aufzubauen versuche. Warum?
- 3.6) Wie wird PostgreSQL aktualisiert?
- 3.7) Welche Hardware eignet sich für den Betrieb mit PostgreSQL?
-
- Fragen zum Betrieb
-
- 4.1) Wie wähle ich per SELECT-Anweisung nur die ersten paar Zeilen
- bzw. eine beliebige Zeile in einer Abfrage aus?
- 4.2) Wie finde ich heraus, welche Tabellen, Indexe, Datenbanken oder
- Benutzer in der Datenbank definiert sind? Wie bekomme ich die von psql
- verwendeten Abfragen?
- 4.3) Wie ändere ich den Datentyp einer Spalte?
- 4.4) Was ist die Maximalgröße für eine Zeile, eine Tabelle, eine
- Datenbank?
- 4.5) Wieviel Plattenplatz wird benötigt, um die Daten aus einer
- typischen Textdatei abzuspeichern?
- 4.6) Meine Abfragen sind langsam oder benutzen die Indexe nicht.
- Warum?
- 4.7) Auf welche Weise kann ich sehen, wie der Abfrage-Optimierer meine
- Abfrage auswertet?
- 4.8) Wie verfahre ich bei der Suche mit regulären Ausdrücken und bei
- einer Suche, bei der Groß- und Kleinschreibweisen ignoriert werden?
- Wie verwende ich einen Index bei solchen Suchabfragen?
- 4.9) Wie ermittle ich in einer Abfrage, ob ein Feld NULL ist?
- 4.10) Was ist der Unterschied zwischen den verschiedenen CHAR-Typen?
- 4.11.1) Wie erzeuge ich ein serielles Feld mit automatischer Erhöhung
- des Wertes?
- 4.11.2) Wie bekomme ich den Wert einer SERIAL-Sequenz?
- 4.11.3) Führt currval() zu einer Race-Condition mit anderen Nutzern?
- 4.11.4) Warum werden die Sequenzwerte nach einem Transaktionsabbruch
- nicht zurückgesetzt? Warum gibt es Lücken in der Nummerierung meiner
- Sequenz-/SERIAL-Spalte?
- 4.12) Was ist ein OID? Was ist ein CTID?
- 4.13) Wieso bekomme ich den Fehler: "FATAL: Memory exhausted in
- AllocSetAlloc()"?
- 4.14) Wie kann ich feststellen, welche PostgreSQL-Version bei mir
- läuft?
- 4.15) Wie kann ich eine Spalte erstellen, deren Default-Wert immer die
- aktuelle Uhrzeit enthalten soll?
- 4.16) Wie führe ich eine OUTER JOIN durch?
- 4.17) Wie kann ich Abfragen über mehrere Datenbanken hinweg ausführen?
- 4.18) Wie kann ich mehrere Zeilen bzw. Spalten von einer Funktion
- zurückgeben lassen?
- 4.19) Warum bekomme ich eine Fehlermeldung wie
- "relation with OID ##### does not exist" wenn ich temporäre Tabellen
- in
- PL/PgSQL-Funktionen benutze?
- 4.20) Welche Replikationslösungen gibt es?
- 4.21) Warum werden die Tabellen- und Spaltennamen in meiner Abfrage
- nicht erkannt? Warum werden Großbuchstaben umgewandelt?
- _________________________________________________________________
-
- Allgemeine Fragen
-
- 1.1) Was ist PostgreSQL? Wie wird es ausgesprochen?
-
- Die (englische) Aussprache ist "Post-Gres-Q-L". Im allgemeinen
- Sprachgebrauch hat sich die Kurzform "Postgres" auch durchgesetzt.
- (Für diejenigen, die es interessiert: eine MP3-Datei mit der
- amerikanischen Aussprache befindet sich hier:
- http://www.postgresql.org/files/postgresql.mp3
-
- PostgreSQL ist ein objektrelationales Datenbanksystem, das die Vorzüge
- von kommerziellen Datenbanksystemen mit zukunftsweisenden Innovationen
- kombiniert. PostgreSQL ist freie Software und dessen kompletter
- Quellcode ist öffentlich verfügbar.
-
- Die PostgreSQL-Entwicklung wird von einem Team von meist freiwilligen
- Entwicklern durchgeführt. Dieses Team ist für die Gesamtentwicklung
- von PostgreSQL verantwortlich. Es handelt sich um ein
- Gemeinschaftsprojekt, das nicht von einer bestimmten Firma
- kontrolliert wird. Lesen Sie die Entwickler-FAQ:
- http://www.postgresql.org/docs/faqs.FAQ_DEV.html wenn Sie an einer
- Mitarbeit interessiert sind.
-
- 1.2) Wer kontrolliert PostgreSQL?
-
- Falls Sie nach dem Namen eines etwaigen Inhabers bzw. nach einem
- allmächtigen Zentralkommittee suchen - sparen Sie sich die Mühe, sowas
- existiert gar nicht. Es gibt zwar das "Core Committee" sowie
- Entwickler, die CVS-Schreibberechtigung haben, jedoch haben diese
- Gruppen eher nur eine administrative Rolle. Das Projekt wird durch die
- Community gesteuert, die aus den Entwicklern sowie natürlich auch den
- Nutzern besteht - jeder kann daran teilnehmen. (Lesen Sie die
- Entwickler-FAQ: http://www.postgresql.org/docs/faqs.FAQ_DEV.html wenn
- Sie an der PostgreSQL-Entwicklung teilnehmen möchten).
-
- 1.3) Welchem Copyright unterliegt PostgreSQL?
-
- PostgreSQL wird unter der klassischen BSD-Lizenz herausgegeben. Im
- Grunde genommen erlaubt diese den Nutzern, beliebig mit dem Code
- umzugehen, auch der Weiterverkauf von Binärversionen ohne Quellcode
- ist erlaubt. Die einzige Einschränkung besteht darin, dass PostgreSQL
- auf keinen Fall für etwaige Probleme mit der Software haftet. Außerdem
- muß der Copyright- Text in allen Kopien der Software enthalten sein.
- Dies ist der Originaltext der BSD-Lizenz:
-
- PostgreSQL Data Base Management System
-
- Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
- Portions Copyright (c) 1994-6 Regents of the University of California
-
- Permission to use, copy, modify, and distribute this software and its
- documentation for any purpose, without fee, and without a written
- agreement is hereby granted, provided that the above copyright notice
- and this paragraph and the following two paragraphs appear in all
- copies.
-
- IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
- FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
- INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND
- ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
- PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
- CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
- UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-
- Es gilt die Copyright-Klausel im Original!
-
- 1.4) Auf welchen Plattformen läuft PostgreSQL?
-
- Normalerweise kann PostgreSQL auf jeder modernen UNIX-kompatiblen
- Plattform eingesetzt werden. Diejenigen Plattformen, die bei der
- jeweiligen Versionsfreigabe getestet wurden, sind in den
- Installationsanleitungen aufgelistet.
-
- PostgreSQL läuft auch auf Microsoft NT-basierten Betriebssystemen wie
- Windows 2000 SP4, XP und Server 2003. Ein vorgefertigtes
- Installationspaket kann von http://pgfoundry.org/projects/pginstaller
- heruntergeladen werden. DOS-basierte Windows-Versionen (Win95, Win98,
- WinMe) können PostgreSQL nur mit Hilfe der Cygwin-Umgebung ausführen.
-
- Eine Portierung für Novell Netware 6 gibt es unter
- http://forge.novell.com sowie eine OS/2 (eComStation) version unter
- http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
- SQL&stype=all&sort=type&dir=%2F.
-
- 1.5) Woher bekomme ich PostgreSQL?
-
- Per Web-Browser hier: http://www.postgresql.org/ftp/ und per FTP hier:
- ftp://ftp.postgresql.org/pub/.
-
- 1.6) Was ist die neueste Version von PostgreSQL?
-
- Die neueste Version von PostgreSQL ist 8.2.5.
-
- Die Freigabe einer neuen Hauptversion erfolgt in der Regel jährlich,
- kleinere Korrekturversionen alle paar Monaten.
-
- 1.7) Wo bekomme ich Support für PostgreSQL?
-
- Die PostgreSQL-Community bietet Unterstützung per Mailing-Liste. Die
- Web-Seite http://www.postgresql.org/community/lists/ bietet einen
- Überblick. Die Listen general und bugs bieten einen guten Einstieg.
-
- Eine deutschsprachige Mailing-Liste gibt es hier:
- http://archives.postgresql.org/pgsql-de-allgemein/.
-
- Der wichtigsten IRC-Channel ist #postgresql auf Freenode
- (irc.freenode.net). Unter UNIX/Linux können Sie mit z.B. irc -c
- '#postgresql' "$USER" irc.freenode.net. daran teilnehmen. Auf Freenode
- gibt es einen spanischsprachigen Channel #postgresql-es, einen
- französischen, #postgresqlfr sowie einen brasilianischen,
- #postgresql-br . Es gibt außerdem einen PostgreSQL-Channel bei EFNet.
-
- Eine Liste von Unternehmen, die Support für PostgreSQL auf
- kommerzieller Basis leisten, kann unter
- http://www.postgresql.org/support/professional_support eingesehen
- werden.
-
- 1.8) Wie kann ich einen Fehlerbericht abgeben?
-
- Nutzen Sie das Formular unter
- http://www.postgresql.org/support/submitbug. Schauen Sie aber vorher
- unter ftp://ftp.postgresql.org/pub/ nach, ob es mittlerweile eine
- neuere PostgreSQL-Version gibt, in der der Fehler behoben wurde.
-
- Bugs, die über das Formular bzw. eine der Mailing-Listen
- bekanntgegeben wurden, erhalten typischerweise einer der folgenden
- Reaktionen:
- * es ist kein Bug, der Grund wird benannt
- * es ist ein bereits bekannter Bug, der bereits auf der TODO-Liste
- aufgenommen wurde
- * der Bug wurde in der aktuellen Version behoben
- * der Bug wurde bereits behoben, befindet sich aber noch nicht in
- einer offiziell veröffentlichten Version
- * es wird um eingehendere Informationen gebeten, z.B.:
- + Betriebssystem
- + PostgreSQL-Version
- + reproduzierbarer Fallbeispiel
- + Debugging-Information
- + Debugger-Backtrace-Ausgabe
- * der Bug ist neu. Folgendes könnte passieren:
- + ein Patch wird erstellt und in der nächsten Version
- eingebaut;
- + oder der Bug kann nicht sofort behoben werden und wird auf
- die TODO-Liste gesetzt
-
- 1.9) Wie erfahre ich von bekannten Bugs oder fehlenden Features?
-
- PostgreSQL unterstützt eine erweiterte Teilmenge von SQL:2003. Siehe
- unsere TODO-Liste unter http://www.postgresql.org/docs/faqs.TODO.html
- für eine Auflistung der bekannten Bugs, fehlenden Features und
- zukünftigen Pläne.
-
- Eine Anfrage nach einem neuen Feature führt normalerweise zu einer der
- folgenden Antworten:
- * das Feature ist bereits auf der TODO-Liste
- * das Feature ist nicht wünschenswert, weil:
- + es vorhandene Funktionalität dupliziert, welche bereits dem
- SQL-Standard folgt
- + es würde die Komplexität der Code-Basis erhöhen, ohne
- nennenswerte Vorteile zu bringen
- + es wäre unsicher bzw. unzuverlässig
- * das neue Feature wird der TODO-Liste hinzugefügt
-
- PostgreSQL verwendet kein Bugtracking-System, da es sich als
- effizienter erwiesen hat, E-Mails direkt zu beantworten und die
- TODO-Liste aktuell zu halten. In der Praxis werden Bugs sehr schnell
- beseitigt, und diejenigen Bugs, die Auswirkungen auf eine große Anzahl
- von Nutzern haben, werden meist kurzfristig korrigiert. Der einzige
- Überblick über alle Änderungen, Verbesserungen und Korrekturen in
- einer PostgreSQL-Version befindet sich in den CVS-Log-Meldungen. Auch
- die Release-Notes listen nicht jede Änderung in der Software auf.
-
- 1.10) Welche Dokumentation ist für PostgreSQL verfügbar?
-
- PostgreSQL bietet umfangreiche Dokumentation, darunter ein großes
- Handbuch, man-Pages und einige kleine Testprogramme. Siehe das /doc-
- Verzeichnis. Ausserdem sind alle Handbücher online unter
- http://www.postgresql.org/docs/ verfügbar.
-
- Zwei Bücher zu PostgreSQL sind online verfügbar unter
- http://www.postgresql.org/docs/books/awbook.html und
- http://www.commandprompt.com/ppbook/ .
-
- Eine Liste lieferbarer PostgreSQL-Bücher befindet sich unter
- http://www.postgresql.org/docs/books Diverse technische Artikel
- befinden sich unter http://www.postgresql.org/docs/techdocs .
-
- psql hat einige nützliche \d-Befehle, um Informationen über Typen,
- Operatoren, Funktionen, Aggregate, usw. zu zeigen.
-
- Die PostgreSQL-Website enthält noch mehr Dokumentation.
-
- 1.11) Wie kann ich SQL lernen?
-
- Die oben erwähnten PostgreSQL-spezifische Bücher bieten einen guten
- Einstieg. Viele PostgreSQL-Anwender mögen "The Practical SQL Handbook"
- (Bowman et al., Addison Wesley). Andere dagegen mögen "The Complete
- Reference SQL" (Groff et al., McGraw-Hill).
-
- Es gibt ausserdem einige nützliche Online-Tutorials:
- * http://www.intermedia.net/support/sql/sqltut.shtm
- * http://sqlcourse.com
- * http://www.w3schools.com/sql/default.asp
- * http://mysite.verizon.net/Graeme_Birchall/id1.html
-
- 1.12) Wie kann ich im Entwicklerteam mitarbeiten?
-
- Lesen Sie in der Entwickler-FAQ unter
- http://www.postgresql.org/docs/faqs.FAQ_DEV.html nach.
-
- 1.13) Wie läuft PostgreSQL im Vergleich zu anderen Datenbanksystemen?
-
- Es gibt verschiedene Methoden, Software zu messen: Eigenschaften,
- Performanz, Zuverlässigkeit, Support und Preis.
-
- Eigenschaften
- PostgreSQL besitzt die meisten Eigenschaften - wie
- Transaktionen, Unterabfragen (Subqueries), Trigger, Views,
- referenzielle Integrität bei Fremdschlüsseln und verfeinertes
- Locking - die bei großen kommerziellen DBMS vorhanden sind. Es
- bietet außerdem einige anderen Eigenschaften, die diese nicht
- immer haben, wie benutzerbestimmte Typen, Vererbung, Regeln,
- und die Multi-Versionen-Steuerung zum Verringern
- konkurrierender Locks.
-
- Performanz
- Die Performanz von PostgreSQL ist mit der von kommerziellen und
- anderen Open-Source-Datenbanken vergleichbar. In manchen
- Bereichen ist es schneller, in anderen langsamer. In der Regel
- beträgt der Unterschied +/-10%.
-
- Zuverlässigkeit
- Es ist selbstredend, dass ein DBMS wertlos ist, wenn es nicht
- zuverlässig arbeitet. Daher bemühen wir uns, nur streng
- geprüften und beständigen Code freizugeben, der nur ein Minimum
- an Programmfehlern aufweist. Jede Freigabe hat mindestens einen
- Monat Betatest-Phase hinter sich, und unsere Freigabehistorie
- beweist, dass wir stabile und solide Versionen freigeben, die
- im Produktionsbetrieb genutzt werden können. Wir glauben, dass
- wir im Vergleich mit anderer Datenbanksoftware vorteilhaft
- dastehen.
-
- Support
- Unsere Mailinglisten bieten die Möglichkeit, gemeinsam mit
- einer großen Gruppe von Entwicklern und Benutzern mögliche
- Probleme zu lösen. Wir können nicht immer eine Fehlerbehebung
- garantieren, kommerzielle DBMS tun dies aber auch nicht. Der
- direkte Kontakt zur Entwickler- und Benutzergemeinschaft und
- der Zugriff auf die Handbücher und den Quellcode ermöglicht
- einen im Vergleich zu anderen DBMS höherwertigeren Support. Es
- gibt jedoch auch Anbieter von kommerziellen Support-Leistungen
- (siehe FAQ-Punkt 1.7).
-
- Preis
- PostgreSQL ist frei verfügbar, sowohl für die kommerzielle wie
- auch für die nicht-kommerzielle Nutzung. Sie können den
- PostgreSQL-Code ohne Einschränkungen (außer denjenigen, die in
- der oben angegebene BSD-artigen Lizenz erwähnt werden) in Ihr
- Produkt integrieren.
-
- 1.14) Kommt PostgreSQL mit den Anpassungen der Sommerzeit in verschiedenen
- Ländern klar?
-
- Änderungen bei der US-Sommerzeit sind ab PostgreSQL Version 8.0.4
- berücksichtigt. Änderungen in Canada und Western Australia sind ab
- 8.0.10 bzw. 8.1.6 berücksichtigt. PostgreSQL-Versionen vor 8.0 nutzen
- die Zeitzonendatenbank des Betriebssystems, um die Sommerzeit zu
- berechnen.
-
- Fragen zu Benutzerprogrammen
-
- 2.1) Welche Schnittstellen gibt es für PostgreSQL?
-
- Die PostgreSQL-Installation stellt nur Schnittstellen für C und
- Embedded C bereit. Alle weitere Schnittstellen sind unabhängige
- Projekte, die einzeln heruntergeladen werden werden müssen. Diese
- Trennung ermöglicht individuelle Entwickler-Teams und
- Entwicklungszyklen für die jeweiligen Projekte.
-
- Einige Programmiersprachen wie PHP haben eine PostgreSQL-
- Schnittstelle bereits eingebaut. Schnittstellen für Sprachen wie Perl,
- TCL, Python und viele anderen sind unter http://gborg.postgresql.org
- im Bereich Drivers/Interfaces verfügbar sowie per Internet-Suche.
-
- 2.2) Wie kann man PostgreSQL in einer Website nutzen?
-
- Eine nette Einführung zu datenbank-gestützten Webseiten kann unter
- http://www.webreview.com (engl.) eingesehen werden.
-
- Für die Web-Integration ist PHP eine ausgezeichnete Schnittstelle. PHP
- gibt es bei http://www.php.net
-
- Für komplexere Aufgaben bietet sich die Perl-Schnittstelle mit CGI.pm
- oder mod_perl.
-
- 2.3) Hat PostgreSQL eine grafische Benutzerschnittstelle?
-
- Es gibt eine große Anzahl von GUI-Programmen für PostgreSQL - sowohl
- kommerziell als auch Open-Source. Eine ausführliche Liste befindet
- sich unter http://www.postgresql.org/docs/techdocs.54 .
- _________________________________________________________________
-
- Administrative Fragen
-
- 3.1) Wie installiere ich PostgreSQL woanders als in /usr/local/pgsql?
-
- Bei der Ausführung von configure die Option --prefix mit dem
- Zielverzeichnis angeben.
-
- 3.2) Wie regle ich Zugriffe von anderen Rechnern?
-
- PostgreSQL ist standardmäßig so eingestellt, dass Verbindungen nur vom
- lokalen Rechner über Unix Domain Sockets bzw. TCP/IP möglich sind.
- Verbindungen von anderen Rechnern werden erst dann ermöglicht, wenn
- Sie in der Datei postgresql.conf die Einstellung listen_addresses
- anpassen, in der Datei $PGDATA/pg_hba.conf host-basierte
- Authentifizierung einschalten und den Server neu starten.
-
- 3.3) Wie kann ich eine bessere Performanz erreichen?
-
- Es gibt drei große Bereiche, in denen Performanzverbesserungen erzielt
- werden können:
-
- Abfrageoptimierung
- Die Modifizierung von Abfragen kann eine bessere Performanz
- erzielen:
-
- + Erstellung von Indexen, einschliesslich partieller Indexe
- sowie Expressionsindexe
- + Einsatz von COPY anstelle multipler INSERT-Anweisungen
- + Gruppierung von mehreren Abfragen innerhalb einer
- Transaktion, um Aufwand beim Abschluss von Transaktionen
- einzusparen
- + Einsatz von CLUSTER beim Holen von einer großen Anzahl von
- Datenreihen aus einem Index
- + Einsatz von LIMIT, um eine Untermenge der Abfragen-
- ergebnisse zurückzuliefern
- + Einsatz von vorbereiteten Befehlen (prepared queries)
- + Einsatz von ANALYZE, um die Datenbankstatistik für den
- Abfragenplaner aktuell zu halten
- + Regelmäßiger Einsatz von VACUUM bzw. pg_autovacuum
- + Bei großen Datenveränderungen die Löschung von Indexen
-
- Server-Konfiguration
- Einige Einstellungen in der Datei postgresql.conf wirken auf
- die Performanz aus. Das Handbuch enthält unter
- http://www.postgresql.org/docs/current/static/runtime-config.ht
- ml eine komplette Auflistung. Kommentare zu den jeweiligen
- Einstellungen gibt es unter
- http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_co
- nf_e.html und
- http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.
-
- Hardware-Auswahl
- Die Auswirkung von Hardware auf Performanz wird unter
- http://momjian.us/main/writings/pgsql/hw_performance/index.html
- und http://www.powerpostgresql.com/PerfList/ erläutert.
-
- 3.4) Welche Debugging-Funktionen sind für PostgreSQL verfügbar?
-
- Unter den Optionen für die Server-Konfigurierung gibt es zahlreiche
- log_*-Variablen, die die Ausgabe von Abfrage- und Prozessstatistiken
- ermöglichen. Diese können für Debugging-Zwecke sowie Performanz-Tests
- sehr nützlich sein.
-
- 3.5) Ich bekomme die Meldung "Sorry, too many clients", wenn ich eine
- Verbindung aufzubauen versuche. Warum?
-
- Ihr System hat die maximal zulässige Anzahl von Datenbankverbindungen
- erreicht (Voreinstellung 100). Sie müssen die maximale Anzahl der
- gleichzeitig ausführbaren Backend-Prozesse hochsetzen, indem Sie in
- postgresql.conf den Wert max_connections ändern und den Server
- neustarten.
-
- 3.6) Wie wird PostgreSQL aktualisiert?
-
- Allgemeine Informationen zur Aktualisierung von PostgreSQL gibt es auf
- der Seite http://www.postgresql.org/support/versioning. Detaillierte
- technische Informationen gibt es auf der Seite
- http://www.postgresql.org/docs/current/static/install-upgrading.html
-
- 3.7) Welche Hardware eignet sich für den Betrieb mit PostgreSQL?
-
- PostgreSQL läuft auf fast jeder Hardware-Kombination. Im PC-Bereich
- gibt es allerdings sehr große Abweichungen in der Qualität. Für einen
- Arbeitsplatz- oder Entwicklungsrechner mag dies nicht so bedeutend
- sein, im Server-Betrieb jedoch lohnt sich auf jeden Fall die
- Investition in teurere Bestandteile (Stichwörter ECC-Speicher, SCSI,
- Hauptplatinen und Netzteile von namhaften Herstellern). Nutzen Sie
- unsere Mailing-Listen, um Hardware-Optionen zu diskutieren.
- _________________________________________________________________
-
- Fragen zum Betrieb
-
- 4.1) Wie wähle ich per SELECT-Anweisung nur die ersten paar Zeilen bzw. eine
- beliebige Zeile in einer Abfrage aus?
-
- Wenn Sie bei der Ausführung der Abfrage die Anzahl der anzufordenden
- Reihen bereits kennen, nutzen Sie LIMIT. Wenn die ORDER BY- Anweisung
- mit einem Index verwendet wird, ist es möglich, dass die gesamte
- Abfrage nicht ausgeführt werden muss. Wenn Sie die Anzahl der der
- anzufordenden Reihen nicht kennen, verwenden Sie einen Cursor und
- FETCH.
-
- Um eine beliebige Zeile auszuwählen, nutzen Sie ORDER BY random():
- SELECT spalte
- FROM tabelle
- ORDER BY random()
- LIMIT 1
-
-
- 4.2) Wie finde ich heraus, welche Tabellen, Indexe, Datenbanken oder Benutzer
- in der Datenbank definiert sind? Wie bekomme ich die von psql verwendeten
- Abfragen?
-
- In psql zeigt der Befehl \dt eine Liste der Datenbanktabellen. Weitere
- psql-Befehle lassen sich mit \? anzeigen. Sie können sich die Datei
- pgsql/src/bin/psql/describe.c mit dem Quellcode für psql ansehen. Sie
- enthält die SQL-Abfragen, die die Backslash-Kommandos (\) ausführen.
- Sie können psql auch mit der -E Option starten. Danach gibt psql die
- Abfragen aus, die es bei der Ausführung der Befehle benutzt. Außerdem
- biete PostgreSQL ein SQL-kompatibles INFORMATION SCHEMA, das
- Metainformation über die Datenbank zur Verfügung stellt.
-
- Mit psql -l können Sie alle Datenbanken anzeigen lassen.
-
- Die Datei pgsql/src/tutorial/syscat.source enthält außerdem viele
- SELECT- Abfragen, mit deren Hilfe man Information über die
- Systemtabellen erhalten kann.
-
- 4.3) Wie ändere ich den Datentyp einer Spalte?
-
- Ab Version 8.0 kann der Datentyp einer Spalte mit ALTER TABLE ALTER
- COLUMN TYPE geändert werden, sofern der neue Datentyp die Werte des
- alten Datentype aufnehmen kann.
-
- Bei früheren Versionen gehen Sie wie folgt vor:
- BEGIN;
- ALTER TABLE tabelle ADD COLUMN neue_spalte neuer_datentyp;
- UPDATE tabelle SET neue_spalte = CAST(alte_spalte AS neuer_datentyp);
- ALTER TABLE tabelle DROP COLUMN alte_spalte;
- COMMIT;
-
-
- Um den Speicherplatz freizugeben, der von der gelöschten Spalte
- verwendet wurde, führen Sie VACUUM FULL aus.
-
- 4.4) Was ist die Maximalgröße für eine Zeile, eine Tabelle, eine Datenbank?
-
- Es bestehen folgende Obergrenzen:
- Maximale Größe eine Datenbank? unbeschränkt (es existieren
- Datenbanken mit 32 TB)
- Maximale Größe einer Tabelle? 32 TB
- Maximale Größe einer Zeile? 400 GB
- Maximale Größe einer Spalte? 1 GB
- Maximale Anzahl von Zeilen in einer Tabelle?
- unbeschränkt
- Maximale Anzahl von Spalten in einer Tabelle?
- 250-1600 je nach Spaltentyp
- Maximale Anzahl von Indexen für eine Tabelle?
- unbeschränkt
-
- Selbstverständlich sind dies theoretische Werte, die oft durch die
- verfügbaren Platten- und Speicherressourcen beschränkt werden. Extreme
- Größen können zu Leistungseinbußen führen.
-
- Die maximale Tabellengröße von 32 TB benötigt keine
- Large-File-Unterstützung im Betriebssystem. Große Tabellen werden in
- Dateien mit einer Größe von je 1 GB aufgeteilt, wodurch etwaige
- dateisystem-bedingte Beschränkungen nicht relevant sind.
-
- Die maximale Tabellengröße und die maximale Anzahl von Spalten können
- vervierfacht werden, indem man die Default-Blockgröße auf 32 KB
- heraufsetzt. Die Tabellengröße kann auch durch Tabellenpartitionierung
- vergrößert werden.
-
- Eine Einschränkung ist, dass Indexe nur auf Spalten erstellt werden
- können, die bis etwa 2.000 Zeichen groß sind. Um auf größere Spalten
- eine UNIQUE-Constraint setzen zu können, nutzen Sie einen funktionalen
- Index mit dem MD5-Hash-Wert der Spalte. Um innerhalb einer großen, mit
- Text belegten Spalte suchen zu können, verwenden Sie einen
- Volltext-Index.
-
- 4.5) Wieviel Plattenplatz wird benötigt, um die Daten aus einer typischen
- Textdatei abzuspeichern?
-
- Eine PostgreSQL-Datenbank kann beim Abspeichern einer einfachen
- Textdatei bis zu fünfmal mehr Platz gegenüber der eigentlichen Größe
- der Datei beanspruchen.
-
- Betrachten wir eine Datei mit 100.000 Zeilen mit einem Integer und
- einer Textbeschreibung pro Zeile. Gehen wir davon aus, dass die
- durchschnittliche Länge der Textbeschreibung 20 Byte beträgt. Die
- einfache Datei würde 2,8 MB groß sein. Die Größe der
- PostgreSQL-Datenbankdatei, die diese Daten enthält, liegt ungefähr bei
- 5,2 MB:
- 24 Bytes: jeder Zeilenkopf (ungefähr)
- +24 Bytes: ein Integer-Feld und ein Textfeld
- + 4 Bytes: Zeiger auf der Datenseite auf den Tupel
- -----------------------------------------------
- 52 Bytes pro Zeile
-
- Die Größe einer Datenseite in PostgreSQL beträgt 8192 Bytes (8 KB),
- also:
- 8192 Bytes pro Seite
- --------------------- = 146 Zeilen pro Seite (abgerundet)
- 52 Bytes pro Zeile
-
- 100.000 Datenzeilen
- ------------------------ = 685 Datenbankseiten (aufgerundet)
- 158 Zeilen pro Seite
-
- 633 Datenbankseiten * 8192 Bytes pro Seite = 5,185,536 bytes (5,2 MB)
-
- Indexe beanspruchen nicht so viel Platz. Da sie jedoch die Daten
- beinhalten, die sie indizieren, können auch sie sehr groß werden.
-
- NULL-Werte werden als Bitmaps gespeichert, wodurch sie sehr wenig
- Platz in Anspruch nehmen.
-
- 4.6) Meine Abfragen sind langsam oder benutzen die Indexe nicht. Warum?
-
- Indexe werden nicht automatisch bei jeder Abfrage verwendet. Indexe
- werden nur dann verwendet, wenn die abzufragende Tabelle eine
- bestimmte Größe übersteigt, und die Abfrage nur eine kleine
- Prozentzahl der Tabellenzeilen abfragt. Der Grund hierfür ist der,
- dass die durch einen Index verursachten Festplattenzugriffe manchmal
- länger dauern würden als ein einfaches Auslesen aller Tabellenzeilen
- (sequentieller Scan).
-
- Um festzustellen, ob ein Index verwendet werden soll, braucht
- PostgreSQL Statistiken über die Tabelle. Diese Statistiken werden
- durch die Anweisungen VACUUM ANALYZE bzw. ANALYZE berechnet. Anhand
- der Statistiken kennt der Abfragenoptimierer die Anzahl der
- Tabellenzeilen und kann besser entscheiden, ob Indexe verwendet werden
- sollen. Statistiken sind auch bei der Ermittlung der optimalen
- JOIN-Reihenfolgen und -Methoden wertvoll. Daher sollten diese
- regelmässig durchgeführt werden, da sich der Inhalt einer Tabelle ja
- auch verändert.
-
- Indexe werden normalerweise nicht in ORDER BY-Abfrage oder in JOINs
- verwendet. Ein sequentieller Scan mit anschließendem explizitem
- Sortiervorgang ist normalerweise schneller als ein Index-Scan einer
- großen Tabelle. Jedoch wird bei einer Abfrage, in der LIMIT zusammen
- mit ORDER BY verwendet wird, oftmals ein Index verwendet, da nur ein
- kleiner Abschnitt der Tabelle zurückgeliefert wird.
-
- Sollte es danach aussehen, also ob der Optimierer irrtümlich einen
- sequentiellen Scan ausführt, führen Sie SET enable_seqscan TO 'off'
- aus und prüfen Sie, ob die Indexabfrage dadurch scheller geworden ist.
-
- Bei der Nutzung von Wildcard-Operatoren wie LIKE oder ~, können Indexe
- nur unter bestimmten Umständen verwendet werden:
- * Das Suchmuster muss sich an Anfang des Strings befinden, d.h.:
- + LIKE-Suchmuster dürfen nicht mit % anfangen;
- + ~ (reguläre Ausdrücke) müssen mit ^ anfangen.
- * Das Suchmuster darf nicht mit einer Zeichenklasse (z.B. [a-e])
- beginnen.
- * Suchmuster, die Gross- und Kleinschreibung nicht berücksichtigen
- (z.B. ILIKE bzw. ~*), verwenden keine Indexe. Stattdessen können
- funktionale Indexe verwendet werden, die im Punkt 4.8 beschrieben
- werden.
- * Die Standard-Locale "C" muss während der Datenbank-Initialisierung
- mit initdb verwendet worden sein, da andere locales den
- nächstgrößten Wert nicht ermitteln können. Es ist allerdings
- möglich, einen besonderen text_pattern_ops-Index für solche Fälle
- zu erstellen.
-
- In Versionen vor 8.0 werden Indexe oft nicht benutzt, wenn die
- jeweiligen Datentypen nicht genau übereinstimmen. Dies gilt besonders
- für Indexe auf Spalten mit den Datentypen INT2, INT8 und NUMERIC
-
- 4.7) Auf welche Weise kann ich sehen, wie der Abfrage-Optimierer meine
- Abfrage auswertet?
-
- Vgl. die EXPLAIN Man-Page.
-
- 4.8) Wie verfahre ich bei der Suche mit regulären Ausdrücken und bei einer
- Suche, bei der Groß- und Kleinschreibweisen ignoriert werden? Wie verwende
- ich einen Index bei solchen Suchabfragen?
-
- Der Operator ~ wendet einen regulären Ausdruck an und ~* wendet ihn
- an, ohne die Groß- und Kleinschreibung zu beachten. Ebenso beachtet
- LIKE die Groß- und Kleinschreibung, und ILIKE nicht.
-
- Gleichheitsvergleiche, die Groß- und Kleinschreibung ignorieren,
- werden in der Regel so ausgedruckt:
- SELECT *
- FROM tabelle
- WHERE LOWER(spalte) = 'abc'
-
- Hier wird kein normaler Index benutzt. Legt man hingegen einen
- funktionalen Index an, so wird er auf jeden Fall verwendet:
- CREATE INDEX tabelle_index ON tabelle (LOWER(spalte))
-
- Falls der obige Index als einen UNIQUE-Index angelegt wird, können
- keine Werte in die Spalte eingefügt werden, die sich nur durch ihre
- Groß- und Kleinschreibung unterscheiden. Um Fehler zu vermeiden muß
- ein CHECK-Constraint oder ein Trigger eingesetzt werden.
-
- 4.9) Wie ermittle ich in einer Abfrage, ob ein Feld NULL ist? Kann nach der
- NULL-Belegung sortiert werden?
-
- Testen Sie die Spalte mit IS NULL bzw. IS NOT NULL.
- SELECT *
- FROM tabelle
- WHERE spalte IS NULL
-
- Um die Spalte danach zu sortieren, ob sie mit NULL belegt ist oder
- nicht, verwenden Sie die Bedingungen IS NULL bzw. IS NOT NULL in der
- ORDER BY-Klausel. Da Bedingungen, die wahr sind, höher als das
- Gegenteil sortiert werden, bewirkt die folgende Abfrage, dass die
- NULL-Spalten zuerst gelistet werden:
- SELECT *
- FROM tabelle
- ORDER BY (spalte IS NOT NULL)
-
- 4.10) Was ist der Unterschied zwischen den verschiedenen CHAR-Typen?
-
-Typ interner Name Bemerkungen
--------------------------------------------------
-VARCHAR(n) varchar die Größe legt die Maximallänge fest; kein
- Auffüllen mit Leerzeichen
-CHAR(n) bpchar mit Leerzeichen gefüllt bis zur angegebenen Länge
-TEXT text keine obere Schranke für die Länge
-BYTEA bytea Bytearray mit variabler Länge (auch für
- '\0'-Bytes geeignet)
-"char" char 1 Zeichen
-
- Der interne Name kommt vor allem in den Systemkatalogen und in manchen
- Fehlermeldungen vor.
-
- Die ersten vier Typen sind "varlena"-Typen (d.h. die ersten vier Bytes
- geben die Länge an, gefolgt von den Daten). Daher ist der tatsächlich
- belegte Platz immer etwas mehr als die deklarierte Feldgröße.
- Allerdings wird unter Umständen auf diese Datentypen Datenkompression
- durch das TOAST- Verfahren angewendet, womit der tatsächlich belegte
- Platz auch geringer als erwartet ausfallen kann.
-
- Für die Speicherung von Zeichenketten variabler Länge empfiehlt sich
- VARCHAR(n). Die maximale Länge eines VARCHAR(n)-Felds wird bei der
- Tabellendefinition festgelegt. TEXT setzt keine Längengrenze,
- allerdings gibt es eine systembedingte Obergrenze von 1 GB.
-
- CHAR(n) ist geeignet für die Speicherung von Zeichenketten, die alle
- die gleiche Länge haben. Bitte beachten Sie, dass CHAR(n) automatisch
- Zeichenketten bis zur definierten Feldlänge mit Leerzeichen ausfüllt,
- während bei VARCHAR(n) nur die tatsächlich eingegebene Zeichenkette
- gespeichert wird.
-
- BYTEA ist für binäre Daten, besonders für Werte, die NULL-Bytes haben.
-
- Alle der hier erwähnten Typen weisen ähnliche Performanzeigenschaften
- auf.
-
- 4.11.1) Wie erzeuge ich ein serielles Feld mit automatischer Erhöhung des
- Wert?
-
- PostgreSQL bietet einen SERIAL-Datentyp. Dieser erzeugt automatisch
- eine Sequenz auf die angegebene Spalte. Zum Beispiel:
- CREATE TABLE person (
- id SERIAL,
- name TEXT
- )
-
- wird automatisch in:
- CREATE SEQUENCE person_id_seq;
- CREATE TABLE person (
- id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
- name TEXT
- );
-
- umgewandelt.
-
- Die create_sequence Man-Page liefert weitere Informationen über
- Sequenzen.
-
- 4.11.2) Wie bekomme ich den Wert einer SERIAL-Sequenz?
-
- Eine Möglichkeit wäre, mit der nextval()-Funktion den nächsten
- SERIAL-Wert von dem Sequenzobjekt vor der Auszuführung einer
- INSERT-Anweisung anzufordern und ihn dann explizit in die
- INSERT-Anweisung einzubinden. Anhand der Beispieltabelle in 4.11.1
- könnte dieser Vorgang in einer Pseudosprache so aussehen:
- new_id = output of execute("SELECT nextval('person_id_seq')");
- execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
-
- Danach stünde der neue Wert in der Variablen new_id für die Verwendung
- in weiteren Abfragen zur Verfügung, zum Beispiel als Fremdschlüssel
- zur Tabelle 'person'). Bitte beachten Sie, dass der Name des
- automatisch erstellten SEQUENCE-Objektes folgenden Name hat:
- «table»_«serialcolumn»_seq wobei 'table' und 'serialcolumn' die Namen
- der jeweils betreffenden Tabelle / Spalte darstellen.
-
- Als weitere Möglichkeit können Sie nach einer INSERT-Anweisung den
- automatisch eingefügten SERIAL-Wert mit der currval()-Funktion
- zurückgeben lassen:
- execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
- new_id = output of execute("SELECT currval('person_id_seq')");
-
- 4.11.3) Führt currval() zu einer Race-Condition mit anderen Nutzern?
-
- Nein. currval() liefert einen Wert zurück, der von Ihrer
- Datenbank-Session bestimmt wird, und der anderen Sessionen nicht zur
- Verfügung steht.
-
- 4.11.4) Warum werden die Sequenzwerte nach einem Transaktionsabbruch nicht
- zurückgesetzt? Warum gibt es Lücken in der Nummerierung meiner
- Sequenz-/SERIAL-Spalte?
-
- Um die gleichzeitige Abarbeitung von Transaktionen zu verbessern,
- werden Sequenzen gerade nicht für andere Transaktionen gesperrt,
- sondern die Sequenznummern werden den laufenden Transaktionen sofort
- zugeteilt. Lücken in der Sequenznummerierung werden durch abgebrochene
- Transaktionen verursacht.
-
- 4.12) Was ist ein OID? Was ist ein CTID?
-
- Jede Zeile, die in PostgreSQL erzeugt wird, bekommt eine eindeutige
- OID, sofern die Tabelle nicht mit der Option WITHOUT OIDS angelegt
- wurde. OIDs sind automatisch zugewiesene 4-Byte-Integer, die innerhalb
- der gesamten Datenbank einmalig sind. Allerdings laufen sie bei einem
- Wert von ungefähr 4 Milliarden über. PostgreSQL verwendet OIDs, um
- seine interne Systemtabellen zu verbinden.
-
- Um einmalige Idenfikatoren in Datentabellen zu erstellen, wird
- allerdings empfohlen, statt OIDs Werte zu verwenden, die vonSERIAL-
- Sequenzen erzeugt werden. SERIAL-Sequenzen sind innerhalb einer
- Tabelle einmalig und daher weniger anfällig für Überläufe. Außerdem
- können 8-Byte-Sequenzwerte mit SERIAL8 erzeugt werden.
-
- CTIDs werden benutzt, um bestimmte physikalische Zeilen durch Block
- und Offset Werte zu identifizieren. CTIDs verändern sich, sobald
- Zeilen verändert oder zurückgeladen werden. Sie werden in
- Indexeinträgen benutzt um auf die physikalischen Zeilen zu zeigen.
-
- 4.13) Wieso bekomme ich einen Fehler: "ERROR: Memory exhausted in
- AllocSetAlloc()"?
-
- Wahrscheinlich gibt es keinen virtuellen Speicher mehr in Ihrem System
- oder Ihr Kernel hat niedrige Höchstgrenzen für bestimmte Ressourcen.
- Probieren Sie vor dem Start von postmaster folgendes:
- ulimit -d 262144
- limit datasize 256m
-
- Je nach benutzter Shell wird nur einer dieser Befehle erfolgreich
- ausgeführt werden. Auf jedem Fall wird die Grenze des Datensegments
- für Prozesse erhöht werden und eventuell die erfolgreiche Ausführung
- der Abfrage ermöglichen. Falls Sie ein Problem mit dem SQL-CLient
- haben, weil das Backend zu viele Daten zurückliefert, versuchen Sie
- dies vor dem Start des SQL-Clients.
-
- 4.14) Wie kann ich feststellen, welche PostgreSQL-Version bei mir läuft?
-
- Geben Sie in psql SELECT VERSION(); ein.
-
- 4.15) Wie kann ich eine Spalte erstellen, deren Default-Wert immer die
- aktuelle Uhrzeit enthalten soll?
-
- Dazu verwenden Sie CURRENT_TIMESTAMP:
- CREATE TABLE test (x INT, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
-
- 4.16) Wie führe ich eine OUTER JOIN durch?
-
- PostgreSQL unterstützt OUTER JOINs nach dem SQL- Standardsyntax. Hier
- zwei Beispiele:
- SELECT *
- FROM tabelle_1 t1
- LEFT OUTER JOIN tabelle_2 t2 ON (t1.spalte = t2.spalte)
-
- bzw.:
- SELECT *
- FROM tabelle_1 t1
- LEFT OUTER JOIN tabelle_2 t2 USING (spalte)
-
- Diese identischen Abfragen verknüpfen tabelle_1 mit tabelle_2 über die
- Spalte 'spalte' und geben außerdem alle unverknüpften Zeilen in
- tabelle_1 (diejenigen, die keine Entsprechung in tabelle_2 haben)
- zurück. Ein RIGHT JOIN würde hingegen alle unverknüpften Zeilen in
- tabelle_2 hinzufügen und ein FULL JOIN würde alle verknüpften Zeilen
- sowie jeweils alle unverknüpften Zeilen aus den beiden Tabellen
- zurückliefern. Die Angabe von OUTER ist nicht zwingend und kann in
- LEFT, RIGHT und FULL-Verknüpfungen weggelassen werden. Normale
- Verknüpfungen sind INNER JOINs.
-
- 4.17) Wie kann ich Abfragen über mehrere Datenbanken hinweg ausführen?
-
- Es gibt keinen Weg, innerhalb einer Abfrage auf mehr als eine
- Datenbank zuzugreifen. Da PostgreSQL datenbank-spezifische
- Systemkataloge lädt, ist eine datenbankübergreifende Abfrage nicht
- möglich.
-
- contrib/dblink ist eine Erweiterung, die datenbankübergreifende
- Abfragen über Funktionsaufrufe ermöglicht.
-
- 4.18) Wie kann ich mehrere Zeilen bzw. Spalten von einer Funktion zurückgeben
- lassen?
-
- Funktionen können mehrere Zeilen und Spalten zurückgeben, vgl.:
- http://www.postgresql.org/docs/techdocs.17.
-
- 4.19) Warum bekomme ich eine Fehlermeldung wie "relation with OID ##### does
- not exist" wenn ich temporäre Tabellen in PL/PgSQL-Funktionen benutze?
-
- In PostgreSQL-Versionen vor 8.3 verarbeitet PL/PgSQL Funktionen in
- einer Cache. Dies hat eine unangenehme Nebenwirkung, nämlich dass wenn
- eine PL/PgSQL-Funktion auf eine temporäre Tabelle zugreift, und diese
- Tabelle anschließend gelöscht bzw. neu erstellt wird, die Funktion
- fehlschlagen wird, da die gecachten Funktionsinhalte noch auf die alte
- temporäre Tabelle zeigen. Die Lösung für diese Probleme besteht darin,
- in der PL/PgSQL- Funktion mittels EXECUTE auf temporäre Tabellen
- zuzugreifen. Dies bewirkt, dass bei jedem Funktionsruf die betreffende
- Abfrage neu geparst wird.
-
- Dieses Problem taucht in PostgreSQL 8.3 und späteren Versionen nicht
- mehr auf.
-
- 4.20) Welche Replikationslösungen gibt es?
-
- Der Begriff "replikation" umfasst mehrere verschiedene Technologien,
- jede mit eigenen Vor- und Nachteilen.
-
- Mit "Master/slave"-Replikation werden Änderungen in einer
- Hauptdatenbank durchgeführt und an "Sklaven" verteilt, die im
- Nur-Lese-Modus arbeiten. Die populärste Lösung für PostgreSQL ist
- Slony-I.
-
- "Multi-master replication" ermöglicht sowohl lesende als auch
- schreibende Zugriffe über mehrere Datenbank-Server hinweg. Allerdings
- hat diese Art von Replikation eine negative Auswirkung auf die
- Performanz durch die Notwendigkeit, Änderungen zwischen Servern zu
- synchronisieren. Pgcluster ist die populärste freie Lösung für
- PostgreSQL.
-
- Es gibt auch einige kommerzielle und hardware-basierte
- Replikationslösungen für verschiedene Arten der Replikation.
-
- 4.21) Warum werden die Tabellen- und Spaltennamen in meiner Abfrage nicht
- erkannt? Warum werden Großbuchstaben umgewandelt?
-
- Die häufigste Ursache ist die Verwendung von Gänsefüßchen bei der
- Anlegung von Tabellen, z.B.:
- CREATE TABLE "Tabelle"
- ("SPALTE1" INT)
-
- Dadurch werden Tabellen- und Spaltennamen (sog. Identifikatoren) in
- genau der Schreibweise gespeichert (vgl. Dokumentation), was dazu
- führt, dass man sie danach immer in Gänsefüßchen angeben muss. Im
- obigen Beispiel muss man also immer etwa SELECT * FROM "Tabelle"
- verwenden. Um dieses Problem zu vermeiden, müssen Sie immer eines der
- folgenden Punkte beachten:
- * bei der Tabellenanlegung keine Gänsefüßchen verwenden;
- * in Identifikatoren nur Kleinschreibung verwenden;
- * immer Identifikatoren mit Gänsefüßchen versehen
- _________________________________________________________________
-
- Anmerkungen des Übersetzers
-
- Die englische Vorlage dieser FAQ wird ständig überarbeitet. Daher
- liegt die Übersetzung nicht immer auf dem aktuellsten Stand.
-
- Die aktuellste Version der deutschen Übersetzung befindet sich immer
- unter http://sql-info.de/de/postgresql/FAQ_german.html. Diese
- "Arbeitsversion" enthält eventuell Änderungen, die noch nicht auf der
- PostgreSQL-Website eingebunden worden sind.
-
- Über Verbesserungshinweise und Korrekturvorschläge sowie
- Verständnisfragen zum Inhalt der FAQ freue ich mich. Ich nehme auch
- allgemeine Fragen zu PostgreSQL gerne entgegen, verweise jedoch auf
- die Mailing-Listen als schnelle und zuverlässige Anlaufstellen.
diff --git a/doc/FAQ_hungarian b/doc/FAQ_hungarian
deleted file mode 100644
index 99f5ba4c630..00000000000
--- a/doc/FAQ_hungarian
+++ /dev/null
@@ -1,1234 +0,0 @@
- PostgreSQL GyIK
-
- Utolso modosítás dátuma: 2005 május 9.
-
- Fordítás aktualizálása: 2005 június
-
- A GyIK karbantartoja: Bruce Momjian (pgman@candle.pha.pa.us)
-
- Fordíto: Hornyák Lászlo
- (laszlo.hornyak.nospam@gmail.com)
-
- A legfrissebb verzio itt érhetõ el (angol):
-
- http://www.PostgreSQL.org/docs/faq-english.html.
-
- Legfrissebb magyar nyelvû verzio:
-
- http://hackers.forgeahead.hu/space/PostgreSQL/GYIK
-
- Platform specifikus kérdések:
-
- http://www.PostgreSQL.org/users-lounge/docs/faq.html.
-
- ----------------------------------------------------------------------
-
-Általános kérdések
-
- 1.1 Mi a PostgreSQL? Hogy kell kimondani?
- 1.2 Mik a PostgreSQL felhasználási feltételei?
- 1.3 Milyen UNIX operácios rendszereken fut PostgreSQL?
- 1.4 Milyen nem UNIX operácios rendszerek elérhetõek?
- 1.5 Hogyan tudok PostgreSQL-t szerezni?
- 1.6 Hogyan kapok terméktámogatást?
- 1.7 Melyik a legfrissebb kiadás?
- 1.8 Milyen dokumentácio áll rendelkezésre?
- 1.9 Hogyan találok informáciot hibákrol vagy hiányzo funkcionalításrol?
- 1.10 Hogy tanuljam meg az SQL nyelvet?
- 1.11 A PostgreSQL 2000. év kompatibilis?
- 1.12 Hogyan lehet csatlakozni a fejlesztõ csapathoz?
- 1.13 Hogyan küldjek hibajelentést?
- 1.14 Milyen a PostgreSQL más DBMS-ekkel összehasonlítva?
- 1.15 Hogyan tudom üzletileg segiteni a PostgreSQL-t?
- 1.16 Ki irányítja a PostgreSQL-t?
-
-Felhasználoi kliens kérdések
-
- 2.1 Van ODBC meghajto PostgreSQL-hez?
- 2.2 Milyen eszközök állnak rendelkezésre PostgreSQL Web fejlesztésekhez?
- 2.3 Van a PostgreSQL-hez grafikus felhasználoi felület ? Riport generátor?
- Beágyazott lekérdezõ nyelv felület?
- 2.4 Milyen programozási nyelvekkel lehet elérni a PostgreSQL szervert?
-
-Adminisztrácios kérdések
-
- 3.1 Hogyan tudom a PostgreSQL-t /usr/local/pgsql -tõl eltérõ helyre
- installálni?
- 3.2 AMikor elindítom a postmaster-t, egy "Bad System Call"-t vagy core
- dump-ot kapok. Miért?
- 3.3 Amikor megprobálom inditani a postmaster-t, "IpcMemoryCreate" hibákat
- kapok. Miért?
- 3.4 Amikor megprobálom inditani a postmaster-t, "IpcSemaphoreCreate"
- hibákat kapok. Miért?
- 3.5 Hogyan tudom kontrollálni a más gépekrõl érkezõ kapcsolat kéréseket?
- 3.6 Hogyan tudom nagyobb teljesítményre hangolni az adatbázisomat?
- 3.7 Milyen hibakeresõ lehetõségek érhetõek el?
- 3.8 Miért kapok "Sorry, too many clients" hibát csatlakozásnál?
- 3.9 Mi van pgsql_tmp könyvtárban?
- 3.10 Miért kell dumpolni és újratölteni PostgreSQL kiadás váltásánál?
-
-Mûködtetési kérdések
-
- 4.1 Mi a különbség a bináris és a normál kurzorok között?
- 4.2 Hogyan tudom select-elni a lekérdezés elsõ pár sorát?
- 4.3 Hogy tudom kilistázni a táblákat vagy más dolgokat a PostgreSQL-ben?
- 4.4 Hogyan tudok eltávolítani egy oszlopot egy táblábol?
- 4.5 Mi a maximális mérete egy sornak, egy táblának vagy egy adatbázisnak?
- 4.6 Mekkora adatbázis lemez terület szükséges egy tipikus szöveg állomány
- tárolásához?
- 4.7 Hogy tudhatom meg milyen táblák, indexek, adatbázisok vagy
- felhasználok vannak definiálva?
- 4.8 A lekérdezéseim lassúak, vagy nem használják az indexeket. Miért?
- 4.9 Hogy tudom ellenõrizni, hogy optimalizálta a lekérdezés optimalizálo a
- lekérdezésem?
- 4.10 Mi az R-tree index?
- 4.11 Mi a Genetic Query Optimizer?
- 4.12 Hogyan tudok regexp keresést és case-insensitive regexp keresést
- használni? Hogyan tudok indexet használni case-insensitive kereséshez?
- 4.13 Hogyan tudom észlelni egy lekérdezésban, ha egy mezõ NULL?
- 4.14 Mi a különbség a különbözõ karaktertípusok között?
- 4.15.1 Hogyan tudok létrehozni automatikusan növekvõ értékû mezõt?
- 4.15.2 Hogyan kaphatom meg egy SERIAL beszúrás értékét?
- 4.15.3 A currval() és a nextval() nem teremt holtpont veszélyes helyzetet
- a felhasználok között?
- 4.15.4 Miért nem használodnak fel újra a sequence számok tranzakcio abort
- esetén? Miért vannak problémák a serial oszlopok számozásával?
- 4.16 Mi a OID? Mi a TID?
- 4.17 Mi a PostgreSQL-ben használt kifejezések jelentése?
- 4.18 Miért kapom ezt a hibát: "ERROR: Memory exhausted in
- AllocSetAlloc()"?
- 4.19 Hogyan tudhatom meg PostgreSQL, milyen verziot futtatok?
- 4.20 Miért kapok "invalid large obj descriptor" hibát nagy objektumok
- kezelésénél?
- 4.21 Hogy hozhatok létre olyan oszlopot, aminek alapértelmezett érétke a
- jelenlegi idõ?
- 4.22 Miért olyan lassúak az al-lekérdezéseim IN-nel?
- 4.23 Hogyan tudok outer join-t végrehajtani?
- 4.24 Hogyan tudok több adatbázison végrehajtani lekérdezést?
- 4.25 Hogy tudok több soros vagy oszlopos eredményt visszaadni egy
- funkciobol?
- 4.26 Miért nem tudom megbizhatoan létrehozni és törölni az átmeneti
- táblákat a PL/pgSQL funkciokban?
- 4.27 Milyen replikácios lehetõségek vannak?
- 4.28 Milyen kodolási lehetõségek vannak?
-
-A PostgreSQL kiterjesztése
-
- 5.1) Írtam egy felhasználoi funkciot. Miért core dumpol az adatbázis
- amikor használom?
- 5.2) Hogyan lehet új adattípusokat és funkciokat hozzáadni a PostgreSQL
- disztribúciohoz?
- 5.3) Hogyan lehet olyan C funkciot írni, ami Tuple-t ad vissza? (több
- soros több oszlopos eredmények)
- 5.4) Megváltoztattam egy forrás állományt. Miért nem változik a bináris
- újrafordítás után?
-
- ----------------------------------------------------------------------
-
-Általános kérdések
-
- 1.1 Mi a PostgreSQL? Hogy kell kimondani?
-
- Így ejstd ki: Post-Gres-Q-L.
-
- (Vagy talán inkább töltsd le a kis mp3-at a PostgreSQL homepage-rõl)
-
- A PostgreSQL a POSTGRES adatbázis management rendszer egy kiegészítése,
- ami egy következõ generácios DBMS kutatási prototípus. Megtartja a
- POSTGRES adatmodellét és gazdag adattípus választékát, de a PostQuel
- lekérdezõ nyelvet az SQL egy kiterjesztett verziojával helyettesíti. A
- PostgreSQL szabad és a teljes forráskod hozzáférhetõ.
-
- A PostgreSQL fejlesztését egy csapat végzi, amelynek minden tagja
- megtalálhato a PostgreSQL fejlesztõi levelezési listán. A jelenlegi
- koordinátor Marc G. Fournier (scrappyp@PostgreSQL.org). Ez a csapat
- felelõs minden fejlesztésért. <>A PostgreSQL 1.01 alkotoi Andrew Yu és
- Jolly Chen voltak. Sokan járultak hozzá portolással, teszteléssel,
- hibakereséssel és fejlesztéssel. Az eredeti Postgres kod, amibõl a
- PostgreSQL származik Michael Stonebraker professzor irányítása alatt
- fejlesztettek az egyetem programozoi, tanuloi és végzett tanuloi. <>
-
- A szoftver eredeti neve Postgres volt. Amikor SQL funkcionalítással
- egészítették ki 1995-ben, a nevét Postgres95-re változtatták. 1996 végén
- kapta mai nevét.
-
- 1.2 Mik a PostgreSQL felhasználási feltételei?
-
- Az eredeti angol copyright szöveg:
-
- --------------------
-
- PostgreSQL is subject to the following COPYRIGHT:
-
- PostgreSQL Data Base Management System
-
- Portions copyright (c) 1996-2002, PostgreSQL Global Development Group
-
- Portions Copyright (c) 1994-6 Regents of the University of California
-
- Permission to use, copy, modify, and distribute this software and its
-
- documentation for any purpose, without fee, and without a written
-
- agreement is hereby granted, provided that the above copyright notice
-
- and this paragraph and the following two paragraphs appear in all
-
- copies.
-
- IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
-
- FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
-
- INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND
-
- ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN
-
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
-
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
-
- PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
-
- CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
-
- UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-
- --------------------
-
- Ami nagyon leegyszerûsítve azt jelenti, hogy jogod van használni a
- szoftvert mindenféle ellenszolgáltatás (pénz, stb) nélkül, a forrás kodot
- modosíthatod, és továbbadhatod, DE semmilyen, a szoftver használatábol
- következõ károsodásért nem vállal garanciát a fejlesztõ. A fenti a BSD
- licensz, egy klasszikus nyilt-forráskod licensz. Nem tartalmaz
- megszorításokat arra, hogy a forráskodot hogyan használod fel.
-
- Kedveljük ezt a licensz formát és nem áll szándékunkban megváltoztatni.
-
- 1.3 Milyen UNIX operácios rendszereken fut PostgreSQL?
-
- Általában minden UNIX-kompatibilis operácios rendszer képes arra hogy
- futtassa a PostgreSQL-t. Azokat a platformokat, amiken tesztelték a
- kiadást megtalálhatod a installácios utasítások között.
-
- 1.4 Milyen nem UNIX operácios rendszerek elérhetõek?
-
- Kliens
-
- A libpq C függvénykönyvtárat, a psql-t és más felületeket le lehet úgy
- fordítani, hogy fussanak MS Windows operácios rendszereken. Ebben az
- esetben a kliens MS Windows-on fut és TCP/IP segítségével kommunikál a
- Unixon futo szerverrel. A "win32.mak" állomány a kiadás része, ennek
- segítségével lehet Win32 platformokra lefordítani a libpq-t és a psql-t. A
- PostgreSQL ODBC kliensekkel is képes kommunikálni.
-
- Szerver
-
- <>Az adatbázis szerver Cygwin segítségével fut Windows NT és Win2k
- rendszereken. További informácio találhato a pgsql/doc/FAQ_MSWIN
- állományban és a MS Windows FAQ-ban a következõ helyen:
- http://www.PostgreSQL.org/docs/faq-mswin.html. Natív MS Windows
- NT/2000/XP portok jelenleg fejlesztés alatt állnak.
-
- 1.5 Hogyan tudok PostgreSQL-t szerezni?
-
- Az elsõdleges anonim ftp oldal: ftp://ftp.PostgreSQL.org/pub.
-
- A tükör oldalak listája megtalálhato a fõ weboldalunkon.
-
- 1.6 Hogyan kapok terméktámogatást?
-
- Az elsõdleges lista a pgsql-general@postgresql.org. Ez használhato a
- PostgreSQL-lel kapcsolatos párbeszédekre. Ha fel szeretnél íratkozni,
- küldj egy levelet a következõ tartalommal (nem tárggyal) a
- pgsql-general-request@postgresql.org címre:
-
- subscribe
-
- end
-
- Van egy hibákkal kapcsolatos levelezési lista is:
- pgsql-bugs-request@PostgreSQL.org a következõ tartalommal:
-
- subscribe
-
- end
-
- A fejleszto"i levelezési lista: pgsql-hackers-request@PostgreSQL.org a
- következõ tartalommal:
-
- subscribe
-
- end
-
- Egyéb levelezési listák találhatoak a weboldalunkon:
- http://www.PostgreSQL.org
-
- Van egy IRC csatorna is #PostgreSQL néven ahol felteheted kérédseid. A
- következõ unix paranccsal csatlakozhatsz:
-
- irc -c '#PostgreSQL' "$USER" irc.phoenix.net.
-
- A kereskedelmi terméktámogatást nyújto cégek listája elérhetö itt:
- http://www.PostgreSQL.org/users-lounge/commercial-support.html
-
- Magyar nyelvu" levelezési lista nincs, de ha tudok segiteni a fenit e-mail
- cimemen elérheto" vagyok.
-
- 1.7 Melyik a legfrissebb kiadás?
-
- A legfrissebb PostgreSQL kiadás a 8.0.
-
- A tervek szerint minden évben lesz egy nagyobb fejlesztéseket tartalmazo
- kiadás, míg a kisebb fejlesztéseket néhány havonta adjuk ki.
-
- 1.8 Milyen dokumentácio áll rendelkezésre?
-
- Számos kézikönyv, man oldalak és kis teszt példák találhatoak a kiadásban
- a doc/ könyvtár alatt. Az interneten is olvashatod a dokumentáciot a
- következõ címen:
-
- http://www.PostgreSQL.org/users-lounge/docs/.
-
- Két PostgreSQL könyv érhetõ el az interneten a
- http://www.PostgreSQL.org/docs/awbook.html és a
- http://www.commandprompt.com/ppbook/ címeken. A megvásárolhato könyvek
- listája itt találhato: http://www.ca.PostgreSQL.org/books/. A
- PostgreSQL-lel kapcsolatos technikai jellegû cikkek gyûjteménye:
- http://techdocs.PostgreSQL.org/.
-
- A psql parancs rendelkezik néhány \d utasítással, amellyekkel listázhatoak
- az operátorok, a funkciok, stb.
-
- A website is tartalmaz további dokumentáciokat.
-
- 1.9 Hogyan találok informáciot hibákrol vagy hiányzo funkcionalításrol?
-
- A PostgreSQLaz SQL-92 szabvány egy kiegészítése. Nézd meg a TODO listákat
- ha érdekelnek az ismert hibák.
-
- 1.10 Hogy tanuljam meg az SQL nyelvet?
-
- A PostgreSQL könyv a http://www.PostgreSQL.org/docs/awbook.html címen
- tartalmaz SQL alapokat. Elérhetõ egy másik SQL könyv is a
- http://www.commandprompt.com/ppbook címen. Egy szép oktato anyag találhato
- a http://www.intermedia.net/support/sql/sqltut.shtm, a
- http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM és a
- http://sqlcourse.com oldalakon.
-
- Egy másik lehetõség a "Tanítsd magad 21 nap alatt SQL-re, második kiadás"
- a http://members.tripod.com/er4ebus/sql/index.htm.
-
- Sok felhasználonak tetszett a gyakorlati SQL könyv ("The Practical SQL
- Handbook").
-
- 1.11 A PostgreSQL 2000. év kompatibilis?
-
- Igen, könnyedén kezeli a 2000 utáni és idõszámításunk elött 2000 elötti
- dátumokat is.
-
- 1.12 Hogyan lehet csatlakozni a fejlesztõ csapathoz?
-
- Elösször is töltsd le a forráskodot, és olvasd el a PostgreSQL
- fejlesztõi dokumnetáciot a web oldalunkon vagy a kiadásban. Ezután
- íratkozz fel a pgsql-hackers és a pgsql-patches levelezési listákra.
- Végül pedig küldj be magas szinvonalú patch-eket a pgsql-patches listára.
-
- Van egy pár ember, akiknek commit privilégiumuk a PostgreSQL CVS fán.
- Õk olyan sok magas szinvonalú patch-et küldtek be, hogy az addigi
- csapat már nem tudta követni, és nem volt kétségünk arrol, hogy a
- patch-ek amiket õk küldenek jo minõségû.
-
- 1.13 Hogyan küldjek hibajelentést?
-
- Látogass el a BugTool oldalra:
- http://www.PostgreSQL.org/bugs/bugs.php
- Itt megtalálod követendõ utasításokat.
-
- Ellenõrizd az ftp oldalunkon is, hogy nincs-e újabb verzio vagy folt.
- ftp://ftp.PostgreSQL.org/pub
-
- 1.14 Milyen a PostgreSQL más DBMS-ekkel összehasonlítva?
-
- Számos nézõpontbol lehet vizsgálni a szoftvert: képességek, teljesítmény
- megbízhatoság, támogatottság és ár.
-
- Képességek: A PostgreSQL rendelkezik a nagy, kereskedelmi DBMS-ek
- képességeivel: tranzakciok, al-lekérdezések, triggerek, nézetek, külsõ
- kulcsok, integrítás és kifinoult zármechanizmusok. Van néhány képessége,
- ami a kereskedelmi adatbázisokbol hiányzik, mint például a felhasználo
- által definiált típusok, öröklõdés, szabályok és verzio kontroll a
- zárolási viták redukálásáért.
-
- Teljesítmény: A PostgreSQL teljesítménye hasonlít a kereskedelmi és más
- nyílt adatbázis szerverekéhez. Lehet bizonyos esetekben lassabb, másokban
- gyorsabb. A MySQL nevû tanulo RDBMS például gyorsabban hajt végre
- insert/update mûveleteket, mivel a tranzakciokat elsumákolja. Persze a
- MySQL nem rendelkezik a képességek részben felsoroltak nagy részével. Mi a
- megbízhatoságra és a képességekre építünk, bár a teljesítmény is nõ minden
- kiadással. Van egy érdekes oldal a MySQL és a PostgreSQL
- összehasonlításával a http://openacs.org/philosophy/why-not-mysql.html
- címen.
-
- Megbízhatoság: Tudjuk hogy ha egy DBMS nem megbízhato, akkor teljesen
- haszontalan. Igyekszünk jol tesztelt, stabil kodot kiadni, amiben a lehetõ
- legkevesebb hiba van. Minden kiadás elött eltellik legalább 1 honap béta
- teszt, és a kiadási történet is azt mutatja, hogy stabil kodot adunk ki,
- ami készen áll a produktív felhasználásra. Úgy gondoljuk, felülmúlunk más
- adatbázis szoftvereket ezen a téren.
-
- Támogatás: A levelezési listáink kapcsolatot teremtenek a fejlesztõk és
- felhasználok csoportjával , akik segítenek a problémák megoldásában. Bár
- nem tudjuk garantálni hogy ki tudjuk javítani a hibát, más, kereskedelmi
- adatbázis cégek sem tudják. A fejlesztõ csoport közvetlen elérési
- lehetõsége, a közösség, a dokumentácio és a forráskod gyakran támogatást
- biztosít, mint más adatbázisoknál. Van kereskedelmi, alkalmi támogatás
- azoknak, akiknek szüksége van rá (lásd: 1.6).
-
- Ár: A PostgreSQL szabad bármilyen felhasználásra, akár kereskedelmire is.
- A termékhez hozzáadhatod a saját forráskodjaidat korlátozás nélkül.
-
- 1.15 Hogyan tudom üzletileg segiteni a PostgreSQL-t?
-
- A PostgreSQL elsõ osztályú infrastruktúrával rendelkezik, amit 1996-ban
- indítottunk el. Mindent Marc Fourniernek köszönhetünk, aki létrehozta és
- karbantartja a rendszert.
-
- A minõségi infrastruktúra nagyon fontos egy nyilt forrású szoftver
- esetében. Megvéd az olyan fennakadásoktol, amelyek komoly késéseket
- okoznak a fejlesztésekben. Természetesen ez az infrastruktúra nem olcso.
- Számos havi és állando kiadásunk van. Ha a cégednek van pénze, amivel
- támogatná erõfeszítéseinket, kérlek látogass el a
- http://store.pgsql.com/shopping/ oldalra.
-
- Bár a weboldal "PostgreSQL, Inc"-ként említi, a hozzájárulások kizárolag a
- PostgreSQL fejlesztésre értendoek, és nem egy meghatározott cégnek. Ha
- jobban tetszik, küldhetsz csekket is a kapcsolati címek bármelyikére.
-
- 1.16 Ki irányítja a PostgreSQL-t?
-
- Ha központi bizottságot, ellenörzo" céget keresel a PostgreSQL mögött, add
- fel, nincs ilyesmi. Létezik egy mag és CVS commiter csoport, de ez inkáb
- adminisztrativ mint ellenörzo" célú. A projectet fejleszto"k és
- felhasználok közössége irányítja, amihez bárki csatlakozhat. Csupán annyit
- kell tenned hogy felíratkozol a levelezo"listékra és részt veszel a
- beszélgetésekben.
-
- ----------------------------------------------------------------------
-
-Felhasználoi kliens kérdések
-
- 2.1 Van ODBC meghajto PostgreSQL-hez?
-
- Két ODBC meghajto érhetõ el: PsqlODBC és a OpenLink ODBC.
-
- A PsqlODBC a PostgreSQL kiadás része. További informácio találhato a
- ftp://ftp.PostgreSQL.org/pub/odbc/ oldalon.
-
- Az OpenLink ODBC-t a http://www.openlinksw.com címrõl töltheted le. Ez az
- õ szabványos ODBC kliens szoftverükkel mûködik, így minden
-
- általuk támogatott platformon (Win, Mac, Unix, VMS) elérhetõ lesz a
- PostgreSQL szerver.
-
- Talán olyan vevõknek fogják eladni, akik kereskedelmi minõségû terméket
- szeretnének kapni, de a freeware verzio mindig elérhetõ lesz. Kérdéseidet
- a termékkel kapcsolatban a postgres95@openlink.co.uk címen teheted fel.
-
- Olvasd el az ODBC fejezetet is a programozok kézikönyvében!
-
- 2.2 Milyen eszközök állnak rendelkezésre PostgreSQL Web fejlesztésekhez?
-
- Egy szép bemutato olvashato az adatbázissal támogatott web oldalanrol a
- http://www.webreview.com weboldalon.
-
- A web integráciohoz a PHP egy kivállo szoftver. Letölthetõ a
- http://www.php.net címrõl.
-
- Komplexebb esetekre sokan használják a Perl felületet és a CGI.pm vagy a
- mod_perl-t.
-
- 2.3 Van a PostgreSQL-hez grafikus felhasználoi felület?
-
- Van egy szép PgAccess nevû grafikus felületünk, ami riport generátorként
- is használhato. A weboldalát megtalálod a http://www.pgaccess.org/ címen.
-
- A http://techdocs.postgresql.org/guides/GUITools oldalon találhatsz egy
- pontos és részltes listát.
-
- 2.4 Milyen programozási nyelvekkel lehet elérni a PostgreSQL szervert?
-
- A következök:
-
- * C (libpq)
- * C++ (libpq++)
- * Embedded C (ecpg)
- * Java (jdbc)
- * Perl (DBD::Pg and perl5)
- * ODBC (odbc)
- * Python (PyGreSQL)
- * TCL (libpgtcl)
- * C Easy API (libpgeasy)
- * PHP ('pg_' functions, Pear::DB)
- További programozási felületek érhetõek el a
- http://www.PostgreSQL.org/interfaces.html és a
- http://gborg.PostgreSQL.org oldalakon.
-
- ----------------------------------------------------------------------
-
-Adminisztrácios kérdések
-
- 3.1 Hogyan tudom a PostgreSQL-t /usr/local/pgsql -tõl eltérõ helyre
- installálni?
-
- A configure script --prefix paraméterének használatával.
-
- 3.2 AMikor elindítom a postmaster-t, egy "Bad System Call"-t vagy core
- dump-ot kapok. Miért?
-
- Számos probléma lehet, de legelösször ellenõrizd le, hogy a kerneled
- System V kiegészítésekkel rendelkezik-e. A PostgreSQL használja a kernel
- osztott memoria és szemafor API-ját.
-
- 3.3 Amikor megprobálom inditani a postmaster-t, "IpcMemoryCreate" hibákat
- kapok. Miért?
-
- Vagy nincs megfelelõen konfigurálva a kerneled osztott memoria támogatása
- vagy meg kell nagyobbítanod a maximális osztott memoria méretet.
-
- A pontos méret szükséglet függ az architektúrádtol és attol hogy hány
- buffert és processzt konfigurálsz a postmasternek. Legalább 1 MB területre
- szükséged van. A PostgreSQL Adminisztrácio kézikönyvben olvashatsz
- részletesebb informáciokat az osztott memoriárol és a szemaforokrol.
-
- 3.4) Amikor megprobálom inditani a postmaster-t, "IpcSemaphoreCreate"
- hibákat kapok. Miért?
-
- Ha a hibaüzenet ez: " IpcSemaphoreCreate: semget failed (No space left on
- device)", akkor a kerneled konfigurácioja nem tesz lehetõvé elegendõ
- szemafort. A PostgreSQL szerver processzenként 1 szemafort igényel. Egy
- átmeneti megoldás lehet az hogy a postmastert kevesebb maximális processz
- számmal inditod el. Használd a -D paramétert. Egy sokkal megfelelõbb
- megoldás az ha növeled a kerneled SEMMNS és SEMMNI paramétereit.
-
- A hibás szemaforok is adatázis lerobbanásához is vezethet nagy terhelés
- esetén.Ha a hibaüzenet valami más, lehet hogy nincs szemaforok támogatás
-
- forditva a kerneledbe. Olvasd el a PostgreSQL adminisztrátorok
- kézikönyvében az osztott memoriárol és a szemaforokrol szolo fejezetet.
-
- 3.5) Hogyan tudom kontrollálni a más gépekrõl érkezõ kapcsolat kéréseket?
-
- Alapértelmezésben a PostgreSQL a helyi kapcsolatokat Unix socketekkel
- valosítja meg. Más gépek nem lesznek képesek csatlakozni, ha nem
- engedélyezed azt -i opcioval a postmasternek, és nem állítod be host a
- alapú azonosítást a pg_hba.conf állományban. Ezzel válnak lehetõvé a
- TCP/IP kapcsolatok.
-
- 3.6) Hogyan tudom nagyobb teljesítményre hangolni az adatbázisomat?
-
- Az indexelés feltétlenül gyorsítja a lekérdezéseket. Az EXPLAIN parancs
- lehetõvé teszi hogy lásd, hogy a PostgreSQL miként interpretálja a
- lekérdezést és melyik indexet használja.
-
- Ha sok INSERT mûveletet hajtassz végre, csináld nagy kötegekben a COPY
- paranccsal. Ez sokkal gyorsabb mint az egyedi INSERT parancsok. Másodszor:
- Azok a mûveletek, amelyek nincsenek tranzakcio blokkon belül, azok saját
- tranzakciot indítanak. Sok mûveletet érdemes egy tranzakcion belül
- végrehajtani. Ez csökkenti a tranzakcio kezelés többletidejét. Az
- indexeket javasolt a nagy adatváltozások elött eltávolítani, majd újra
- létrehozni.
-
- Számos teljesítmény javíto lehetõség van. Kikapcsolhatod az fsync()
- mûveletet a postmaster -o -F opciokval valo indításakor. Így nem fog az
- amugy lassú fsync() függvény meghívodni minden tranzakcio végén.
-
- Használhatod a postmaster -B opcioját is az osztott memoria szegmens
- méretének növeléséhez. Ha az értéket túl magasra állítod, lehet hogy a
- postmaster nem indul el, mert túllépted az operácios rendszer által
- megengedett méretet. Minden buffer 8K méretû és alapértelmezésban 64
- buffer van.
-
- A -S opcioval növelheted a szerver átmeneti rendezésekre fenntartott
- memoria területét. Az értéket kilobyteban add meg. Az alapértelmezett
- érték 512K.
-
- Használhatod a CLUSTER utasítást is, hogy a táblákat egy indexnek
- megfelelõen csoportosítsd. Olvasd el a CLUSTER kézikönyv oldalt további
- részletekért.
-
- Hardver kiválasztásában segíthet:
- http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html és
- http://www.powerpostgresql.com/PerfList/.
-
- A postgresql.conf beállitásaival kapcsolatos tudnivalok:
- http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html
- és http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.
-
- 3.7) Milyen hibakeresõ lehetõségek érhetõek el?
-
- A PostgreSQL számos lehetöséggel rendelkezik ami értékes lehet a
- hibakeresésnél.
-
- Elösször is, futtathatod a configure scriptet --enable-cassert opcioval,
- sok assert() funkciohivás ellenörzi a program futását és megállitja ha
- valami vératlan hiba történik.
-
- Mind a postmaster és a postgres számos hibakeresö lehetüséggel
- rendelkezik. Mindig amikor elinditod a postmastert, gyözödj meg rola, hogy
- a kimenetet log állományba küldöd. Igy:
-
- cd /usr/local/pgsql
-
- ./bin/postmaster >server.log 2>&1 &
-
- Ez egy server.log állományt hoz létre a felsö PostgreSQL könyvtárban. Ez
- az állomány tartlamaz majd számos hasznos informáciot a szerverrel
- kapcsolatos problémákrol és hibákrol. A postmaster -d opciojával lehet
- részletesebb hibakeresö informáciot kapni. A -d opciohoz meg kell
- határozni egy hiba szintet. Vigyázz, a magas hibakeresö szint nagy log
- állományt okozhat.
-
- Ha a postmaster nem fut, akkor futtathatod a postgres szervert
- parancssorbol is, és az SQL kifejezést közvetlenül ennek adhatod át. Ez
- csak hibakeresés esetében javasolt. Az új sor a kifejezés végét jelenti,
- nem a pontosvesszö. Ha hibakeresö opciokkal forditottad a szervert,
- használhatsz egy debuggert is hogy lásd hogy mi történik. Mivel igy a
- szervert nem a postmaster inditotta, nem többfelhasználos környezetként
- fut, igy a zárolási és a szerverek közötti kommunikácios hiba jelenségek
- nem jelentkeznek.
-
- Ha már fut a postmaster, indits egy psql-t, és nézd meg a szerver processz
- PID-jét! Egy debuggert használhatsz a processzhez csatlakozáshoz.
- Beállithatsz töréspontokat és elindithatsz lekérdezéseket. Ha a postgres
- inditásban keresel hibát, a PGOPTIONS környezeti változot állitsd be "-W
- n" értékre. Ez n másodperc várakozást idéz elö, igy tudsz csatlakozni a
- processzhez, el tdsz hejezni töréspontokat, majd folytathatod a indítást.
-
- A postgres program -s, -A és -t opcioi is nagyon hasznosak lehetnek
- hibakeresésnél és teljesítmény mérésnél.
-
- Profiling lehtöséggel is fordithatod a szervert, hogy lásd melyik funkciok
- foglalják el a futási idõt. A szerver profile állományai a
- pgsql/data/base/dbname könzvtárba kerülnek, a kliens profile állományok az
- aktuális könyvtárba. Linuxon ehhez szükséges a -DLINUX_PROFILE fordítási
- direktiva.
-
- 3.8) Miért kapok "Sorry, too many clients" (Túl sok kliens)
- hibát csatlakozásnál?
-
- Növelned kell a postmaster egyidejûleg futtatott szerver processz szám
- korlátját.
-
- Az alapértelmezett korlát 32 processz. Ezt növelhetjed úgy, hogy
- újrainditod a postmastert és -N opcioval meghatárotod az új értéket, vagy
- modositod a postgresql.conf-ot.
-
- Ne felejtsd el, hogy ha növeled a szerver processzek maximális számát,
- akkor bufferek számát is növelned kell, legalább a processzek számának
- kétszeresére. Nagy processz számokesetében valoszinüleg a Unix
- konfigurácios paramétereken is növelni kell. Ellenörizd a SHMMAX (az
- osztott memoria szegmensek maximális mérete), a SEMMNS és a SEMMNI (a
- szemaforok maximális száma), az NPROC (a processzek maximális száma), a
- MAXUPRC (felhasználonkénti maximális processz szám) és a NFILE és NINODE
- (a megnzitott állománzok maximális száma) paramétereket. A PostgreSQL
- azért korlátozza külön a processz számot, hogy a rendszeredet ne
- terhelhesse meg túlságosan.
-
- A PostgreSQL 6.5 verzioban a maximális szerver processz szám 64 volt és a
- modositáshoz bele kellett irni a include/storage/sinvaladt.h állományba és
- újra kellett forditani a servert.
-
- 3.9) Mi van pgsql_tmp könyvtárban?
-
- Ez a könyvtár a lekérdezés végrehajto által létrehezott átmeneti
- állományokat tartalmazza. Például ha egy rendezést kell végrehajtani egy
- ORDER BY kifejezés miatt és a m?velet több memoriát vesz igénybe, mint
- amennyit a -S paraméter megenged, akkor az átmeneti könyvtárban hoz létre
- egy állományt a fennmarado adat tárolására.
-
- Az átmeneti állományok többnyire törl?dnek, de meg is maradhat ha például
- váratlan hibával leáll a szerver egy rendezés közben. Inditáskor és
- leállitáskor ezeket az állományokat törli a postmaster.
-
- 3.10) Miért kell dumpolni és újratölteni PostgreSQL kiadás váltásánál?
-
- A PostgreSQL csapat csak aprobb változtatásokat hajt végre a kisebb
- kiadások között, igy ha 7.2 verziorol állsz át 7.2.1 verziora, akkor nem
- szükséges kidumplonod az adatbázist. A nagy kiadások esetében (például
- verziorol 7.3-ra áttérésnél) változik a belsiõ adatstruktúrák és
- adatállományok formátuma. Ezek a változások gyakran nagyon összetettek,
- ezért inkáb nem tartunk fenn visszafelé kompatibilitást. A dump az adatot
- általános formátumban irja ki, majd az új formátumban lehet azt
- visszatöleni.
-
- Azokban a kiadásokban, amelyek között az adat formátum nem változik, a
- pg_upgrade program használhato dumpolás és helyreállitás nélkül.
-
- ----------------------------------------------------------------------
-
-Mûködtetési kérdések
-
- 4.1) Mi a különbség a bináris és a normál kurzorok között?
-
- Nézd meg a DECLARE dokumentácioját.
-
- 4.2) Hogyan tudom select-elni a lekérdezés elsõ pár sorát?
-
- Olvasd el a FETCH dokumentácioját, vagy használd a SELECT LIMIT-et.
-
- Az egész lekérdezést végre kell hajtani, még akkor is, ha csak az elsõ pár
- sort akarod megkapni. Gondolj arra, hogy a lekérdezésben lehet ORDER BY
- is. Ha van olyan index, ami megfelel az ORDER BY kifejezésednek, a
- PostgreSQL képes lehet az elsö néhány rekord visszaadására, vagy a teljes
- lekérdezésnek le kell futnia, amig a kért rekordok le nem generálodnak.
-
- 4.3) Hogy tudom kilistázni a táblákat vagy más dolgokat a PostgreSQL-ben?
-
- Elolvashatod a psql forrás kodjában a pgsql/src/bin/psql/describe.c
- állományban. Ez SQL parancsokat tartalmaz, amelyek azokat a kimeneteket
- állitják elö, amiket a per jellel kezdödö parancsok adnak vissza.
-
- 4.4) Hogyan tudok eltávolítani egy oszlopot egy táblábol?
-
- Ez a funkcionalitás a 7.3 verziotül kezdve érhetö el az ALTER TABLE DROP
- COLUMN -nal. A régebbi vertiokban igy lehet végrehajtani:
-
- BEGIN;
-
- LOCK TABLE old_table;
-
- SELECT ... -- minden oszlopot, kivétel amit törölni szeretnél
-
- INTO TABLE new_table
-
- FROM old_table;
-
- DROP TABLE old_table;
-
- ALTER TABLE new_table RENAME TO old_table;
-
- COMMIT;
-
- 4.5) Mi a maximális mérete egy sornak, egy táblának vagy egy adatbázisnak?
-
- A korlátok:
-
- * adatbázis: korlátlan (1 TB az általunk ismert lagnagyobb)
-
- * tábla: 16 TB
-
- * rekord/sor 1.6TB
-
- * mezö 1 GB
-
- * a tábla sorainak száma: korlátlan
-
- * a tábla oszlopainak száma: 250-1600 az oszlop nevektõl függöen
-
- * A tábla indexeinek száma: korlátlan
-
- Természetesen nem igazán korlátlan, de a tárterület, memoria és egyéb
- külsö tényezök korlátozzák. A teljesitmény romolhat, ha ezek az értékek
- szokatlanul nagyok.
-
- A 16 TB-os legnagyobb tábla méret nem igényel nagy állomány támogatást. A
- nagy táblák több 1 GB méretü állományba kerölnek, igy az állomány rendszer
- korlátai nem lényegesek.
-
- A maximális tábla méret és az oszlopok maximális oszlop szám növelhetö, ha
- az alapértelmezett blokkméretet 32k-ra növeled.
-
- 4.6) Mekkora adatbázis lemez terület szükséges egy tipikus szöveg állomány
- tárolásához?
-
- A PostgreSQL akár a szöveg állomány helyigényének ötszörösét is
- elfoglalhatja.
-
- Képzelj el például, egy 100.000 soros szöveget, aminek minde sora egy
- számbol és egy szövegbõl áll. Tegyük el, hogy átlagosan 20 byte hosszú
- szövegek. Ez a szövegállomány körülbelül 2.8 MB helyet foglalna el. A
- tábla ami a fenti adatszerkezetet eltárolná, körülbelül 6.4 MB-os lenne.
- Ezt a következöképpen számolhatjuk ki:
-
- 36 byte: sor fejléc
-
- 24 byte: egy int mezö + egy szöveg mezö
-
- 4 byte: mutato
-
- ---------------------------------------
-
- 64 byte soronkent.
-
- Az adat oldal mérete a PostgreSQL-ben 8192 byte, igy 8192 / 64 = 128
- rekord adatbázis oldalanként (lefelé kerekitve).
-
- 100000 rekord / 128 rekord oldalanként = 782 adat oldal
- (felelé kerekitve).
-
- 782 adatbázis oldal * 8192 byte olalanként = 6,406,144
- byte (6.4 MB)
-
- Az indexek nem foglalnak túl sokat, de tartalmazzák az indexelt adatot,
- igy ezek is lehetnek nagyok.
-
- A NULL értékek bittérképben vannak tárolva, igy kevés helyet foglanak.
-
- 4.7) Hogy tudhatom meg milyen táblák, indexek, adatbázisok vagy
- felhasználok
-
- vannak definiálva?
-
- A psql-ben találsz számos '\' karakterrel kezdödö utasítást az ilyen
- informáciok listázására. A '\?' segitségével tudot kilistázni ezeketa
- parancsokat. Ezen kivül vannak rendszer táblák, amelyek nevei 'pg_'-vel
- kezdödnek.
-
- Probáld ki a pgsql/src/tutorial/syscat.source állományt is. Ez sok példát
- tartalmaz az rendszertáblákon végrehajtott SELECT-ekröl.
-
- 4.8) A lekérdezéseim lassúak, vagy nem használják az indexeket. Miért?
-
- Az indexeket nem használja a szerver minden lekérdezésnél automatikusan.
- Csak akkor használ indexet, ha a tábla mérete egy megadott also határ
- felett van, és a lekérdezés csak a sorok egy kis részét érinti. Ez azért
- van, mert a véletlen hozzáférés még mindig lassabb lehet mint az tábla
- szekvenciális olvasása.
-
- Hogy a PostgreSQL meg tudja határozni hogy kell-e indexet használni,
- léteznie kell egy statisztikának a táblárol. Ez a statisztikai adatok a
- VAACUM ANALYZE vagy az egyszerû ANALYZE mûveletek során jönnek létre. A
- statisztikai adatok felhasználásával az optimalizálo meg tudja határozni,
- hogy hány sor van a táblában, és el tudja dönteni, hogy használjon-e
- indexet. A statisztiaki adatgyüjtést idõnként végre kell hajtani, ahogy a
- tábla adatai változnak.
-
- Az indexeket normális esetben nem használja az ORDER BY vagy az OUTER
- JOIN. A szekvenciális olvasás általában gyorsabb, mint az index keresés
- egy nagy táblában. Bár a LIMIT az ORDER BY-val kombinálva használhat
- indexet, mert a tábla csak kis része érintett. Bár a MIN és MAX SQL
- funkciok sem használják az indexeket, ezeket az értékeket egy ORDER BY +
- LIMIT lekérdezéssel is le lehet kérdezni:
-
- SELECT col
-
- FROM tab
-
- ORDER BY col [ DESC ]
-
- LIMIT 1;
-
- Amikor helyettesítõ jel operátorokat használsz, mint a LIKE kulcsszo vagy
- a ~, az indexeket csak bizonyos körülmények között lehet használni:
-
- A keresõ string kezdete a keresési minta elején kell hogy legyen. Például:
-
- * A LIKE minták nem kezdõdhetnek % jellel.
- * ~ (regexp) kifejezések nem kezdõdhetnek ^ jellel.
- * A keresési kifejezés nem kezdõdhet karakter osztállyal.
- * A case-insensitive keresés (ILIKE, ~*) nem használnak indexet ehelyett
- funkcionális indexet használnak, amit a 4.12 pontban találhatsz.
- * Az alapértelmezett C hellyel kell futtatni az initdb-t.
- 4.9) Hogy tudom ellenõrizni, hogy optimalizálta a lekérdezés optimalizálo
- a lekérdezésem?
-
- Olvasd el a dokumentácio EXPLAIN-rol szolo részét.
-
- 4.10) Mi az R-tree index?
-
- Az R-tree index a térbeli adat indexelésére alkalmas. Egy hash index nem
- képes tartomány keresésekre. A B-tree index csak egy dimenzion kezeli a
- tartomány kereséseket. Például ha az indexet egy pont (point adattípus)
- típusú mez.re építjük, gyorsabban kezeli az olyan jellegü lekérdezéseket,
- mint egy adott körben
-
- találhato pontok.
-
- Az R-tree tervezési mintát eredetileg leíro szöveg: Guttman, A. "R-trees:
- A Dynamic Index Structure for Spatial Searching." Proceedings of the 1984
- ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57.
-
- Ezt olvashatod Stonebraker "Readings in Database Systems" c. könyvében.
-
- A beépített R-tree kezelni tudják a sokszögeket (polygon adattípus) és a
- dobozokat (box). Elméletileg, az R-tree kiterjeszthetõ további dimenziokra
- is. Gyakorlatilag ezen dolgoznod kell egy kicsit, és még nincs
- dokumentácionk arrol hogy az hogyan mûködik.
-
- 4.11) Mi a Genetic Query Optimizer?
-
- A GEQO modul a lekérdezés optimalizácio sebességét növeli nagy mennyiségû
- tábla összekapcsolása esetén. Lehetõvé teszi a nagy lekérdezések
- végrehajtását nem teljes kereséssel.
-
- 4.12) Hogyan tudok regexp keresést és case-insensitive regexp keresést
- használni? Hogyan tudok indexet használni case-insensitive kereséshez?
-
- A ~ operátor hajt végre reguláris kifejezés (regexp) értelmezést, a ~*
- ennek case-insensitive változata. A LIKE case-insensitive változata az
- ILIKE.
-
- A case-insensitive egyenlõség mûveleteket általában igy hajtjuk végre:
-
- SELECT *
-
- FROM tab
-
- WHERE lower(col) = 'abc';
-
- Ez nem fog indexet használni, bár létrehozhatsz egy funkcio indexet:
-
- CREATE INDEX tabindex ON tab (lower(col));
-
- 4.13) Hogyan tudom észlelni egy lekérdezésben, ha egy mezõ NULL?
-
- Használd "IS NULL"-t és az "IS NOT NULL"-t.
-
- 4.14) Mi a különbség a különbözõ karaktertípusok között?
-
- * "char" egy karakter hosszú string
- * CHAR(n) bpchar üres hellyel a megadott n hosszúságig
- * VARCHAR(n) varchar méret maximális hossz meghatározásával, a lefogllat
- terület is változo hosszú lesz
- * TEXT nincs meghatározott felso" korlát
- * BYTEA változo hosszúságú byte-tömb
-
- Látni fogod a belsõ elnevezésüket, ha tanulmányozod a rendszertáblákatés
- néhány hibaüzenetet.
-
- Az utobbi négy a "varlena" típusok, ami a tárolásuk modjára utal: az elsõ
- 4 byte a lemezen a hosszúság, a többi az adat. A valodi méret tehát
- nagyobb mint a deklarált hosszúság.Ezek azadatok tömöritve tárolodnak el,
- igy kevesebb helyet foglalnek el az elöre számitottnál.
-
- A CHAR(n) a legjobb megoldás, ha stabil hosszúságú stringet tárolsz. A
- VARCHAR(n) jo arra az esetekre, ha a hosszúság változik, de van felsõ
- korlátja. A TEXT típus korlátlan hosszúságú (1 GB-ig) szövegek tárolására
- alklamas. A BYTEA bináris adatok tárolására van. A teljesitmény mutatoi
- hasonloak ezenek a típusoknak.
-
- 4.15.1) Hogyan tudok létrehozni automatikusan növekvõ értékû mezõt?
-
- A PostgreSQL rendelkezik egy SERIAL adattípussal. Ez egy szekvenciát és
- egy indexet hoz létre az oszlopon. Például ez:
-
- CREATE TABLE person (
-
- id SERIAL,
-
- name TEXT
-
- );
-
- ugyanezt jelenti:
-
- CREATE SEQUENCE person_id_seq;
-
- CREATE TABLE person (
-
- id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
-
- name TEXT
-
- );
-
- CREATE UNIQUE INDEX person_id_key ON person ( id );
-
- A szekvenciákkal kapcsolatban olvasd el a create_sequence man oldalt. A
- sor OID-jét is használhatod egyedi azonositoként, bár ebben az esetben
- figyelj a pg_gump használatánál a -o opciora (COPY WITH OIDS, másolás
- OID-dal), hogy meg?rizd az értékeket.
-
- 4.15.2) Hogyan kaphatom meg egy SERIAL beszúrás értékét?
-
- Egy megoldás erre az, ha a nextval() funkcioval megszerzed az értéket még
- mielött beszúrnád az adatot a táblába. Erre itt láthatsz egy példát:
-
- new_id = execute("SELECT nextval('person_id_seq')");
-
- execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise
- Pascal')");
-
- Esetleg lekérdezheted a szekvencia állapotát a sor beszúrása után.
-
- execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
-
- new_id = execute("SELECT currval('person_id_seq')");
-
- Végül pedig, használhatod a visszaadott OID értéket is, bár ez a lehetõ
- legkevésbé portolhato. Perl DBI-ben, Edmund Mergl DBD::Pg moduljában az
- OID érték használhato a $sth->execute() után ($sth->{pg_oid_status}).
-
- 4.15.3) A currval() és a nextval() nem teremt holtpont veszélyes helyzetet
- a felhasználok között?
-
- Nem. A currval() funkcio a szerver processzed által adott értéket adja
- vissza, nem pedig a többi szerver processz által adottat.
-
- 4.15.4) Miért nem használodnak fel újra a sequence számok tranzakcio abort
- esetén?
-
- Miért vannak problémák a serial oszlopok számozásával?
-
- A párhuzamosság fejlesztése érdekében a sorozat számokat kérésre adja ki a
- szerver futo tranzakcioknak, és azokat nem zárja, amig a tranzakcio véget
- nem ér. Ez jukakat okoz a számozásokban a visszaforditott tranzakciok
- miatt.
-
- 4.16) Mi a OID? Mi a TID?
-
- Az OID a PostgreSQL egyedi sor azonositoja. Minden sor, ami létrejön a
- szerveren, kap egy OID-t. Minden OID, amit az initdb alatt jön létre 16384
- alatt van (lásd include/access/transam.h). Minden, felhasználo által
- létrehozott OID legalább ennyi. Alapértelmezésben, az OID nem csak a
- táblában vagy az adatbázisban egyedi, hanem a teljes PostgreSQL adatbázis
- rendszerben.
-
- A PostgreSQL az OID-okat a belsö tábláiban használja a sorok táblák között
- összekapcsolásához. Ezek az OID-k használhatoak a rekordok azonositására
- is amikor táblákat csatol össze a szerver (JOIN). Az OID-ot használhatod
- mezö típusként is, és indexelheted is.
-
- Az OID érték egy központi területröl származik, amit minden szerver
- processz használ. Ha az OID-ot valami másra szeretnéd cserélni:
-
- CREATE TABLE new_table(old_oid oid, mycol int);
-
- SELECT old_oid, mycol INTO new FROM old;
-
- COPY new TO '/tmp/pgtable';
-
- DELETE FROM new;
-
- COPY new WITH OIDS FROM '/tmp/pgtable';
-
- Az OID 4 byte-os integer értékként tárolodik, igy 4 milliárdnál
- túlcsordul. Még soha senki nem jelezte hogy ez történt volna, és ezt a
- korlátot igyekszünk eltávolitani, még mielött bárki észrevenné.
-
- A TID a fizikai sorok blokk és offszet címmel valo azonositására szolgál.
- A TID változik minden rekord modositás és törlés alkalmával. Ezeket az
- indexek használják hogy a fizikai sort gyorsan megtalálják.
-
- 4.17) Mi a PostgreSQL-ben használt kifejezések jelentése?
-
- Néhol a forrás kodban és a dokumnetácioban találhatoak kifejezések,
- amelyek általánosabb jelentéssel bírnak. Itt van néhány:
-
- * tábla (table), relácio (relation), osztály (class)
- * sor (row), rekord (record), tuple (nincs magyar jelentés)
- * oszlop (column), mezö (field), attributum (attribute)
- * retrieve, select
- * helyettesit (replace), modosit (update)
- * hozzáfûz (append), beszúr (insert)
- * OID, sorozat érték (serial value)
- * portal, cursor
- * range variable, tábla név, tábla alias
- Az általános adatbázis kifejezések összefoglaloját itt olvashato:
-
- http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html
-
- 4.18) Miért kapom ezt a hibát: "ERROR: Memory exhausted in
- AllocSetAlloc()"?
-
- Lehet hogy elfogyott a virtuális memoriád, vagy a kerneled erõforrás
- korlátai alacsonyak. Probáld ki ezt mielött elinditanád a postmastert:
-
- ulimit -d 262144
-
- limit datasize 256m
-
- A shelltõl függõen ezek közül csak az egyik fut majd le, de a processzek
- adatszegmensét sokkal magasabbra állitja, ami talán elég lesz a lekérdezés
- végrehajtásához. Ez az utasítás a jelenlegi processzre (a shelled)
- érvényes, és minden általa létrehozott processzre. Ha problémád van az SQL
- klienssel, mert a szerver túl nagy adatot küld vissza, probáld meg e
- klienssel is ugyanezt.
-
- 4.19) Hogyan tudhatom meg PostgreSQL, milyen verziot futtatok?
-
- A psql programban select version();
-
- 4.20) Miért kapok "invalid large obj descriptor" hibát nagy objektumok
- kezelésénél?
-
- A nagy objektumok kezelését egy tranzakcios blokkban helyezd el. (BEGIN és
- COMMIT között)
-
- Jelenleg a PostgreSQL ezt a szabályt azzal teszi kötelezõvé, hogy a
- tranzakcio végén a nagy objektumokat lezárja, igy a tranzakcio után az
- elsõ mûvelet amit az objektumon végrahajtanál hibás lesz.
-
- Ha olyan programozási felületet használsz mint az ODBC vagy a JDBC akkor
- valoszinûleg ki kell kapcsolnod az auto-commit-ot.
-
- 4.21) Hogy hozhatok létre olyan oszlopot, aminek alapértelmezett érétke a
- jelenlegi idõ?
-
- Használd a CURRENT_TIMESTAMP -ot:
-
- CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
-
- 4.22) Miért olyan lassúak az al-lekérdezéseim IN-nel?
-
- Jelenleg az al-lekérdezéseket a külsõ lekérdezéshez csatoljuk. Ha az
- allekérdezés csak kevés sort eredményez és a külsõ lekérdezés sokat, akkor
- az IN is gyors. Az EXISTS kulcsszo használatával gyorsithatod a
- lekérdezéseket.
-
- SELECT *
-
- FROM tab
-
- WHERE col IN (SELECT subcol FROM subtab);
-
- EXISTS használatával:
-
- SELECT *
-
- FROM tab
-
- WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
-
- Ahhoz hogy ez gyorsan fusson le, a subcol indexelt oszlopnak kell hogy
- legyen. Reméljük ezt a korlátot sikerül hamarosan legyõznünk.
-
- 4.23) Hogyan tudok outer join-t végrehajtani?
-
- A PostgreSQL a szabványos SQL szintaktikát követi. Itt van két példa:
-
- SELECT *
-
- FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
- vagy
-
- SELECT *
-
- FROM t1 LEFT OUTER JOIN t2 USING (col);
-
- Ezek az identikus lekérdezések összekapcsolják a t1.col és a t2.col
- mezõket, és a t1 bármelyik kapcsolatlan sorát is visszadják. A RIGHT JOIN
- a t2 kapcsolatlan sorait adta volna vissza, a FULL JOIN pedig a kapcsolt,
- és mindkét tábla kapcsolatlan sorait adja. Az OUTER kulcsszo opcionális, a
- LEFT, RIGHT és FULL JOIN szintaktikailag helyes. Az átlagos
- összekapcsolásokat INNER JOIN-nak nevezzük.
-
- Az elõzõ kiadásokban a OUTER JOIN lekérdezéseket UNION és NOT IN
- kulcsszavakkal lehetett szimulálni. Például a tab1 és a tab2
- összekapcsolása:
-
- SELECT tab1.col1, tab2.col2
-
- FROM tab1, tab2
-
- WHERE tab1.col1 = tab2.col1
-
- UNION ALL
-
- SELECT tab1.col1, NULL
-
- FROM tab1
-
- WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
-
- ORDER BY col1
-
- 4.24) Hogyan tudok több adatbázison végrehajtani lekérdezést?
-
- Arra nincs lehetõség, hogy más adatbázisbol kérdezz le adatot.Mivel a
- PostgreSQL adatbázis specifikus rendszer táblákat töltbe, bizonytalan hogy
- egy adatbázisok közötti lekérdezésnek hogyankellene viselkednie.
-
- A contrib/dblink könyvtárban találsz egy megoldást erre, ami funkcio
- hivások segitségével mûködik. Persze, a kliens hozhat létreszimultán
- kapcsolatot több adatbázissal, és összefésülheti az eredményeket.
-
- 4.25) Hogy tudok több soros vagy oszlopos eredményt visszaadni egy
- funkciobol?
-
- A PL/pgSQL tárolt eljárás nyelvvel refcursor használatával. Részletesen
- itt:
-
- http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html
-
- 4.26) Miért nem tudom megbizhatoan létrehozni és törölni az átmeneti
- táblákat a PL/pgSQL funkciokban?
-
- A PL/pgSQL cacheli a funkciok tartalmát, aminek az a szerencsétlen
- mellékhatása, hogy ha egy PL/pgSQL funkcio használ egy átmeneti táblát,
- ami késo"bb törlõdik majd ujra létrejön, akkor az újra lefuto funkcio nem
- fogja megtalálni a táblát, mert a cache változat a régi táblára tartalmaz
- mutatot. A megoldás erre az EXECUTE használata az átmeneti táblák
- kezelésére PL/pgSQL-ben. Ez a lekérdezés újrafordítását fogja elõidézni
- minden alkalommal.
-
- 4.27) Milyen replikácios lehetõségek vannak?
-
- Bár a replikácio egyetlen terület, több technologia létezik replikáciora,
- természetesen mindnek meg vannak a maga elo"nyei és hátrányai.
-
- A master/slave replikácios megoldással a master adatbázison hajthatunk
- végre modosításokat, míg a slave adatbázisokon csak lekérdezéseket. A
- PostgreSQL legnépszeru"bb master/slave replikácios megoldása a Solny-I.
-
- Számos más master/slave replikácios lehetõség létezik.Egy Listát
- olvashatsz ezekrõl itt:
-
- http://gborg.PostgreSQL.org/genpage?replication_research
-
- A multi-master replikácio leheto"vé teszi több master adatbázis
- használatát, bár ez a technologia drasztikusan csökkenti az adatbázis
- teljesítményét a sok szinkornizácio miatt. A PGCluster a legelterjedtebb
- ilyen megoldás.
-
- Egy többfelhasználos replikácios rendszer készül itt:
-
- http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
-
- 4.28) Milyen kodolási lehetõségek vannak?
-
- * A contrib/pgcrypto tartlamaz számos SQL lekérdezésben használhato
- kodolást.
- * A kliens-szerver kommunikácio rejtjelezésére a hostssl használhato.
- Ezt a pg_hba.conf-ben engedélyeztheted.
- * Az adatbázis felhsználok jelszavait tároláskor kodolja a rendszer.
- * Régebbi verziokban a PASSWORD_ENCRYPTION opcioval lehetett
- bekapcsolni.
- * A szerveren használhatsz kodolt fájrendszert.
-
- ----------------------------------------------------------------------
-
-A PostgreSQL kiterjesztése
-
- 5.1) Írtam egy felhasználoi funkciot. Miért core dumpol az adatbázis
- amikor használom?
-
- Számos probléma lehet. Elöbb probáld ki a funkciodat egy különállo
- alkalmazásban.
-
- 5.2) Hogyan lehet új adattípusokat és funkciokat hozzáadni a PostgreSQL
- disztribúciohoz?
-
- Küldd el a kiegészítéseid a pgsql-hackers levelezési listára és a
- forráskodjaid végül a contrib-ban kötnek ki.
-
- 5.3) Hogyan lehet olyan C funkciot írni, ami Tuple-t ad vissza?
-
- A 7.3 verziotol kezdve a PostgreSQL támogatja a táblázatokat viszzaado
- funkciokat C, PL/pgSQL és SQL nyelveken. Bõvebb dokumentáciot a Programozo
- kézikönyvben találsz. Egy C példa funkcio találhato a contrib/tablefunc
- könyvtárban.
-
- 5.4) Megváltoztattam egy forrás állományt. Miért nem változik a bináris
- újrafordítás után?
-
- A Makefile-ok nem ismerik a include állományok megfelelõ függõségeit.
- Végre kell hajtanod egy make clean-t, majd újra egy make-t. Ha GCC-t
- használsz felhasználhatod a configure script --enable-depend opcioját, így
- a compiler maga fogja ellenõrizni a függõségeket.
diff --git a/doc/FAQ_japanese b/doc/FAQ_japanese
deleted file mode 100644
index ca2618f8baa..00000000000
--- a/doc/FAQ_japanese
+++ /dev/null
@@ -1,1126 +0,0 @@
-PostgreSQL(¥İ¥¹¥È¥°¥ì¥¹¡¦¥­¥å¡¼¡¦¥¨¥ë)¤Ë¤Ä¤¤¤Æ¤è¤¯¤¢¤ë¼ÁÌä¤È¤½¤Î²òÅú(FAQ)
-
-¸¶Ê¸ºÇ½ª¹¹¿·Æü: Thu Jan 01 14:01:00 EDT 2009
-
-¸½ºß¤Î°İ»ı´ÉÍı¼Ô: Bruce Momjian (bruce@momjian.us)
-Maintainer of Japanese Translation: Jun Kuwamura (juk at postgresql.jp)
-
-¤³¤Îʸ½ñ¤ÎºÇ¿·ÈÇ¤Ï http://www.postgresql.org/docs/faqs.FAQ.html ¤Ç¸«¤ë¤³¤È¤¬¤Ç
-¤­¤Ş¤¹¡£
-
-¥×¥é¥Ã¥È¥Û¡¼¥à¤ËÆÃÍ­¤Î¼ÁÌä¤Ë¤Ä¤¤¤Æ¤Ï: http://www.postgresql.org/docs/faq/
-¤Ë²òÅú¤¬¤¢¤ê¤Ş¤¹¡£
-
-(°Ê²¼¡¢Ìõ¼Ô¤Ë¤è¤ëÃí¼á¤ò [ÌõÃí¡§ ¤È ] ¤È¤Ç°Ï¤ó¤Çµ­¤·¤Ş¤¹¡£)
-[ÌõÃí¡§
- ÆüËܸìÈǤÎFAQ¤Ï¡¢
- http://www.postgresql.org/docs/faqs.FAQ_japanese.html
- ¤Ë¤¢¤ê¤Ş¤¹¡£
- ºÇ¿·¤ÎÆüËܸìÈǤˤĤ¤¤Æ¤Ï¡¢¤³¤Îʸ½ñ¤ÎºÇ¸å¤Ë¤¢¤ë¡ÖÆüËܸìÈǤˤĤ¤¤Æ¡×¤ò¤´¤é¤ó¤¯¤À¤µ¤¤¡£
-
-]
-
-¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬
-
- °ìÈÌŪ¤Ê¼ÁÌä
-
-1.1) PostgreSQL¤È¤Ï²¿¤Ç¤¹¤«¡©¤½¤Î¸Æ¤ÓÊı¤Ï¡© Postgres¤È¤Ï¡©
-1.2) 郎 PostgreSQL ¤ò¥³¥ó¥È¥í¡¼¥ë¤·¤Æ¤¤¤Ş¤¹¤«¡©
-1.3) PostgreSQL¤ÎÃøºî¸¢¤Ï¤É¤¦¤Ê¤Ã¤Æ¤Ş¤¹¤«¡©
-1.4) PostgreSQL¤ò¥µ¥İ¡¼¥È¤¹¤ë¥×¥é¥Ã¥È¥Û¡¼¥à¤Ï¡©
-1.5) PostgreSQL¤Ï¤É¤³¤«¤éÆş¼ê¤Ç¤­¤Ş¤¹¤«¡©
-1.6) ºÇ¿·¤Î¥ê¥ê¡¼¥¹¤Ï¤É¤ì¤Ç¤¹¤«¡©
-1.7) ¥µ¥İ¡¼¥È¤Ï¤É¤³¤Ç¼õ¤±¤é¤ì¤Ş¤¹¤«¡©
-1.8) ¥Ğ¥°¥ì¥İ¡¼¥È¤Ï¤É¤Î¤è¤¦¤Ëȯ¿®¤·¤Ş¤¹¤«¡©
-1.9) ´ûÃΤΥХ°¤ä̤¤À̵¤¤µ¡Ç½¤Ï¤É¤¦¤ä¤Ã¤Æ¸«¤Ä¤±¤Ş¤¹¤«¡©
-1.10) ¤É¤Î¤è¤¦¤Êʸ½ñ¤¬¤¢¤ê¤Ş¤¹¤«¡©
-1.11) SQL¤Ï¤É¤¦¤¹¤ì¤Ğ³Ø¤Ù¤Ş¤¹¤«¡©
-1.12) ¥Ñ¥Ã¥Á¤òÄ󶡤·¤¿¤ê¡¢³«È¯¥Á¡¼¥à»²²Ã¤¹¤ë¤Ë¤Ï¤É¤¦¤¹¤ì¤Ğ¤è¤¤¤Ç¤¹¤«¡©
-1.13) ¾¤ÎDBMS¤ÈÈæ¤Ù¤ÆPostgreSQL ¤Ï¤É¤¦¤Ê¤Î¤Ç¤¹¤«¡© PostgreSQL¤òÁȤ߹ş¤ß¤Ë»È¤¨
-¤Ş¤¹¤«¡©
-1.14) PostgreSQL¤Ï¹ñËè¤ÎºÇ¿·¤Î²Æ»ş´Ö¤ÎÊѹ¹¤ò°·¤¤¤Ş¤¹¤«¡©
-1.15) PostgreSQL¤Î¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Î¹ØÆÉ¤ò¤ä¤á¤ë¤Ë¤Ï¤É¤¦¤¹¤ì¤Ğ¤è¤¤¤Ç¤¹¤«¡©¤Ş¤¿
-¡¢ÅŻҥ᡼¥ë¤ò½ÅÊ£¤·¤Æ¼õ¤±¼è¤é¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Ş¤¹¤«¡©
-
- ¥æ¡¼¥¶¡¦¥¯¥é¥¤¥¢¥ó¥È¤Î¼ÁÌä
-
-2.1) PostgreSQL ¤Ë¤Ï¤É¤ó¤Ê¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤¬»È¤¨¤Ş¤¹¤«¡©
-2.2) PostgreSQL ¤ò Web ¥Ú¡¼¥¸¤ÈÏ¢·È¤µ¤»¤ë¤Ë¤Ï¤É¤ó¤Ê¥Ä¡¼¥ë¤¬¤¢¤ê¤Ş¤¹¤«¡©
-2.3) PostgreSQL ¤Ë¥°¥é¥Õ¥£¥«¥ë¡¦¥æ¡¼¥¶¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ï¤¢¤ê¤Ş¤¹¤«¡©
-
- ´ÉÍı¾å¤Î¼ÁÌä
-
-3.1) ¤É¤¦¤¹¤ì¤Ğ¡¢PostgreSQL¤ò/usr/local/pgsql °Ê³°¤Î¾ì½ê¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤Ç¤­¤Ş¤¹
-¤«¡©
-3.2) ¾¤Î¥Û¥¹¥È¤«¤é¤ÎÀܳ¤Ï¤É¤Î¤è¤¦¤ËÀ©¸æ¤·¤Ş¤¹¤«¡©
-3.3) ¤è¤êÎɤ¤À­Ç½¤òÆÀ¤ë¤¿¤á¤Ë¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¡¦¥¨¥ó¥¸¥ó¤ò¤É¤Î¤è¤¦¤ËÄ´À°¤·¤Ş¤¹¤«
-¡©
-3.4) ¤É¤Î¤è¤¦¤Ê¥Ç¥Ğ¥°µ¡Ç½¤¬»È¤¨¤Ş¤¹¤«¡©
-3.5) Àܳ¤·¤è¤¦¤È¤¹¤ë¤È¤­¤Ë 'Sorry, too many clients' ¤¬½Ğ¤ë¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
-3.6) PostgreSQL¤Î¥¢¥Ã¥×¥°¥ì¡¼¥É¤Î¼ê½ç¤Ï¤É¤¦¤Ê¤ê¤Ş¤¹¤«¡©
-3.7) ¥Ï¡¼¥É¥¦¥§¥¢¤Ë¤Ï¤É¤Î¤è¤¦¤Ê¥³¥ó¥Ô¥å¡¼¥¿¤ò»È¤¨¤Ğ¤è¤¤¤Ç¤¹¤«¡©
-
- Áàºî¾å¤Î¼ÁÌä
-
-4.1) ºÇ½é¤Î¤¤¤¯¤Ä¤«¤Î¥í¥¦¤Î¤ß¤ò select ¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Ş¤¹¤«¡©¥é¥ó¥À¥à¤Ê¥í¥¦¡©
-4.2) ÄêµÁ¤µ¤ì¤¿¥Æ¡¼¥Ö¥ë¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¡¢¤ª¤è¤Ó¡¢¥æ¡¼¥¶¤ò¤É¤Î¤è¤¦¤Ë
-¤·¤Æ¸«¤Ä¤±½Ğ¤·¤Ş¤¹¤«¡©
-4.3) ¥«¥é¥à¤Î¥Ç¡¼¥¿¥¿¥¤¥×¤òÊѹ¹¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Ş¤¹¤«¡©
-4.4) ¥í¥¦¡¢¥Æ¡¼¥Ö¥ë¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎºÇÂ祵¥¤¥º¤Ï¡©
-4.5) °ìÈÌŪ¤Ê¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Î¥Ç¡¼¥¿¤òÊݸ¤¹¤ë¤Ë¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥Ç¥£¥¹¥¯ÍÆÎÌ
-¤Ï¤É¤Î¤¯¤é¤¤É¬ÍפǤ¹¤«¡©
-4.6) ¥¯¥¨¥ê¤¬ÃÙ¤¤¤Î¤Ï¤Ê¤¼¤Ç¤·¤ç¤¦¡©¤Ê¤¼¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬»È¤ï¤ì¤Ê¤¤¤Î¤Ç¤·¤ç¤¦¤«¡©
-4.7) ¥¯¥¨¥ê¥ª¥×¥Æ¥£¥Ş¥¤¥¶¤¬¡¢¤É¤Î¤è¤¦¤Ë¥¯¥¨¥ê¤òɾ²Á¤·¤Æ¤¤¤«¤ò¡¢¸«¤ë¤Ë¤Ï¤É¤¦¤·¤Ş
-¤¹¤«¡©
-4.8) Àµµ¬É½¸½¤Ç¤Î¸¡º÷¤äÂçʸ»ú¤È¾®Ê¸»ú¤È¤ò¶èÊ̤·¤Ê¤¤Àµµ¬É½¸½¸¡º÷¤Ï¤É¤Î¤è¤¦¤Ë¼Â¸½
-¤·¤Ş¤¹¤«¡©Âçʸ»ú¤È¾®Ê¸»ú¤È¤ò¶èÊ̤·¤Ê¤¤¸¡º÷¤Î¤¿¤á¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¤É¤Î¤è¤¦¤Ë»È¤¤
-¤Ş¤¹¤«¡©
-4.9) ¥¯¥¨¥ê¤ÎÃæ¤Ç¡¢¥Õ¥£¡¼¥ë¥É¤¬ NULL ¤Ç¤¢¤ë¤³¤È¤ò¸¡½Ğ¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Ş¤¹¤«¡©
-NULL¤Î²ÄǽÀ­¤Î¤¢¤ë¤â¤Î¤ò¤É¤Î¤è¤¦¤¹¤ì¤ĞÏ¢·ë¤Ç¤­¤Ş¤¹¤«? ¥Õ¥£¡¼¥ë¥É¤¬NULL¤«¤É¤¦¤«
-¤Ç¤É¤Î¤è¤¦¤Ë¥½¡¼¥È¤¬¤Ç¤­¤Ş¤¹¤«¡©
-4.10) ¤¤¤í¤¤¤í¤Êʸ»ú·¿¤Î¤½¤ì¤¾¤ì¤Î°ã¤¤¤Ï²¿¤Ç¤¹¤«¡©
-4.11.1) ÄÌÈÖ(serial)¡¿¼«Æ°Áıʬ¥Õ¥£¡¼¥ë¥É¤Ï¤É¤Î¤è¤¦¤Ë¤Ä¤¯¤ê¤Ş¤¹¤«¡©
-4.11.2) SERIAL¥Ç¡¼¥¿·¿¤ËÁŞÆş¤µ¤ì¤ëÃͤϡ¢¤É¤¦¤¹¤ì¤ĞÆÀ¤é¤ì¤Ş¤¹¤«¡©
-4.11.3) currval() ¤Ï¾¤Î¥æ¡¼¥¶¤È¤Î¶¥¹ç¾õÂ֤˴٤뤳¤È¤Ï¤Ê¤¤¤Ç¤¹¤«¡©
-4.11.4) ¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤¬ÃæÃǤ·¤¿¤È¤­¤Ë¤â¤¦¤¤¤Á¤É¥·¡¼¥±¥ó¥¹Èֹ椬»È¤ï¤ì¤Ê¤¤¤Î
-¤Ï¤Ê¤¼¤Ç¤¹¤«¡©¥·¡¼¥±¥ó¥¹¡¿SERIAL¥«¥é¥à¤Ë¶õ¤­¤¬¤¢¤ë¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
-4.12) OID ¤È¤Ï²¿¤Ç¤¹¤«¡© TID ¤È¤Ï²¿¤Ç¤¹¤«¡©
-4.13) ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸ "ERROR: Memory exhausted in AllocSetAlloc()"¤¬½Ğ¤ë¤Î¤Ï¤Ê
-¤¼¤Ç¤¹¤«¡©
-4.14) ¤É¤Î¥Ğ¡¼¥¸¥ç¥ó¤Î PostgreSQL ¤òÁö¤é¤»¤Æ¤¤¤ë¤Î¤«¤òÄ´¤Ù¤ë¤Ë¤Ï¤É¤¦¤·¤Ş¤¹¤«¡©
-4.15) ¸½ºß¤Î»ş¹ï¤¬¥Ç¥Õ¥©¥ë¥È¤È¤Ê¤ë¤è¤¦¤Ê¥«¥é¥à¤Ï¤É¤Î¤è¤¦¤Ë¤Ä¤¯¤ê¤Ş¤¹¤«¡©
-4.16) ³°Éô·ë¹ç(outer join)¤Ï¤É¤Î¤è¤¦¤Ë¼Â¸½¤·¤Ş¤¹¤«?
-4.17) Ê£¿ô¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò»È¤¦Ì䤤¹ç¤ï¤»¤Ï¤É¤Î¤è¤¦¤Ë¤¹¤ì¤Ğ¤Ç¤­¤Ş¤¹¤«¡©
-4.18) ´Ø¿ô¤«¤éÊ£¿ô¤Î¥í¥¦¤Ş¤¿¤Ï¥«¥é¥à¤òÊÖ¤¹¤Ë¤Ï¤É¤¦¤·¤Ş¤¹¤«¡©
-4.19) PL/PgSQL ¤Î´Ø¿ô¤ÎÃæ¤Ç°ì»ş¥Æ¡¼¥Ö¥ë¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤È¤­¡¢¤É¤¦¤·¤Æ "relation
-with OID ##### does not exist" ¤È¤¤¤¦¥¨¥é¡¼¤ò¼õ¤±¼è¤ë¤Î¤Ç¤·¤ç¤¦¤«¡©
-4.20) ¤É¤Î¤è¤¦¤Ê¥ì¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥½¥ê¥å¡¼¥·¥ç¥ó¤¬¤¢¤ê¤Ş¤¹¤«¡©
-4.21) ¥Æ¡¼¥Ö¥ë¤È¥«¥é¥à¤Î̾Á°¤¬¥¯¥¨¥ê¡¼¤ÎÃæ¤Çǧ¼±¤µ¤ì¤Ê¤¤¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©¤Ê¤¼Âç
-ʸ»ú²½(¥­¥ã¥Ô¥¿¥é¥¤¥º)¤Ï²¹Â¸¤µ¤ì¤Ê¤¤¤Î¤Ç¤¹¤«?
-
- ÆüËܸì¤Ë´Ø¤¹¤ë¼ÁÌä
-
-5.1) ÆüËܸ줬¤¦¤Ş¤¯°·¤¨¤Ê¤¤¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
-5.2) psql ¤ÇWindows¤«¤é¥¢¥¯¥»¥¹¤·¤¿¤È¤­¤Ë¡¢ÆüËܸ줬ʸ»ú²½¤±¤¹¤ë¤Î¤Ç¤¹¤¬¡©
-5.3) PostgreSQL¤ÇÆüËܸì¤ÎÁ´Ê¸¸¡º÷¤Ï¤Ç¤­¤Ş¤¹¤«¡©
-¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬
-
- °ìÈÌŪ¤Ê¼ÁÌä
-
-1.1) PostgreSQL¤È¤Ï²¿¤Ç¤¹¤«¡©¤½¤Î¸Æ¤ÓÊı¤Ï¡© Postgres¤È¤Ï¡©
-
-PostgreSQL¤ÏPost-Gres-Q-L(¥İ¥¹¥È¡¦¥°¥ì¥¹¡¦¥­¥å¡¼¡¦¥¨¥ë) ¤Èȯ²»¤·¤Ş¤¹¤¬¡¢²ñÏäÎ
-Ãæ¤Ç¤Ïñ½ã¤Ë Postgres ¤È¸Æ¤Ğ¤ì¤ë¤³¤È¤â¤¢¤ê¤Ş¤¹¡£¡Ê"PostgreSQL"¤ò¤É¤¦È¯²»¤¹¤ë¤«
-µ¤¤Ë¤Ê¤ë¿Í¤Î¤¿¤á¤Ë¡¢²»À¼¥Õ¥¡¥¤¥ë¤òÍѰդ·¤Æ¤¢¤ê¤Ş¤¹¡£
-
-PostgreSQL ¤Ï¥ª¥Ö¥¸¥§¥¯¥È-¥ê¥ì¡¼¥·¥ç¥Ê¥ë¥Ç¡¼¥¿¥Ù¡¼¥¹¥·¥¹¥Æ¥à¤Ç¡¢ÅÁÅıŪ¤Ê¾¦ÍÑ¥Ç
-¡¼¥¿¥Ù¡¼¥¹¥·¥¹¥Æ¥à¤Ë¡¢¼¡À¤ÂåDBMS¥·¥¹¥Æ¥à¤Ë¸«¤é¤ì¤ë¤è¤¦¤Ê²şÎɤ¬»Ü¤µ¤ì¤¿ÆÃħ¤òÍ­
-¤·¤Ş¤¹¡£PostgreSQL¤Ï¡¢ÌµÎÁ¤Ç´°Á´¤Ê¥½¡¼¥¹¥³¡¼¥É¤ò¼ê¤ËÆş¤ì¤ë¤³¤È¤¬¤Ç¤­¤Ş¤¹¡£
-
-PostgreSQL ¤Î³«È¯¤Ï¡¢¤Û¤È¤ó¤É¤¬¡¢À¤³¦Ãæ¤Ë¤Ò¤í¤¬¤Ã¤¿¥Ü¥é¥ó¥Æ¥£¥¢¤Î³«È¯¼Ô¤Ë¤è¤Ã¤Æ
-¡¢¥¤¥ó¥¿¡¼¥Í¥Ã¥È¤òÄ̤·¤¿¥³¥ß¥å¥Ë¥±¡¼¥·¥ç¥ó¤Ë¤è¤Ã¤Æ¹Ô¤ï¤ì¤Æ¤¤¤Ş¤¹¡£¥³¥ß¥å¥Ë¥Æ¥£
-¤Ë¤è¤ë¥×¥í¥¸¥§¥¯¥È¤Ç¤¢¤ë¤¿¤á¡¢¤É¤Î´ë¶È¤ÎÀ©¸æ¤â¤¦¤±¤Ş¤»¤ó¡£³«È¯¤Ë»²²Ã¤·¤¿¤±¤ì¤Ğ
-¡¢ http://www.postgresql.org/docs/faqs.FAQ_DEV.html ¤Ë¤¢¤ë³«È¯¼Ô¤ÎFAQ¤ò¸«¤Æ¤¯¤À
-¤µ¤¤¡£
-
-Postgres¤ÏPostgreSQL¤Î¹­¤¯»È¤ï¤ì¤Æ¤¤¤ë°¦¾Î¤Ç¤¹¡£¤Ş¤¿¡¢¥Ğ¡¼¥¯¥ì¡¼¤Ç¤Î¥×¥í¥¸¥§¥¯
-¥È¤Ç¤â¤È¤â¤È»È¤ï¤ì¤Æ¤¤¤¿Ì¾Á°¤Ç¡¢¤Û¤«¤Î¤¤¤º¤ì¤Î°¦¾Î¤ËÈæ¤Ù¤Æ¤âÍÚ¤«¤Ë¹¥¤Ş¤·¤¤¤Ç¤¹
-¡£'PostgreSQL' ¤Îȯ²»¤¬Æñ¤·¤¤¤È»×¤¦¤Î¤Ç¤¢¤ì¤Ğ¡¢¤½¤Î¤«¤ï¤ê¤Ë 'Postgres' ¤È¸Æ¤Ö¤è
-¤¦¤Ë¤·¤Ş¤·¤ç¤¦¡£
-
-1.2) 郎 PostgreSQL ¤ò¥³¥ó¥È¥í¡¼¥ë¤·¤Æ¤¤¤Ş¤¹¤«¡©
-
-PostgreSQL¤ÎÌçÈÖ¡¢Ãæ±û°Ñ°÷²ñ¡¢¤¢¤ë¤¤¤Ï¡¢¥³¥ó¥È¥í¡¼¥ë¤ò¤¹¤ë²ñ¼Ò¤òõ¤½¤¦¤È¤·¤Æ¤â
-¡¢Äü¤á¤¶¤ë¤ò¤¨¤º ---- ¸ºß¤·¤Ê¤¤¤Î¤Ç¤¹¡£²æ¡¹¤Ï¡¢Ãæ¿´¤È¤Ê¤ë¥³¥ß¥Ã¥Æ¥£¤ÈCVS¥³¥ß¥Ã
-¥¿¤ò»ı¤Á¤Ş¤¹¤¬¡¢¤³¤ì¤é¤Î¥°¥ë¡¼¥×¤Ï¥³¥ó¥È¥í¡¼¥ë¤¹¤ë¤¿¤á¤È¤¤¤¦¤è¤ê¤â¡¢´ÉÍı¾å¤Î¤â
-¤Î¤Ç¤¹¡£¤³¤³¤Ç¤Ï¡¢¥×¥í¥¸¥§¥¯¥È¤Ï¡¢¤À¤ì¤Ç¤â»²²Ã¤¬¤Ç¤­¤ë³«È¯¼Ô¤È¥æ¡¼¥¶¤Î¥³¥ß¥å¥Ë
-¥Æ¥£¤Ë¤è¤êÊı¸şÉÕ¤±¤é¤ì¤Ş¤¹¡£ÆÉ¼Ô¤¬¤ä¤é¤Ê¤±¤ì¤Ğ¤Ê¤é¤Ê¤¤¤³¤È¤Ï¡¢¥á¡¼¥ê¥ó¥°¥ê¥¹¥È
-¤ò¥µ¥Ö¥¹¥¯¥é¥¤¥Ö¤·¤Æ¡¢µÄÏÀ¤Ë»²²Ã¤¹¤ë¤³¤È¤Ç¤¹¡£¡ÊDeveloper's FAQ¤Ë¤Ï¡¢PostgreSQL
-³«È¯¤Ë²Ã¤ï¤êÊı¤Ë¤Ä¤¤¤Æ¤Î¾ğÊ󤬤¢¤ê¤Ş¤¹¡£¡Ë
-
-1.3) PostgreSQL ¤ÎÃøºî¸¢¤Ï¤É¤¦¤Ê¤Ã¤Æ¤Ş¤¹¤«¡©
-
-PostgreSQL ¤Ï²¼µ­¤ÎÃøºî¸¢¤Ë½¾¤¤¤Ş¤¹¡£
-
-PostgreSQL¤Ï¸Å¤¯¤«¤é¤ÎBSD¥é¥¤¥»¥ó¥¹¤Î²¼¤ÇÇÛÉÛ¤µ¤ì¤Æ¤¤¤Ş¤¹¡£¤½¤ì¤Ï´ğËÜŪ¤Ë¤Ï¡¢Íø
-ÍѼԤ¬¤½¤Î¥³¡¼¥É¤ò¹¥¤­¾¡¼ê¤ËÍøÍѤ¹¤ë¤³¤È¤¬µö¤µ¤ì¤Æ¤¤¤Ş¤¹¡£À©¸Â¤¬¤¢¤ë¤È¤¹¤ì¤Ğ¡¢
-¤³¤Î¥½¥Õ¥È¥¦¥§¥¢¤Ëȼ¤¦¤¤¤«¤Ê¤ëÌäÂê¤Ë¤ª¤¤¤Æ¤âˡŪ¤ËÀÕǤ¤ò²æ¡¹¤ËÉé¤ï¤»¤ë¤³¤È¤¬¤Ç
-¤­¤Ê¤¤¤È¤¤¤¦¤³¤È¤Ç¤¹¡£¤Ş¤¿¡¢¤³¤ÎÃøºî¸¢É½¼¨¤¬¤³¤Î¥½¥Õ¥È¥¦¥§¥¢¤Î¤¹¤Ù¤Æ¤ÎÊ£À½¤Ëɽ
-¼¨¤¹¤ë¤³¤È¤âɬÍפǤ¹¡£°Ê²¼¤Ë¡¢²æ¡¹¤¬¼Âºİ¤Ë»È¤Ã¤Æ¤¤¤ëBSD»ÈÍѵöÂú½ñ¤ò¼¨¤·¤Ş¤¹¡§
-
- [ÌõÃí¡§
- ÀµÊ¸¤Ï±Ñ¸ì¤Ç¤¹¡£»²¹Í¤È¤·¤Æ¡¢Ìõʸ¤òÊ»µ­·ÇºÜ¤·¤Ş¤¹¡£
- ]
-
-
-PostgreSQL Data Base Management System
-
-Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group Portions
-Copyright (c) 1994-1996 Regents of the University of California
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose, without fee, and without a written agreement is
-hereby granted, provided that the above copyright notice and this paragraph and
-the following two paragraphs appear in all copies.
-
-IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
-DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST
-PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
-THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGE.
-
-THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND
-THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE,
-SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-
- POSTGRESQL ¥Ç¡¼¥¿¥Ù¡¼¥¹´ÉÍı¥·¥¹¥Æ¥à
-
- ÉôÊ¬ÅªÃøºî¸¢ (c) 1996-2009, PostgreSQL¹ñºİ³«È¯¥°¥ë¡¼¥×
- ÉôÊ¬ÅªÃøºî¸¢ (c) 1994-1996 ¥«¥ê¥Õ¥©¥ë¥Ë¥¢Âç³ØËܹ»
-
-
- ËÜ¥½¥Õ¥È¥¦¥§¥¢¤ª¤è¤Ó¤½¤Îʸ½ñ°ì¼°¤Ï¾åµ­¤ÎÃøºî¸¢É½¼¨¤È¡¢¤³¤Îʸ¾Ï
- ¤ª¤è¤Ó¤³¤ì¤Ë³¤¯Æó¤Ä¤ÎÃÊÍÁ´¤Æ¤ÎÊ£À½¤ËźÉÕ¤µ¤ì¤Æ¤¤¤ë¸Â¤ê¤Ë¤ª¤¤
- ¤Æ¡¢»ÈÍÑ¡¢Ê£À½¡¢½¤Àµ¤ª¤è¤ÓÇÛÉդεö²Ä¤ò¡¢¤¤¤«¤Ê¤ëÌÜŪ¤Ç¤¢¤Ã¤Æ¤â¡¢
- ̵½ş¤Ç¤«¤ÄƱ°Õ½ñ̵¤·¤Ë¹Ô¤Ê¤¨¤ë¤³¤È¤ò¤³¤³¤Ëǧ¤á¤Ş¤¹¡£
-
- ¥«¥ê¥Õ¥©¥ë¥Ë¥¢Âç³Ø¤Ï¡¢¤¤¤«¤Ê¤ëÅö»ö¼Ô¤Ë¤¿¤¤¤·¤Æ¤â¡¢Íø±×¤Î²õ¼º¤ò
- ´Ş¤à¡¢Ä¾ÀÜŪ¡¢´ÖÀÜŪ¡¢ÆÃÊÌ¡¢¶öÁ³¤¢¤ë¤¤¤ÏɬÁ³Åª¤Ë¤«¤«¤ï¤é¤ºÀ¸¤¸¤¿
- »³²¤Ë¤Ä¤¤¤Æ¡¢¤¿¤È¤¨¥«¥ê¥Õ¥©¥ë¥Ë¥¢Âç³Ø¤¬¤³¤ì¤é¤Î»³²¤Ë¤Ä¤¤¤ÆÁÊÄÉ
- ¤ò¼õ¤±¤Æ¤¤¤¿¤È¤·¤Æ¤â¡¢°ìÀÚ¤ÎÀÕǤ¤òÉ餤¤Ş¤»¤ó¡£
-
- ¥«¥ê¥Õ¥©¥ë¥Ë¥¢Âç³Ø¤Ï¡¢¾¦ÍÑÌÜŪ¤Ë¤ª¤±¤ë°ÅÌÛ¤ÎÊݾڤȡ¢ÆÃÄêÌÜŪ¤Ç
- ¤ÎŬ¹çÀ­¤Ë´Ø¤·¤Æ¤Ï¤â¤È¤è¤ê¡¢¤³¤ì¤é¤Ë¸Â¤é¤º¡¢¤¤¤«¤Ê¤ëÊݾڤâÊü´ş¤¹
- ¤ë¤³¤È¤òÌÀ¸À¤·¤Ş¤¹¡£°Ê²¼¤ËÍѰդµ¤ì¤¿¥½¥Õ¥È¥¦¥§¥¢¤Ï¡Ö¤½¤Î¤Ş¤Ş¡×¤ò
- ´ğËܸ¶Íı¤È¤·¡¢¥«¥ê¥Õ¥©¥ë¥Ë¥¢Âç³Ø¤Ï¤½¤ì¤ò°İ»ı¡¢»Ù±ç¡¢¹¹¿·¡¢²şÎɤ¢
- ¤ë¤¤¤Ï½¤Àµ¤¹¤ëµÁ̳¤òÉ餤¤Ş¤»¤ó¡£
-
- [ÌõÃí¡§
- Ãøºî¸¢¤Ë´Ø¤¹¤ëÀµÊ¸¤Ï¾åµ­¤Î±Ñ¸ì¤Ë¤è¤ëɽµ­¤Ç¤¹¡£ÆüËܸìÌõ¤Ï¤¢¤¯¤Ş¤Ç
- »²¹ÍÄøÅ٤Ȥ·¤Æ¤¯¤À¤µ¤¤¡£
- ]
-
-
-1.4) PostgreSQL¤ò¥µ¥İ¡¼¥È¤¹¤ë¥×¥é¥Ã¥È¥Û¡¼¥à¤Ï¡©
-
-°ìÈÌŪ¤Ë¡¢ºÇ¶á¤ÎUnix¸ß´¹¥×¥é¥Ã¥È¥Û¡¼¥à¤Ç¤¢¤ì¤ĞPostgreSQL¤ò²ÔƯ¤µ¤»¤é¤ì¤ë¤Ï¤º¤Ç
-¤¹¡£¥ê¥ê¡¼¥¹¤Î»şÅÀ¤Ç¼Âºİ¤Ë¥Æ¥¹¥È¤ò¹Ô¤Ê¤Ã¤¿¤³¤È¤ÎÊó¹ğ¤¬¤Ê¤µ¤ì¤¿¥×¥é¥Ã¥È¥Û¡¼¥à¤Ë
-¤Ä¤¤¤Æ¤Ï¥¤¥ó¥¹¥È¡¼¥ë¼ê°ú½ñ¤ËÎóµó¤·¤Æ¤¢¤ê¤Ş¤¹¡£
-
-PostgreSQL ¤Ï¡¢Win2000 SP4, WinXP, ¤½¤·¤Æ¡¢Win2003 ¤Ê¤É Microsoft Windows NT¥Ù
-¡¼¥¹¤Î¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Ç¡¢¥Í¥¤¥Æ¥£¥Ö¤ËÁö¤ê¤Ş¤¹¡£¤¢¤é¤«¤¸¤á¥Ñ¥Ã¥±¡¼¥¸¤Ë
-¤µ¤ì¤¿¥¤¥ó¥¹¥È¡¼¥é¤¬ http://www.postgresql.org/download/windows ¤«¤é¥À¥¦¥ó¥í¡¼
-¥É¤Ç¤­¤Ş¤¹¡£ MSDOS¥Ù¡¼¥¹¤ÎWindows¤Î¥Ğ¡¼¥¸¥ç¥ó(Win95, Win98, WinMe)¤Ç¤Ï¡¢Cygwin
-¤ò»È¤Ã¤Æ PostgreSQL ¤òÁö¤é¤»¤ë¤³¤È¤¬¤Ç¤­¤Ş¤¹¡£
-
- [ÌõÃí
- ÆüËܸì¤Ç¤Î¾ğÊó¤Ï¡¢¼¡¤Î WindowsÈǤ˴ؤ¹¤ëFAQ¤ÎÏÂÌõ¤ò¤´¤é¤ó¤¯¤À¤µ
- ¤¤¡Ê¤ä¤ä¸Å¤¤¤Ç¤¹¡Ë¡£
- http://old.postgresql.jp/wg/jpugdoc/FAQ_windows.ja.html
- ]
-
-
-¼¡¤Î¥µ¥¤¥È¤Ë Novell Netware 6 ¤Ø¤Î°Ü¿¢ÈǤ⤢¤ê¤Ş¤¹¡£ http://
-developer.novell.com/wiki/index.php/Postgresql ¤Ş¤¿¡¢OS/2 (eComStation) ¥Ğ¡¼¥¸
-¥ç¥ó¤Ï¡¢ http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=
-postgreSQL&stype=all&sort=type&dir=%2F¤Ë¤¢¤ê¤Ş¤¹¡£
-
-
-1.5) PostgreSQL ¤Ï¤É¤³¤«¤éÆş¼ê¤Ç¤­¤Ş¤¹¤«¡©
-
-Web¥Ö¥é¥¦¥¶·Ğͳ¤À¤È¡¢ http://www.postgresql.org/ftp/¡¢¤½¤ì¤«¤é¡¢ftp·Ğͳ¤À¤È¡¢
-ftp://ftp.postgresql.org/pub/ ¤ò»È¤¤¤Ş¤¹¡£
-
-1.6) ºÇ¿·¤Î¥ê¥ê¡¼¥¹¤Ï¤É¤ì¤Ç¤¹¤«¡©
-
-PostgreSQL ¤ÎºÇ¿·ÈǤϥС¼¥¸¥ç¥ó 8.3.5 ¤Ç¤¹¡£
-
-²æ¡¹¤Ï¡¢1ǯËè¤Ë¥á¥¸¥ã¡¼¥ê¥ê¡¼¥¹¤ò¡¢¿ô¥õ·î¤´¤È¤Î¥Ş¥¤¥Ê¡¼¥ê¥ê¡¼¥¹¤ò¹Ô¤Ê¤¦¤³¤È¤ò·×
-²è¤·¤Æ¤¤¤Ş¤¹¡£
-
- [ÌõÃí
- ¥Ğ¡¼¥¸¥ç¥óÈÖ¹æ¤Î x.y.z ¤ÎºÇ½é¤Î x.y ¤¬¥á¥¸¥ã¡¼¥ê¥ê¡¼¥¹¤ÎÈÖ¹æ¤ËÁê
- Åö¤·¡¢ºÇ¸å¤Î z ¤¬¥Ş¥¤¥Ê¡¼¥ê¥ê¡¼¥¹¤ÎÈÖ¹æ¤Ë¤Ê¤ê¤Ş¤¹¡£¥á¥¸¥ã¡¼¥ê¥ê¡¼
- ¥¹¤ÎÈֹ椬Ʊ¤¸¤Ç¤¢¤ì¤Ğ¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¡¦¥¯¥é¥¹¥¿¤Ë¸ß´¹À­¤¬¤¢¤ê¤Ş¤¹¡£
- ]
-
-
-1.7) ¥µ¥İ¡¼¥È¤Ï¤É¤³¤Ç¼õ¤±¤é¤ì¤Ş¤¹¤«¡©
-
-PostgreSQL ¥³¥ß¥å¥Ë¥Æ¥£¤Ï¿¤¯¤Î¥æ¡¼¥¶¤Î¤¿¤á¤Ë¡¢ÅŻҥ᡼¥ë·Ğͳ¤Î»Ù±ç¤òÄ󶡤·¤Æ¤¤
-¤Ş¤¹¡£ÅŻҥ᡼¥ë¥ê¥¹¥È¤ò¥µ¥Ö¥¹¥¯¥é¥¤¥Ö¤¹¤ë¤¿¤á¤Î¥á¥¤¥ó¤È¤Ê¤ë¥¦¥§¥Ö¥µ¥¤¥È¤Ï
-http://www.postgresql.org/community/lists/¤Ç¤¹¡£¤³¤ì¤«¤é¡¢»Ï¤á¤ë¤Î¤Ç¤¢¤ì¤Ğ
-general ¤Ş¤¿¤Ï¡¢bugs ¤È¤¤¤Ã¤¿¥ê¥¹¥È¤¬¤è¤¤¤Ç¤·¤ç¤¦¡£
-
-¥á¥¸¥ã¡¼¤ÊIRC ¥Á¥ã¥ó¥Í¥ë¤Ï¡¢Freenode (irc.freenode.net)¤Î #postgresql ¤È¤¤¤¦¥Á
-¥ã¥ó¥Í¥ë¤Ç¤¹¡£UNIX ¥³¥Ş¥ó¥É¤Ç¤Ï¡¢ irc -c '#PostgreSQL' "$USER" irc.freenode.net
-¤ò»È¤Ã¤Æ»²²Ã¤Ç¤­¤Ş¤¹¡£Æ±¤¸¥Í¥Ã¥È¥ï¡¼¥¯¤Ë¡¢¥¹¥Ú¥¤¥ó¸ì¤Î¥Á¥ã¥ó¥Í¥ë (#
-postgresql-es)¡¢¥Õ¥é¥ó¥¹¸ì¤Î¥Á¥ã¥ó¥Í¥ë (#postgresqlfr)¡¢¥Ö¥é¥¸¥ë¸ì¥Á¥ã¥ó¥Í¥ë (#
-postgresql-br) ¤â¤¢¤ê¤Ş¤¹¡£¤Ş¤¿¡¢EFNet¤Ë¤âPostgreSQL¥Á¥ã¥ó¥Í¥ë¤¬¤¢¤ê¤Ş¤¹¡£
-
- [ÌõÃí:
- 1999ǯ7·î23Æü¡¢ÆüËܥݥ¹¥È¥°¥ì¥¹¥æ¡¼¥¶¡¼²ñ¡¢Î¬¾ÎJPUG¤¬ÀßΩ¤µ¤ì¤Ş¤·¤¿¡£
- JPUG ¤ÏÈó±ÄÍøÁÈ¿¥¤Ç¡¢PostgreSQL¤òÍøÍѤ¹¤ë¿Íã¤ÎÁê¸ß¶¨ÎϤξì¤È¤Ê¤Ã¤Æ¤¤¤Ş¤¹¡£
- (2006ǯ ÆÃÄêÈó±ÄÍø³èư(NPO)Ë¡¿ÍÆüËÜPostgreSQL¥æ¡¼¥¶²ñ¤Ë¤Ê¤ê¤Ş¤·¤¿¡£
- Web²ñ°÷¤ÈÀµ²ñ°÷¤Î²ñÈñ¤Ï̵ÎÁ¤Ç¤¹¤¬¡¢¶¨»¿²ñ°÷¤Î²ñÈñ¤È²ñ°÷¤Î¹×¸¥¤Ç
- ²ñ¤Ï±¿±Ä¤µ¤ì¤Æ¤¤¤Ş¤¹¡£)
- ¾Ü¤·¤¯¤Ï¡¢JPUG ¤ÎWeb ¥µ¥¤¥È:
- http://www.postgresql.jp/
- ¤ò¤´¤é¤ó¤¯¤À¤µ¤¤¡£
-
- ÆüËܸì¤ÎIRC¥Á¥ã¥ó¥Í¥ë '#PostgreSQL:*.jp' ¤â¸ºß¤·¤Ş¤¹¡£
- ]
-
-
-¾¦ÍÑ¥µ¥İ¡¼¥È²ñ¼Ò¤Î¥ê¥¹¥È¤Ï http://www.postgresql.org/support/
-professional_support¤Ë¤¢¤ê¤Ş¤¹¡£
-
-1.8) ¥Ğ¥°¥ì¥İ¡¼¥È¤Ï¤É¤Î¤è¤¦¤Ëȯ¿®¤·¤Ş¤¹¤«¡©
-
-http://www.postgresql.org/support/submitbug ¤ÎPostgreSQL ¥Ğ¥°¥Õ¥©¡¼¥à¤òˬ¤ì¤Æ¤¯
-¤À¤µ¤¤¡£¥Ğ¥°¥ì¥İ¡¼¥È¤òÄó½Ğ¤¹¤ë»ÅÊı¤Ë¤Ä¤¤¤Æ¤Î¼ê°ú¤È»Ø¿Ë¤¬¤¢¤ê¤Ş¤¹¡£
-
-¤½¤ì¤ÈƱ»ş¤Ë ftp ¥µ¥¤¥È ftp://ftp.postgresql.org/pub/ ¤Ç¡¢ºÇ¿·¥Ğ¡¼¥¸¥ç¥ó¤Î
-PostgreSQL ¤òõ¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
-
-1.9) ´ûÃΤΥХ°¤ä̤¤À̵¤¤µ¡Ç½¤Ï¤É¤¦¤ä¤Ã¤Æ¸«¤Ä¤±¤Ş¤¹¤«¡©
-
-PostgreSQL¤Ï³ÈÄ¥¤µ¤ì¤¿SQL:2003¤Î¥µ¥Ö¥»¥Ã¥È¤ò¥µ¥İ¡¼¥È¤·¤Ş¤¹¡£²æ¡¹¤Î¥Ú¡¼¥¸¤Î TODO
-¥ê¥¹¥È¤Ë¡¢´ûÃΤΥХ°¤ä·çÍǽ¤ä¾­Íè·×²è¤Ë¤Ä¤¤¤Æ¤Îµ­½Ò¤¬¤¢¤ê¤Ş¤¹¡£
-
-ÆÃħ¤ÎÍ×µá¤ÏÉáÄ̼¡¤Î¤¤¤º¤ì¤«¤Î²òÅú¤ÎÃæ¤Ë¤¢¤ê¤Ş¤¹¡§
-
- ¡¦ ´û¤Ë¤³¤³¤Ë¤¢¤ëµ¡Ç½¤Ï¡¢ TODO ¥ê¥¹¥È¤Ç¤¹
- ¡¦ ¼¡¤Î¤è¤¦¤Êµ¡Ç½¤ÏÌÜÏÀ¤Ş¤ì¤Æ¤¤¤Ş¤»¤ó¡£¤½¤ì¤Ï¡§
- ¢¢ SQLµ¬³Ê¤Ë½à¤º¤ë´û¸¤Îµ¡Ç½¤È½ÅÊ£¤¹¤ë¤â¤Î
- ¢¢ ¥³¡¼¥É¤ÎÊ£»¨À­¤Ğ¤«¤ê¤ò¹â¤á¤Æ¡¢ÆÀ¤ë¤â¤Î¤¬¾¯¤Ê¤¤µ¡Ç½
- ¢¢ °ÂÁ´À­¤¬³Î¤á¤é¤ì¤Ê¤¤µ¡Ç½
- ¡¦ ¿·¤·¤¤µ¡Ç½¤Ï¡¢ TODO ¤Î¥ê¥¹¥È¤Ë²Ã¤¨¤é¤ì¤é¤ì¤Ş¤¹¡£
-
-²æ¡¹¤Ï¡¢PostgreSQL ¤Ë´Ø¤·¤Æ¡¢ÅŻҥ᡼¥ë¤ÇľÀÜÂбş¤·¤Æ TODO ¥ê¥¹¥È¤òºÇ¿·¤Ë¹¹¿·¤·
-¤Æ¤æ¤¯¤Û¤¦¤¬¤è¤ê¸ú²ÌŪ¤Ç¤¢¤ë¤³¤È¤òÃΤäƤ¤¤Ş¤¹¤Î¤Ç¡¢¥Ğ¥°ÄÉÀ×¥·¥¹¥Æ¥à¤Ï»È¤¤¤Ş¤»
-¤ó¡£¸½¼Â¤Ë¡¢¤³¤Î¥½¥Õ¥È¥¦¥§¥¢¤ÎÃæ¤Ç¥Ğ¥°¤Ï¤½¤ì¤Û¤ÉŤ¯¤Ï¤¤Â³¤±¤Ş¤»¤ó¤·¡¢Â¿¤¯¤Î¥æ
-¡¼¥¶¤Ë±Æ¶Á¤¹¤ë¥Ğ¥°¤ÏÁᵪ¤Ë½¤Àµ¤µ¤ì¤Ş¤¹¡£PostgreSQL¤Î¥ê¥ê¡¼¥¹¤Ç¡¢¤¹¤Ù¤Æ¤ÎÊѹ¹ÅÀ
-¡¢²şÎÉÅÀ¡¢¤½¤·¤Æ¡¢½¤ÀµÅÀ¤òÃΤꤿ¤±¤ì¤Ğ¡¢ CVS ¤Î¥í¥°¥á¥Ã¥»¡¼¥¸¤ò¸«¤Æ¤¯¤À¤µ¤¤¡£¥ê
-¥ê¡¼¥¹¥Î¡¼¥È¤Ë¤µ¤¨¡¢¤³¤Î¥½¥Õ¥È¥¦¥§¥¢¤Ë²Ã¤¨¤é¤ì¤¿¤¹¤Ù¤Æ¤ÎÊѹ¹ÅÀ¤ÏÌÖÍ夵¤ì¤Æ¤¤¤Ş
-¤»¤ó¡£
-
-1.10) ¤É¤Î¤è¤¦¤Êʸ½ñ¤¬¤¢¤ê¤Ş¤¹¤«¡©
-
-ÇÛÉÕ¤ÎÃæ¤Ë¡¢¤¤¤¯¤Ä¤«¤Î¥Ş¥Ë¥å¥¢¥ë¤È¥ª¥ó¥é¥¤¥ó¡¦¥Ş¥Ë¥å¥¢¥ë(¥Ş¥Ë¥å¥¢¥ë¡¦¥Ú¡¼¥¸)¤ª
-¤è¤Ó¤¤¤¯¤Ä¤«¤Î¾®¤µ¤Ê¥Æ¥¹¥ÈÎãÂ꤬´Ş¤Ş¤ì¤Ş¤¹¡£ /doc¥Ç¥£¥ì¥¯¥È¥ê¤ò¤´¤é¤ó¤¯¤À¤µ¤¤¡£
-¤Ş¤¿¡¢¥Ş¥Ë¥å¥¢¥ë¤Ï¡¢ http://www.postgresql.org/docs/¤Ç¥ª¥ó¥é¥¤¥ó¤Ç¤â±ÜÍ÷¤Ç¤­¤Ş
-¤¹¡£
-
- [ÌõÃí:
- JPUG ʸ½ñ¡¦½ñÀÒ´ØÏ¢Ê¬²Ê²ñ¤ÇËİÌõ¤µ¤ì¤¿¥Ş¥Ë¥å¥¢¥ë¤â¤¢¤ê¤Ş¤¹¡£
-
- http://www.postgresql.jp/document/pg830doc/
- ¥¤¥ó¥×¥ì¥¹¤«¤é¡¢
-
- PostgreSQL¥ª¥Õ¥£¥·¥ã¥ë¥Ş¥Ë¥å¥¢¥ë¤È¤·¤Æ½ĞÈǤµ¤ì¤Æ¤¤¤Ş¤¹¡£
- ]
-
-
-¥ª¥ó¥é¥¤¥ó¤Ç»²¾È¤Ç¤­¤ë PostgreSQL ¤ÎËܤâ2ºı¤¢¤ê¤Ş¤¹¡£ http://www.postgresql.org
-/docs/books/awbook.html
-
- [ÌõÃí:
- ¤³¤ÎËܤϡ¢JPUG¡ÖPostgreSQL BookËİÌõʬ²Ê²ñ¡×
- ¤ÇËİÌõ¤µ¤ì¡¢¥Ô¥¢¥½¥ó¤«¤é
- ¡Ö¤Ï¤¸¤á¤Æ¤ÎPostgreSQL¡×¤È¤·¤Æ½ĞÈǤµ¤ì¤Æ¤¤¤Ş¤¹¡£
- ]
-
-
-¤ª¤è¤Ó¡¢ http://www.commandprompt.com/ppbook/¤Ç¤¹¡£
-
- [ÌõÃí:
- Ë®Ìõ¤Ï¡Ö¼ÂÁ© PostgreSQL¡×
- ¤¬¥ª¥é¥¤¥ê¡¼¤«¤é½ĞÈǤµ¤ì¤Æ¤¤¤Ş¤¹¡£
- ]
-
-
-¹ØÆş²Äǽ¤Ê½ñÀÒ¤ÎÌÜÏ¿¤Ï¡¢http://www.postgresql.org/docs/books/ ¤Ë¤¢¤ê¤Ş¤¹¡£
-PostgreSQL µ»½Ñ¾ğÊóµ­»ö¤â¡¢http://wiki.postgresql.org/wiki/
-Community_Generated_Articles%2C_Guides%2C_and_Documentation ¤Ë¤¢¤ê¤Ş¤¹¡£
-
- [ÌõÃí:
- ÆüËܸì¤Î½ñÀÒÅù¤Ë¤Ä¤¤¤Æ¤Ï¡¢ÆüËÜPostgreSQL¥æ¡¼¥¶²ñ¤Î¡¢http://www.postgresql.jp/PostgreSQL/references.html
- ¤â¤´¤é¤ó¤¯¤À¤µ¤¤¡£
- ]
-
-
-¥³¥Ş¥ó¥É¥é¥¤¥ó¤Î¥¯¥é¥¤¥¢¥ó¥È¥×¥í¥°¥é¥àpsql ¤Ë¤â¡¢·¿¡¢±é»»»Ò¡¢´Ø¿ô¡¢½¸Ì󡢤½¤Î¾
-¤Î¾ğÊó¤òÄ´¤Ù¤ë¤¿¤á¤Ë¡¢ÁÇÀ²¤é¤·¤¤ \d ¥³¥Ş¥ó¥É¤¬¤¤¤¯¤Ä¤«¤¢¤ê¤Ş¤¹¡£ \? ¤òÆşÎϤ¹¤ë
-¤ÈÍøÍѲÄǽ¤Ê¥³¥Ş¥ó¥É¤¬É½¼¨¤µ¤ì¤Ş¤¹¡£
-
-²æ¡¹¤Î Web ¥µ¥¤¥È¤Ë¤Ï¡¢¤µ¤é¤ËÂô»³¤Îʸ½ñ¤¬¤¢¤ê¤Ş¤¹¡£
-
- [ÌõÃí:
- 2008ǯ11·î18Æü¡¢PostgreSQLÉáµÚ¤Î¤¿¤á¤Ë°ìÈ̸ş¤±¤Î¾ğÊó¤ò°·¤¦
- ¡ÖLet's Postgres¡×¤È¤¤¤¦¥İ¡¼¥¿¥ë¥µ¥¤¥È¤¬¥ª¡¼¥×¥ó¤·¤Ş¤·¤¿¡£http://lets.postgresql.jp/
- ]
-
-
-1.11) SQL ¤Ï¤É¤¦¤¹¤ì¤Ğ³Ø¤Ù¤Ş¤¹¤«¡©
-
-¤Ş¤º¡¢¾åµ­¤Ç½Ò¤Ù¤¿ PostgreSQL ¤Ë¤Ä¤¤¤Æ¤ÎËܤòÆÉ¤à¤³¤È¤ò¸¡Æ¤¤·¤Æ¤¯¤À¤µ¤¤¡£ The
-Practical SQL Handbook, Bowman Judith S. et al., Addison-Wesley ¤â¿¤¯¤Î¥æ¡¼¥¶
-¤Ë¹¥É¾¤Ç¤¹¡£¤Û¤«¤Ç¤Ï¡¢The Complete Reference SQL, Groff et al., McGraw-Hill ¤â
-¹¥É¾¤Ç¤¹¡£
-
-ÁÇÀ²¤é¤·¤¤¼ê°ú½ñ¤Ï¡¢
-
-http://www.intermedia.net/support/sql/sqltut.shtm
-http://sqlcourse.com
-http://www.w3schools.com/sql/default.asp
-http://mysite.verizon.net/Graeme_Birchall/id1.html
-http://sqlzoo.net ¤Ë¤¢¤ê¤Ş¤¹¡£
-
- [ÌõÃí:
- ÆüËÜPostgreSQL¥æ¡¼¥¶²ñ¤ÎÆüËܸì¤Î»²¹Íʸ¸¥¤Î¾Ò²ğ¥Ú¡¼¥¸
-
-http://www.postgresql.jp/PostgreSQL/references.html
- ¤¬¤¢¤ê¤Ş¤¹¡£
- ËÙÅÄÎѱѻá¤Î¡ÖPostgreSQLÆüËÜ¸ì¥Ş¥Ë¥å¥¢¥ë¡×
- http://www.net-newbie.com/
- ¤Ç¤Ï¥ª¥ó¥é¥¤¥ó¥Ş¥Ë¥å¥¢¥ë¤Î¸¡º÷¤¬¤Ç¤­¤Ş¤¹¡£
- ´İ»³ÉÔÆóÉ×»á¤ÎUNIX ¥Ç¡¼¥¿¥Ù¡¼¥¹ÆşÌç
- http://www.wakhok.ac.jp/DB/DB.html
- ¤â¥ª¥ó¥é¥¤¥ó¤ÇÆÉ¤à¤³¤È¤¬¤Ç¤­¤Ş¤¹¡£
- Nikkei BP IT Pro ¤Ë¤¢¤ëÀаæÃ£É×»á¤Î PostgreSQL ¥¦¥©¥Ã¥Á
- ¤Ç¤ÏËè²ó¿·¤·¤¤¾ğÊó¤ò¤È¤ê¤¢¤²¤Æ¤¤¤Ş¤¹¡£
- ]
-
-
-1.12) ¥Ñ¥Ã¥Á¤òÄ󶡤·¤¿¤ê¡¢³«È¯¥Á¡¼¥à»²²Ã¤¹¤ë¤Ë¤Ï¤É¤¦¤¹¤ì¤Ğ¤è¤¤¤Ç¤¹¤«¡©
-
-¡Ê³«È¯¼Ô¸ş¤±¤Î¡ËDeveloper's FAQ¤ò¤´¤é¤ó¤¯¤À¤µ¤¤¡£
-
-1.13) ¾¤ÎDBMS¤ÈÈæ¤ÙPostgreSQL¤Ï¤É¤¦¤Ê¤Î¤Ç¤¹¤«¡© PostgreSQL¤òÁȤ߹ş¤ß¤Ë»È¤¨¤Ş¤¹
-¤«¡©
-
-¥½¥Õ¥È¥¦¥§¥¢¤òɾ²Á¤¹¤ëÊıË¡¤Ë¤Ï¤¤¤¯¤Ä¤«¤¢¤ê¤Ş¤¹¡£µ¡Ç½¤ÈÀ­Ç½¤È¿®ÍêÀ­¤È¥µ¥İ¡¼¥È¤È
-²Á³Ê¤Ç¤¹¡£
-
-µ¡Ç½(Features)
- PostgreSQL¤Ï¡¢¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¡¢¥µ¥Ö¥¯¥¨¥ê¡¢¥È¥ê¥¬¡¼¡¢¥Ó¥å¡¼¡¢³°Éô¥­¡¼À°¹ç
- À­»²¾È¡¢¤ª¤è¤Ó¡¢ÀöÎı¤µ¤ì¤¿¥í¥Ã¥¯µ¡¹½¤Ê¤É¡¢Â絬ÌϾ¦ÍÑ DBMS¤¬»ı¤Äµ¡Ç½¤ò¤Û¤È¤ó
- ¤É»ı¤Ã¤Æ¤¤¤Ş¤¹¡£¤µ¤é¤Ë PostgreSQL¤Ï¡¢¥æ¡¼¥¶ÄêµÁ·¿¡¢·Ñ¾µ¡¢¥ë¡¼¥ë¡¢¤½¤ì¤«¤é¡¢
- ¥í¥Ã¥¯¶¥¹ç¤ò½Ì¾®¤¹¤ë¥Ş¥ë¥Á¥Ğ¡¼¥¸¥ç¥óƱ»şÀ­À©¸æ¤Ê¤É¡¢¾¦ÍÑDBMS¤â»ı¤Á¹ç¤ï¤»¤Ê
- ¤¤¤è¤¦¤Êµ¡Ç½¤ò¤¤¤¯¤Ä¤«»ı¤Á¹ç¤ï¤»¤Æ¤¤¤Ş¤¹¡£
-À­Ç½(Performance)
- PostgreSQL¤Ï¾¤Î¾¦ÍѤ¢¤ë¤¤¤Ï¥ª¡¼¥×¥ó¥½¡¼¥¹¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤È¸ß³Ñ¤ÎÀ­Ç½¤â»ı¤Á
- ¤Ş¤¹¡£¤¢¤ëÌ̤ǤϤè¤êÁᤫ¤Ã¤¿¤ê¡¢¤Û¤«¤ÎÌ̤ǤϤè¤êÃÙ¤«¤Ã¤¿¤ê¤·¤Ş¤¹¡£Â¾¤Î¥Ç¡¼
- ¥¿¥Ù¡¼¥¹¤ËÈæ¤Ù¤¿À­Ç½¤Ï¡¢¤Õ¤Ä¤¦ +/-10% ¤¯¤é¤¤¤Ç¤·¤ç¤¦¡£
-¿®ÍêÀ­(Reliability)
- ²æ¡¹¤Ï¡¢DBMS¤Î¿®ÍêÀ­¤¬¹â¤¯¤Ê¤¯¤Æ¤Ï¤½¤Î²ÁÃͤ¬Ìµ¤¤¤³¤È¤òÍı²ò¤·¤Æ¤Ş¤¹¡£½½Ê¬¥Æ
- ¥¹¥È¤·¤Æ¡¢°ÂÄꤷ¤¿¥³¡¼¥É¤ò¥Ğ¥°¤òºÇ¾®¤Ë¤·¤Æ¤«¤é¥ê¥ê¡¼¥¹¤¹¤ë¤è¤¦¤ËÅØ¤á¤Æ¤Ş¤¹
- ¡£¤½¤ì¤¾¤ì¤Î¥ê¥ê¡¼¥¹¤Ï¾¯¤Ê¤¯¤È¤â1 ¥«·î°Ê¾å¤Î¥Ù¡¼¥¿¡¦¥Æ¥¹¥È¤ò¹Ô¤Ê¤¤¡¢¤³¤ì¤Ş
- ¤Ç¤Î¥ê¥ê¡¼¥¹¤ÎÍúÎò¤¬¡¢À½ÉÊÈǤȤ·¤Æ°ÂÄꤷ¤¿·ø¸Ç¤Ê¥ê¥ê¡¼¥¹¤Ç¤¢¤ë¤³¤È¤òʪ¸ì¤Ã
- ¤Æ¤¤¤Ş¤¹¡£¤³¤ÎʬÌî¤Ç¤Ï¡¢Â¾¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÈÈæ¤Ù¤Æ¤â½¿§¤¬¤Ê¤¤¤³¤È¤Ë¼«¿®¤ò»ı
- ¤Ã¤Æ¤¤¤Ş¤¹¡£
-¥µ¥İ¡¼¥È(Support)
- ²æ¡¹¤Î¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Ï¡¢Áø¶ø¤¹¤ë¤¤¤«¤Ê¤ëÌäÂê¤Ë¤Ä¤¤¤Æ¤â²ò·è¤Ø¤Î¼ê½õ¤±¤ò¤·
- ¤Æ¤¯¤ì¤ë¡¢³«È¯¼Ô¤ä¥æ¡¼¥¶¤ÎÂ礭¤Ê½¸¤Ş¤ê¤Ø¤ÎÀÜÅÀ¤òÄ󶡤·¤Æ¤¤¤Ş¤¹¡£²æ¡¹¤ÏÌäÂê
- ¤Î²ò·è¤òÊݾڤ¹¤ë¤³¤È¤Ï¤Ç¤­¤Ş¤»¤ó¤¬¡¢¾¦Íѥǡ¼¥¿¥Ù¡¼¥¹¤Ç¤¢¤Ã¤Æ¤â¾ï¤Ë²ò·è¤µ¤ì
- ¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Ş¤»¤ó¡£³«È¯¼Ô¤ä¡¢¥æ¡¼¥¶¡¦¥³¥ß¥å¥Ë¥Æ¥£¡¢¥Ş¥Ë¥å¥¢¥ëÎà¡¢¤½¤ì¤Ë
- ¡¢¥½¡¼¥¹¥³¡¼¥É¤Ê¤É¤ØÄ¾ÀÜ¥¢¥¯¥»¥¹¤Ç¤­¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢PostgreSQL¤Î¥µ¥İ¡¼¥È¤Ï
- ¡¢Â¾¤ÎDBMS ¥µ¥İ¡¼¥È¤è¤ê¤âÍ¥¤ì¤¿¤â¤Î¤È¤Ê¤Ã¤Æ¤¤¤Ş¤¹¡£¸æÍ×˾¤ËÅú¤¨¤Æ¡¢»öÊÁËè¤Î
- ¾¦ÍÑ¥µ¥İ¡¼¥È¤Ê¤É¤â¤¢¤ê¤Ş¤¹¡ÊFAQ1.7Àá¤ò¤´¤é¤ó¤¯¤À¤µ¤¤¡Ë¡£
-²Á³Ê(Price)
- PostgreSQL¤ÎÍøÍѤϡ¢¾¦ÍѤǤâÈó¾¦ÍѤǤ⡢¤¹¤Ù¤ÆÌµÎÁ¤Ç¤¹¡£¾åµ­¤Ë¼¨¤·¤Æ¤¢¤ëBSD
- ¥¹¥¿¥¤¥ë¤Î»ÈÍѵöÂú¤Ë³°¤ì¤Ê¤¤¸Â¤ê¡¢PostgreSQL¤Î¥³¡¼¥É¤òÀ©¸Â̵¤·¤Ç¾¦ÉʤËÁȤß
- ¹ş¤à¤³¤È¤¬¤Ç¤­¤Ş¤¹¡£
-
-PostgreSQL¤Ï¥¯¥é¥¤¥¢¥ó¥È¡¿¥µ¡¼¥Ğ¡¦¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤ÇÀ߷פµ¤ì¤Æ¤¤¤Æ¡¢¥¯¥é¥¤¥¢¥ó¥È
-¤È¥µ¡¼¥Ğ¤ª¤è¤Ó¤½¤ì¤òÊä½õ¤¹¤ë¤¤¤í¤¤¤í¤Ê¥×¥í¥»¥¹¤¬ÊÌ¡¹¤ËÁö¤ë¤³¤È¤¬Í׵ᤵ¤ì¤Ş¤¹¡£
-¿¤¯¤ÎÁȤ߹ş¤ß¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤Ï¤³¤Î¤è¤¦¤ÊÍ×µá¤ò¥µ¥İ¡¼¥È²Äǽ¤Ç¤¹¡£¤·¤«¤·¡¢¤ª»È¤¤
-¤Ë¤Ê¤Ã¤Æ¤¤¤ëÁȤ߹ş¤ß¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤Ë¤è¤Ã¤Æ¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¥µ¡¼¥Ğ¤¬¥¢¥×¥ê¥±¡¼¥·
-¥ç¥ó¡¦¥×¥í¥»¥¹¤ÎÃæ¤ÇÁö¤ë¤³¤È¤òÍ׵ᤵ¤ì¤ë¾ì¹ç¤¬¤¢¤ê¡¢Postgres¤ò»È¤¦¤³¤È¤Ï¤Ç¤­¤Ê
-¤¤¤Î¤Ç¡¢·ÚÎ̤Υǡ¼¥¿¥Ù¡¼¥¹¥½¥ê¥å¡¼¥·¥ç¥ó¤òÁªÂò¤¹¤Ù¤­¤Ç¤¹¡£
-
-1.14) PostgreSQL¤Ï¹ñËè¤ÎºÇ¿·¤Î²Æ»ş´Ö¤ÎÊѹ¹¤ò°·¤¤¤Ş¤¹¤«¡©
-
-¹ç½£¹ñ¤Î²Æ»ş´Ö¤ÎÊѹ¹¤Ï¡¢PostgreSQL¤Î¥ê¥ê¡¼¥¹8.0.4°Ê¹ß[4+]¤È¡¢¤½¤Î¸å¤Î¥á¥¸¥ã¡¼¥ê
-¥ê¡¼¥¹¡¢¤¿¤È¤¨¤Ğ 8.1 ¤Ë¤Ï´Ş¤Ş¤ì¤Æ¤¤¤Ş¤¹¡£¥«¥Ê¥À¤È¥ª¡¼À¾Éô¥¹¥È¥é¥ê¥¢¤ÎÊѹ¹¤Ï¡¢
-8.0.[10+], 8.1.[6+] ¤ª¤è¤Ó¡¢¤½¤Î¸å¤Î¥á¥¸¥ã¡¼¥ê¥ê¡¼¥¹¤Î¤¹¤Ù¤Æ¤Ë´Ş¤Ş¤ì¤Ş¤¹¡£8.0¤è
-¤êÁ°¤ÎPosrgreSQL¤Ç¤Ï¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Î¥¿¥¤¥à¥¾¡¼¥ó¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò²Æ»ş´Ö
-¾ğÊó¤Î¤¿¤á¤Ë»È¤Ã¤Æ¤¤¤Ş¤¹¡£
-
-¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬
-
-1.15) PostgreSQL¤Î¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Î¹ØÆÉ¤ò¤ä¤á¤ë¤Ë¤Ï¤É¤¦¤¹¤ì¤Ğ¤è¤¤¤Ç¤¹¤«¡©¤Ş¤¿
-¡¢ÅŻҥ᡼¥ë¤ò½ÅÊ£¤·¤Æ¼õ¤±¼è¤é¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Ş¤¹¤«¡©
-
-PostgreSQL¤ÎMajordomo ¥Ú¡¼¥¸¤«¤é¡¢PostgreSQL¤Ë´Ø¤¹¤ëÊ£¿ô¤Î¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Î¹Ø
-ÆÉ¤Î³«»Ï¤ÈÃæ»ß¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Ş¤¹¡£¡Ê¥í¥°¥¤¥ó¤¹¤ë¤¿¤á¤Ë¤ÏMajaordomo¤«¤é
-Á÷¤é¤ì¤ë¸æËܿͤΥѥ¹¥ï¡¼¥É¤¬É¬Í×¤Ë¤Ê¤ê¤Ş¤¹¡£¡Ë
-
-PostgreSQLno¤¹¤Ù¤Æ¤Î¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Ç¤Ï¡¢ÊÖ¿®¤Ï¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤È¤«¤Ä¸µ¤Î¥á¡¼
-¥ë¤ÎÅê¹Æ¼Ô¤ØÁ÷¤é¤ì¤ë¤è¤¦¤Ë¹½À®¤·¤Æ¤¢¤ê¤Ş¤¹¡£¤³¤ì¤Ë¤êÍøÍѼԤϡ¢¤â¤Ã¤È¤â¿×®¤Ë¥á
-¡¼¥ë¤Ø¤ÎÊÖ¿®¤ò¼õ¤±¤é¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Ş¤¹¡£´û¤ËľÀܼõ¤±¼è¤Ã¤Æ¤¤¤ë¥á¡¼¥ë¤ò¡¢¥ê
-¥¹¥È¤«¤é½ÅÊ£¤·¤Æ¼õ¤±¼è¤ê¤¿¤¯¤Ê¤¤¾ì¹ç¤Ï¡¢Majordomo ¤ÎChange Settings¥Ú¡¼¥¸¤«¤é¡¢
-eliminatecc¤ò¥Á¥§¥Ã¥¯¤·¤Ş¤¹¡£¤Ş¤¿¡¢selfcopy¤Î¥Á¥§¥Ã¥¯¤ò¤Ï¤º¤¹¤³¤È¤Ç¡¢¼«Ê¬¤ÎÁ÷¤Ã
-¤¿¥á¡¼¥ë¤Î¥³¥Ô¡¼¤ò¼õ¤±¼è¤é¤Ê¤¤¤è¤¦¤Ë¤â¤Ç¤­¤Ş¤¹¡£
-
- ¥æ¡¼¥¶¡¦¥¯¥é¥¤¥¢¥ó¥È¤Î¼ÁÌä
-
-2.1) PostgreSQL ¤Ë¤Ï¤É¤ó¤Ê¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤¬»È¤¨¤Ş¤¹¤«¡©
-
-PostgreSQL ¤Î¥¤¥ó¥¹¥È¡¼¥ë¤Ë´Ş¤Ş¤ì¤ëʪ¤ÏC¤ÈÁȹş¤ß C¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤À¤±¤Ç¤¹¡£
-¤½¤Î¾¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ÏÆÈΩ¤·¤¿¥×¥í¥¸¥§¥¯¥È¤Ç¡¢ÊÌ¡¹¤Ë¥À¥¦¥ó¥í¡¼¥É¤µ¤ì¤Ş¤¹¡£
-ʬ¤«¤ì¤ë¤³¤È¤Ç¡¢¤½¤ì¤¾¤ì¤Î³«È¯¥Á¡¼¥à¤¬ÆÈ¼«¤Î¥ê¥ê¡¼¥¹¥¹¥±¥¸¥å¡¼¥ë¤ò»ı¤Ä¤³¤È¤¬µö
-¤µ¤ì¤Ş¤¹¡£
-
-PHP ¤Î¤è¤¦¤Ê¤¤¤¯¤Ä¤«¤Î¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Ï¡¢ PostgreSQL¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò´Ş¤ó
-¤Ç¤¤¤Ş¤¹¡£Perl, TCL, Python, ¤½¤·¤Æ¡¢¤½¤Î¤Û¤«¤ÎÍøÍѲÄǽ¤Ê¸À¸ì¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹
-¤Ï¡¢http://pgfoundry.org ¤Î Drivers/Interfaces ¤ÎÀá¤ÎÃæ¤È¥¤¥ó¥¿¡¼¥Í¥Ã¥È¤Î¸¡º÷¤Ç
-¤ß¤Ä¤±¤é¤ì¤Ş¤¹¡£
-
-2.2) PostgreSQL ¤ò Web ¥Ú¡¼¥¸¤ÈÏ¢·È¤µ¤»¤ë¤Ë¤Ï¤É¤ó¤Ê¥Ä¡¼¥ë¤¬¤¢¤ê¤Ş¤¹¤«¡©
-
-¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò΢¤Ë»ı¤Ä Web ¥Ú¡¼¥¸¤Ë¤Ä¤¤¤Æ¤ÎÁÇÀ²¤é¤·¤¤¾Ò²ğ¤¬¡¢
-http://www.webreview.com¤Ë¤¢¤ê¤Ş¤¹¡£
-
-Web ¤Ø¤Î³ÈÄ¥¤Î¤¿¤á¤Ë¤Ï¡¢PHP(http://www.php.net/) ¤¬Âî±Û¤·¤¿¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤È¤Ê
-¤Ã¤Æ¤¤¤Ş¤¹¡£
-
- [ÌõÃí:
- PHP¤Ë´Ø¤¹¤ëÆüËܸì¤Î¾ğÊó¤Ï¡¢2000ǯ4·î19Æü¤Ëȯ­¤·¤¿ÆüËÜPHP¥æ¡¼¥¶²ñ¤Î¥µ¥¤¥È
- http://www.php.gr.jp/
- ¤¢¤ë¤¤¤Ï¡¢×¢Àî Îव¤ó¤Î¥µ¥¤¥È
- http://www.geocities.jp/rui_hirokawa/php/
- ¤Ë¤«¤Ê¤ê¤Ş¤È¤á¤é¤ì¤Æ¤¤¤Ş¤¹¡£
- ]
-
-
-½èÍı¤¬Ê£»¨¤Ê¾ì¹ç¡¢Â¿¤¯¤Î¿Í¤Ï Perl ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤È CGI.pm ¤« mod_perl ¤ò»È¤¤
-¤Ş¤¹¡£
-
-2.3) PostgreSQL ¤Ë¥°¥é¥Õ¥£¥«¥ë¡¦¥æ¡¼¥¶¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ï¤¢¤ê¤Ş¤¹¤«¡©
-
-¾¦ÍѤȥª¡¼¥×¥ó¥½¡¼¥¹³«È¯¼Ô¤Ë¤è¤ë¤â¤ÎξÊı¤Ç¡¢PostgreSQL¤Ë¤Ï¿¤¯¤ÎGUI¥Ä¡¼¥ë¤¬ÍøÍÑ
-²Äǽ¤Ç¡¢¾ÜºÙ¤Ê¥ê¥¹¥È¤Ï¡¢ PostgreSQL GUI ¥Ä¡¼¥ë¤Ë¤Ä¤¤¤Æ¤Î¥³¥ß¥å¥Ë¥Æ¥£¥¬¥¤¥É¤Ë¤Æ
-¤´¤é¤ó¤¯¤À¤µ¤¤¡£
-
- [ÌõÃí:
- pgAdmin3 ¤ÏPostgreSQLɸ½àGUI´ÉÍı¥Ä¡¼¥ë¤Ç¡¢WindowsÈÇ(PostgreSQL
- for Windows) ¤ËƱº­¤µ¤ì¤Æ¤¤¤Ş¤¹¡£¾Ü¤·¤¤¾ğÊó¤Ï¡¢
- http://www.pgadmin.org/¤Ë¤¢¤ê¤Ş¤¹¡£
- ]
-
-
-¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬
-
- ´ÉÍı¾å¤Î¼ÁÌä
-
-3.1) ¤É¤Î¤è¤¦¤Ë¤¹¤ì¤Ğ /usr/local/pgsql °Ê³°¤Î¾ì½ê¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤Ç¤­¤Ş¤¹¤«¡©
-
-´Êñ¤ÊÊıË¡¤Ï¡¢ configure ¤òÁö¤é¤»¤ë¤È¤­¤Ë --prefix ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤³¤È¤Ç¤¹
-¡£
-
-3.2) ¾¤Î¥Û¥¹¥È¤«¤é¤ÎÀܳ¤Ï¤É¤Î¤è¤¦¤ËÀ©¸æ¤·¤Ş¤¹¤«¡©
-
-´ûÄêÃͤǤϡ¢PostgreSQL ¤Ï Unix ¥É¥á¥¤¥ó¥½¥±¥Ã¥È¡¢¤Ş¤¿¤Ï¡¢TCP/IPÀܳ¤Î¥í¡¼¥«¥ë¥Ş
-¥·¥ó¤«¤é¤ÎÀܳ¤·¤«µö¤·¤Ş¤»¤ó¡£postgresql.conf ¤ÎÃæ¤Î listen_addresses ¤ò½¤Àµ¤·
-¡¢¤«¤Ä¡¢$PGDATA/pg_hba.conf ¥Õ¥¡¥¤¥ë¤òŬÀڤ˾¤·¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¥µ¡¼¥Ğ¤òºÆµ¯Æ°¤·
-¤Æ¡¢¥Û¥¹¥È¥Ù¡¼¥¹¤Îǧ¾Ú¤òÍ­¸ú¤Ë¤·¤Ê¤¤¤«¤®¤ê¤Ï¡¢Â¾¤Î¥Ş¥·¥ó¤«¤é¤ÏÀܳ¤Ç¤­¤Ê¤¤¤Ç¤·
-¤ç¤¦¡£
-
-3.3) ¤è¤êÎɤ¤À­Ç½¤òÆÀ¤ë¤¿¤á¤Ë¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¡¦¥¨¥ó¥¸¥ó¤ò¤É¤Î¤è¤¦¤ËÄ´À°¤·¤Ş¤¹¤«
-¡©
-
-À­Ç½²şÁ±¤Î²ÄǽÀ­¤Î¤¢¤ê¤½¤¦¤Ê¼ç¤ÊÎΰ褬3¤Ä¤¢¤ê¤Ş¤¹¡§
-
-¥¯¥¨¥ê¤ÎÊѹ¹
- ¥¯¥¨¥ê¤ò½¤Àµ¤·¤Æ¤è¤êÎɤ¤À­Ç½¤òÆÀ¤ë¤³¤È¤ò´Ş¤ß¤Ş¤¹¡§
- ¢¢ ¼°¤ª¤è¤ÓÉôʬ¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò´Ş¤à¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¤òºîÀ®
- ¢¢ Ê£¿ô¤ÎINSERT¤Î¤«¤ï¤ê¤ËCOPY¤ò»ÈÍÑ
- ¢¢ Ê£¿ô¤Îʸ¤ò¥°¥ë¡¼¥×²½¤·¡¢1¤Ä¤Î¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤Ë¤·¤Æ¥³¥ß¥Ã¥È¤Î¥ª¡¼¥Ğ¥Ø¥Ã
- ¥É¤òºï¸º
- ¢¢ ¥¤¥ó¥Ç¥Ã¥¯¥¹¤«¤é¤«¤éÂô»³¤Î¥í¥¦¤ò¼è¤ê½Ğ¤¹¤È¤­¤ÏCLUSTER¤ò»ÈÍÑ
- ¢¢ ¥¯¥¨¥ê¤Î½ĞÎϤΥµ¥Ö¥»¥Ã¥È¤òÊÖ¤¹¤¿¤á¤ËLIMIT¤ò»ÈÍÑ
- ¢¢ ½àÈ÷¤µ¤ì¤Æ¤¤¤ë¥¯¥¨¥ê¤ò»ÈÍÑ
- ¢¢ ¥ª¥×¥Æ¥£¥Ş¥¤¥¶¤ÎÀµ³Î¤ÊÅı·×¤ò°İ»ı¤¹¤ë¤¿¤á¤ËANALYZE¤ò»ÈÍÑ
- ¢¢ VACUUM ¤Ş¤¿¤Ï pg_autovacuum ¤Î¾ïÍÑ
- ¢¢ Â礭¤Ê¥Ç¡¼¥¿Êѹ¹¤Î¤¢¤ë¤È¤­¤Ï¥¤¥ó¥Ç¥Ã¥¯¥¹¤òºï½ü
-
-
-¥µ¡¼¥Ğ¹½À®
- postgresql.conf¤ÎÀßÄê¤Î¤¤¤¯¤Ä¤«¤ÏÀ­Ç½¤Ë±Æ¶Á¤·¤Ş¤¹¡£¾Ü¤·¤¯¤Ï¡¢
- Administration Guide/Server Run-time Environment/Run-time Configuration ¤Î
- Á´·ï¥ê¥¹¥È¤ò¤´¤é¤ó¤¯¤À¤µ¤¤( JPUG¥µ¥¤¥È¤ÎÆüËܸìÈÇ¡¢¥µ¡¼¥Ğ¤Î¹½À®)¡£¤½¤·¤Æ¡¢²ò
- Àâ¤È¤·¤Æ¡¢ http://www.varlena.com/varlena/GeneralBits/Tidbits/
- annotated_conf_e.html ¤ª¤è¤Ó¡¢ http://www.varlena.com/varlena/GeneralBits/
- Tidbits/perf.html ¤ò¤´¤é¤ó¤¯¤À¤µ¤¤¡£
-
-¥Ï¡¼¥É¥¦¥§¥¢¤ÎÁªÄê
- À­Ç½¤Ë¤ª¤±¤ë¥Ï¡¼¥É¥¦¥§¥¢¤Î±Æ¶Á¤Ï http://www.powerpostgresql.com/PerfList/
- ¤È¡¢ http://momjian.us/main/writings/pgsql/hw_performance/index.html (JPUG
- ¥µ¥¤¥È¤ÎÆüËܸìÈÇ) ¤Ë½Ò¤Ù¤é¤ì¤Æ¤¤¤Ş¤¹¡£
-
-
- [ÌõÃí:
- JPUGÍı»öŤÎÊÒ²¬ÍµÀ¸»á¤Ë¤è¤ë¡¢¡Öº£¤¹¤°¤Ç¤­¤ëPostgreSQL¥Á¥å¡¼¥Ë¥ó¥°¡×
- ¤È¤¤¤¦¥³¡¼¥Ê¡¼¤¬ ThinkIT ¥µ¥¤¥È¤Ë¤¢¤ê¡¢¼Âºî¶È¤Î»²¹Í¤Ë¤Ê¤ê¤Ş¤¹¡£
- http://www.thinkit.co.jp/free/tech/10/1/1.html
- ]
-
-
-3.4) ¤É¤Î¤è¤¦¤Ê¥Ç¥Ğ¥°µ¡Ç½¤¬»È¤¨¤Ş¤¹¤«¡©
-
-¥µ¡¼¥Ğ¹½À®ÊÑ¿ô¤Ë¤Ä¤¤¤Æ¤Ï¡¢ href="http://www.postgresql.org/docs/current/
-interactive/runtime-config-logging.html">http://www.postgresql.org/docs/current
-/interactive/runtime-config-logging.html ¤Ë¼¨¤µ¤ì¤ë¤è¤¦¤Ë¿¤¯¤Î log_* ¤¬¤¢¤ê¡¢
-¥¯¥¨¥ê¤È¥×¥í¥»¥¹¤ÎÅı·×¾ğÊó¤ò½ĞÎϤ¹¤ë¤³¤È¤¬¤Ç¤­¡¢¥Ç¥Ğ¥°¤äÀ­Ç½Â¬Äê¤Ë¤Ï¤È¤Æ¤âÊØÍø
-¤Ç¤¹¡£
-
-3.5) Àܳ¤·¤è¤¦¤È¤¹¤ë¤È¤­¤Ë 'Sorry, too many clients' ¤¬½Ğ¤ë¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
-
-´ûÄê¤Ç¤ÎÀ©¸Â¤Ç¤¢¤ë 100 ¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¥»¥Ã¥·¥ç¥ó¤Ë㤷¤Æ¤·¤Ş¤Ã¤Æ¤¤¤Ş¤¹¡£¥µ¡¼¥Ğ¡¼
-¤ÎƱ»şÀܳ¤Ç¤­¤ë¥Ğ¥Ã¥¯¥¨¥ó¥É¥×¥í¥»¥¹¤ÎÀ©¸ÂÃͤòÁı¤ä¤¹É¬Íפ¬¤¢¤ê¤Ş¤¹¡£
-postgresql.conf ¤ÎÃæ¤Îmax_connections ¤ÎÃͤòÊѹ¹¤·¤Æ¥µ¡¼¥Ğ¤òºÆµ¯Æ°¤¹¤ë¤³¤È¤Ç²Ä
-ǽ¤Ë¤Ê¤ê¤Ş¤¹¡£
-
-3.6) PostgreSQL¤Î¥¢¥Ã¥×¥°¥ì¡¼¥É¤Î¼ê½ç¤Ï¤É¤¦¤Ê¤ê¤Ş¤¹¤«¡©
-
-¥Ğ¡¼¥¸¥ç¥óÈÖ¹æÉÕ¤±¤ÎÊı¿Ë¤Ë¤Ä¤¤¤Æ¡¢¹¹¿·Á´È̤ˤĤ¤¤Æ¤Î²òÀâ¤Ïhttp://
-www.postgresql.org/support/versioning ¤ò¡¢¤½¤·¤Æ¡¢¥¢¥Ã¥×¥°¥ì¡¼¥É¤Ë¤Ä¤¤¤Æ¤Î°ìÈÌ
-Ū¤ÊÀâÌÀ¤Ï http://www.postgresql.org/docs/current/static/install-upgrading.html
-¤ò¤´Í÷¤¯¤À¤µ¤¤¡£
-
-[ÌõÃí¡§
- ¥¢¥Ã¥×¥°¥ì¡¼¥É¤Ë¤Ä¤¤¤Æ¤ÎÏÂÌõÈǤϲ¼µ­¤Ë¤¢¤ê¤Ş¤¹¡£
- http://www.postgresql.jp/document/current/html/install-upgrading.html
-]
-
-[ÌõÃí¡§
- ¸¶Ê¸¤Ç¤Ï¡¢²¼µ­¤ÎÆâÍÆ¤ÏÆÈΩ¤·¤¿¥Ú¡¼¥¸¤Ë°Ü¤µ¤ì¡¢ºï½ü¤µ¤ì¤Æ¤¤¤Ş¤¹¡£
-
-¿·¤·¤¤µ¡Ç½¤òÀ¹¤ê¹ş¤àPostgreSQL¤Î¥á¥¸¥ã¡¼¥ê¥ê¡¼¥¹¤Ï¤À¤¤¤¿¤¤Ç¯¤Ë1²óÄøÅٹԤʤ¤¤Ş¤¹
-¡£¥á¥¸¥ã¡¼¥ê¥ê¡¼¥¹¤Ï¡¢¤¿¤È¤¨¤Ğ¡¢8.1¤«¤é8.2¤Ø¤Î¤è¤¦¤Ë¡¢¥Ğ¡¼¥¸¥ç¥óÈÖ¹æ¤Î1ÈÖÌܤ«2
-ÈÖÌܤÎÉôʬ¤òÁı¤ä¤·¤Æ¤æ¤­¤Ş¤¹¡£
-
-PostgreSQL¤Î¥á¥¸¥ã¡¼¥ê¥ê¡¼¥¹¤ÏÄ̾¥·¥¹¥Æ¥à¥Æ¡¼¥Ö¥ë¤È¥Ç¡¼¥¿¤ÎÆâÉô¥Õ¥©¡¼¥Ş¥Ã¥È
-¤òÊѹ¹¤·¤Ş¤¹¡£¤³¤ì¤é¤ÎÊѹ¹¤Ï¤¿¤¤¤Æ¤¤¤ÏÊ£»¨¤Ê¤Î¤Ç¤Ç¡¢¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤Î¸åÊı¸ß´¹À­
-¤ò°İ»ı¤·¤¿¤ê¤Ï¤·¤Ş¤»¤ó¡£¥á¥¸¥ã¡¼¥¢¥Ã¥×¥°¥ì¡¼¥É¤Î¤¿¤á¤Ë¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥À¥ó¥×/
-¥ê¥í¡¼¥É¤¬É¬Í×¤Ë¤Ê¤ê¤Ş¤¹¡£
-
-¥Ş¥¤¥Ê¡¼¥ê¥ê¡¼¥¹¤Ï¡¢¤¿¤È¤¨¤Ğ¡¢8.1.5 ¤«¤é8.1.6¤Ø¤Î¤è¤¦¤Ë¡¢¥Ğ¡¼¥¸¥ç¥óÈÖ¹æ¤Î3ÈÖÌÜ
-¤ÎÃͤòÁı¤ä¤·¤Ş¤¹¡£PostgreSQL¥Á¡¼¥à¤Ï¡¢¥Ş¥¤¥Ê¡¼¥ê¥ê¡¼¥¹¤ËÂФ·¤Æ¤Ï¡¢¥Ğ¥°¥Õ¥£¥¯¥¹
-¤·¤«¹Ô¤Ê¤¤¤Ş¤»¤ó¡£¤¹¤Ù¤Æ¤Î¥æ¡¼¥¶¤Ï¡¢¤Ç¤­¤ë¤À¤±ºÇ¿·¤Î¥Ş¥¤¥Ê¡¼¥ê¥ê¡¼¥¹¤Ë¹¹¿·¤¹¤Ù
-¤­¤Ç¤¹¡£¥¢¥Ã¥×¥°¥ì¡¼¥É¤Ë¤Ï¡¢¾ï¤Ë¥ê¥¹¥¯¤¬¤Ä¤­¤â¤Î¤Ç¤¹¤«¤é¡¢PostgreSQL¤Î¥Ş¥¤¥Ê¡¼
-½¤Àµ¥ê¥ê¡¼¥¹¤Ç¤Ï¡¢ÉÑÈˤËȯÀ¸¤·¤¿¤ê¡¢¥»¥­¥å¥ê¥Æ¥£¤Ë´Ø·¸¤·¤¿¤ê¡¢¥Ç¡¼¥¿¤¬¤Ä¤Ö¤ì¤ë
-¥Ğ¥°¤À¤±¤ò½¤Àµ¤·¡¢¥¢¥Ã¥×¥°¥ì¡¼¥É¤Î¥ê¥¹¥¯¤òºÇ¾®¸Â¤Ë¤È¤É¤á¤Ş¤¹¡£²æ¡¹¤Î¥³¥ß¥å¥Ë¥Æ
-¥£¤Ç¤Ï¡¢¥¢¥Ã¥×¥°¥ì¡¼¥É¤¹¤ë¥ê¥¹¥¯¤è¤ê¤â¡¢¥¢¥Ã¥×¥°¥ì¡¼¥É¤·¤Ê¤¤¥ê¥¹¥¯¤Î¤Û¤¦¤¬¹â¤¤
-¤È¹Í¤¨¤Æ¤¤¤Ş¤¹¡£
-
-¥Ş¥¤¥Ê¡¼¥ê¥ê¡¼¥¹¤Î¥¢¥Ã¥×¥°¥ì¡¼¥É¤Ë¤Ï¥À¥ó¥×¤È¥ê¥¹¥È¥¢¤ÎɬÍפϤʤ¯¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹
-¥µ¡¼¥Ğ¤òÄä»ß¤·¤Æ¡¢¥¢¥Ã¥×¥Ç¡¼¥È¤µ¤ì¤¿¥Ğ¥¤¥Ê¥ê¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¡¢¥µ¡¼¥Ğ¤ò¥ê¥¹¥¿¡¼
-¥È¤·¤Ş¤¹¡£
-
-]
-
-3.7) ¥Ï¡¼¥É¥¦¥§¥¢¤Ë¤Ï¤É¤Î¤è¤¦¤Ê¥³¥ó¥Ô¥å¡¼¥¿¤ò»È¤¨¤Ğ¤è¤¤¤Ç¤¹¤«¡©
-
-PC¥Ï¡¼¥É¥¦¥§¥¢¤Ï¤Û¤È¤ó¤É¸ß´¹À­¤¬¤¢¤ê¤Ş¤¹¤Î¤Ç¡¢¤Û¤È¤ó¤É¤Î¿Í¤Ï¡¢¤¹¤Ù¤Æ¤ÎPC¥Ï¡¼¥É
-¥¦¥§¥¢¤¬Æ±¤¸ÉʼÁ¤À¤È»×¤¤¹ş¤à·¹¸ş¤¬¤¢¤ê¤Ş¤¹¡£¤·¤«¤·¡¢¤½¤ì¤Ï´Ö°ã¤¤¤Ç¤¹¡£ECC RAM¡¢
-SCSI¡¢¤ª¤è¤Ó¡¢¹âÉʼÁ¥Ş¥¶¡¼¥Ü¡¼¥É¤Ï¡¢°Â¤¤¥Ï¡¼¥É¥¦¥§¥¢¤ËÈæ¤Ù¤ë¤È¡¢¤è¤ê¿®ÍêÀ­¤¬¹â
-¤¯¡¢¤è¤êÀ­Ç½¤âÎɤ¤¤Î¤Ç¤¹¡£ PostgreSQL ¤Ï¤Û¤È¤ó¤É¤Î¥Ï¡¼¥É¥¦¥§¥¢¤Ç²ÔƯ¤·¤Ş¤¹¤¬¡¢
-¿®ÍêÀ­¤äÀ­Ç½¤¬½ÅÍפʾì¹ç¤Ï¡¢»ÈÍÑÃæ¤Î¥Ï¡¼¥É¥¦¥§¥¢¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤ÆÄ´ºº¤¹¤ë¤³
-¤È¤¬¸­ÌÀ¤Ç¤¹¡£¥Ğ¥Ã¥Æ¥ê¡¼¥Ğ¥Ã¥¯¥¢¥Ã¥×ÉÕ¤­¤Î¥­¥ã¥Ã¥·¥å¤ò»ı¤Ä¥Ç¥£¥¹¥¯¥³¥ó¥È¥í¡¼¥é
-¤âÌò¤ËΩ¤Á¤Ş¤¹¡£²æ¡¹¤Î¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¾å¤Ç¤â¥Ï¡¼¥É¥¦¥§¥¢¥ª¥×¥·¥ç¥ó¤Î¥È¥ì¡¼¥É¥ª
-¥Õ¤Ë¤Ä¤¤¤ÆµÄÏÀ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Ş¤¹¡£
-
-¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬
-
- Áàºî¾å¤Î¼ÁÌä
-
-4.1) ºÇ½é¤Î¿ô¥í¥¦¤Î¤ß¤ò SELECT¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Ş¤¹¤«¡©¥é¥ó¥À¥à¤Ê¥í¥¦¡©
-
-¼èÆÀ¤·¤¿¤¤¥í¥¦¤¬¤Û¤ó¤Î¿ô¹Ô¤Ç¡¢SELECT ¤Î¼Â¹Ô»ş¤Ë¼èÆÀ¤¹¤ë¥í¥¦¤Î¿ô¤¬Ê¬¤«¤Ã¤Æ¤¤¤ì¤Ğ
-LIMIT ¤ò»È¤¤¤Ş¤·¤ç¤¦¡£¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬ ORDER BY ¤È¥Ş¥Ã¥Á¤¹¤ì¤Ğ¡¢¥¯¥¨¥êÁ´ÂΤò(´İ¤´
-¤È)¼Â¹Ô¤·¤Ê¤¯¤Æ¤âºÑ¤à¾ì¹ç¤â¤¢¤ê¤Ş¤¹¡£SELECT ¤¹¤ë»şÅÀ¤Ç¥í¥¦¤Î¿ô¤¬ÉÔÌÀ¤Ê¤é¡¢¥«¡¼
-¥½¥ë¤ò»È¤Ã¤Æ FETCH ¤·¤Ş¤·¤ç¤¦¡£
-
-¥é¥ó¥À¥à¤Ë¥í¥¦¤òSELECT¤¹¤ë¤Ë¤Ï¡¢¼¡¤Îʸ¤ò»È¤¤¤Ş¤¹¡§
-
- SELECT col
- FROM tab
- ORDER BY random()
- LIMIT 1;
-
-4.2) ÄêµÁ¤µ¤ì¤¿¥Æ¡¼¥Ö¥ë¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¡¢¤ª¤è¤Ó¡¢¥æ¡¼¥¶¤ò¤É¤Î¤è¤¦¤Ë
-¤·¤Æ¸«¤Ä¤±½Ğ¤·¤Ş¤¹¤«¡©psql¤Ç»È¤ï¤ì¤Æ¤¤¤ë¥¯¥¨¥ê¤òɽ¼¨¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Ş¤¹¤«¡©
-
-psql ¤ÎÃæ¤Ç \dt¥³¥Ş¥ó¥É¤ò»È¤Ã¤Æ¥Æ¡¼¥Ö¥ë¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¤Ş¤¹¡£psql¤ÎÃæ¤Ç \? ¤ò»È
-¤Ã¤Æ¡¢¥³¥Ş¥ó¥É¤ÎÁ´¥ê¥¹¥È¤òÄ´¤Ù¤ë¤³¤È¤¬¤Ç¤­¤Ş¤¹¡£°ìÊı¤Ç¡¢psql ¤Î¥½¡¼¥¹¥³¡¼¥É¤Ç¡¢
-¥Ğ¥Ã¥¯¥¹¥é¥Ã¥·¥å¥³¥Ş¥ó¥É¤ò½ĞÎϤ¹¤ë pgsql/src/bin/psql/describe.c ¥Õ¥¡¥¤¥ë¤òÆÉ¤à
-¤³¤È¤â¤Ç¤­¤Ş¤¹¡£¤½¤ÎÃæ¤Ë¤Ï¡¢ SQL ¥³¥Ş¥ó¥É¤òÀ¸À®¤¹¤ëÉôʬ¤â´Ş¤Ş¤ì¤Ş¤¹¡£¤Ş¤¿¡¢ -E
-¥ª¥×¥·¥ç¥ó¤òÉÕ¤±¤Æ psql ¤ò³«»Ï¤¹¤ë¤È¡¢ÆşÎϤµ¤ì¤¿¥³¥Ş¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤Î¥¯¥¨¥ê
-¤ò°õ»ú½ĞÎϤ¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Ş¤¹¡£ PostgreSQL¤Ï SQL ½àµò¤Î INFORMATION SCHEMA ¥¤¥ó
-¥¿¡¼¥Õ¥§¡¼¥¹¤òÄ󶡤·¤Ş¤¹¤Î¤Ç¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë¤Ä¤¤¤Æ¤Î¾ğÊó¤òÌ䤤¹ç¤ï¤»¤ë¤³¤È¤â¤Ç
-¤­¤Ş¤¹¡£
-
-pg_ ¤Ç»Ï¤Ş¤ë¥·¥¹¥Æ¥à¥Æ¡¼¥Ö¥ë¤Ç¤â¤³¤ì¤é¤òµ­½Ò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Ş¤¹¡£
-
-psql -l¤ò»È¤¦¤ÈÁ´¤Æ¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò¥ê¥¹¥È¤·¤Ş¤¹¡£
-
-¤½¤ì¤È¡¢pgsql/src/tutorial/syscat.source ¤ò»î¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£¤½¤³¤Ë¤Ï¡¢¥Ç¡¼¥¿
-¥Ù¡¼¥¹¤Î¥·¥¹¥Æ¥à¥Æ¡¼¥Ö¥ë¤«¤é¾ğÊó¤òÆÀ¤ë¤¿¤á¤ËɬÍ×¤Ê SELECT ʸ¤¬Âô»³¤¢¤ê¤Ş¤¹¡£
-
-4.3) ¥«¥é¥à¤Î¥Ç¡¼¥¿·¿¤òÊѹ¹¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Ş¤¹¤«¡©
-
-¥«¥é¥à¤Î¥Ç¡¼¥¿·¿¤ÎÊѹ¹¤Ï 8.0 °Ê¹ß¤Ç¤Ï¡¢ ALTER TABLE ALTER COLUMN TYPE ¤ò»È¤¦¤³
-¤È¤Ë¤è¤ê´Öñ¤Ë¤Ê¤ê¤Ş¤·¤¿¡£
-
-¤½¤ì¤è¤êÁ°¤Î¥Ğ¡¼¥¸¥ç¥ó¤Ç¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ë¤·¤Ş¤¹:
-
- BEGIN;
- ALTER TABLE tab ADD COLUMN new_col new_data_type;
- UPDATE tab SET new_col = CAST(old_col AS new_data_type);
- ALTER TABLE tab DROP COLUMN old_col;
- COMMIT;
-
-¤³¤ì¤ò¹Ô¤Ê¤Ã¤¿¤È¤­¤Ï¡¢Ëõ¾Ã¤µ¤ì¤¿¹Ô¤¬»È¤Ã¤Æ¤¤¤ë¥Ç¥£¥¹¥¯¶õ´Ö¤ò²ó¼ı¤¹¤ë¤¿¤á¤Ë
-VACUUM FULL tab¤ò¤·¤¿¤Û¤¦¤¬Îɤ¤¤«¤â¤·¤ì¤Ş¤»¤ó¡£
-
-4.4) ¥í¥¦¡¢¥Æ¡¼¥Ö¥ë¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎºÇÂ祵¥¤¥º¤Ï¡©
-
-À©¸Â¤Ï°Ê²¼¤Î¤È¤ª¤ê¤Ç¤¹:
-
- ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎºÇÂ祵¥¤¥º? À©¸Â̵¤· (32 TB ¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤â¸ºß¤·¤Ş
- ¤¹)
- ¥Æ¡¼¥Ö¥ë¤ÎºÇÂ祵¥¤¥º? 32 TB
- ¥í¥¦¤ÎºÇÂ祵¥¤¥º? 400 GB
- ¥Õ¥£¡¼¥ë¥É¤ÎºÇÂ祵¥¤¥º? 1 GB
- ¥Æ¡¼¥Ö¥ëÆâ¤Ç¤ÎºÇÂç¥í¥¦¿ô? À©¸Â̵¤·
- ¥Æ¡¼¥Ö¥ëÆâ¤Ç¤ÎºÇÂ祫¥é¥à¿ô? ¥«¥é¥à¤Î·¿¤Ë¤è¤Ã¤Æ 250-1600
- ¥Æ¡¼¥Ö¥ëÆâ¤Ç¤ÎºÇÂ祤¥ó¥Ç¥Ã¥¯¥¹ À©¸Â̵¤·
- ¿ô?
-
-¤â¤Á¤í¤ó¡¢¤³¤ì¤é¤Ï¼Âºİ¤Ï̵À©¸Â¤Ç¤Ï¤Ê¤¯¡¢¥Ç¥£¥¹¥¯ÍÆÎ̤ȥá¥â¥ê¡¼¤ä¥¹¥ï¥Ã¥×¥¹¥Ú¡¼
-¥¹¤ÎÂ礭¤µ¤Ë¤è¤êÀ©¸Â¤µ¤ì¤Ş¤¹¡£À­Ç½¤Ï¤³¤ì¤é¤ÎÃͤ¬¤³¤È¤Î¤Û¤«Â礭¤Ê»ş¤ËÀú¤ê¤ò¼õ¤±
-¤Ş¤¹¡£
-
-ºÇÂç¥Æ¡¼¥Ö¥ë¥µ¥¤¥º¤Î32TB¤Ï¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Ë¤è¤ëµğÂç¥Õ¥¡¥¤¥ë¤Î¥µ¥İ¡¼¥È
-¤ÏɬÍפȤ·¤Ş¤»¤ó¡£µğÂç¤Ê¥Æ¡¼¥Ö¥ë¤ÏÊ£¿ô¤Î1GB¤Î¥Õ¥¡¥¤¥ë¤Ëʬ¤±¤ÆÊݸ¤µ¤ì¤Ş¤¹¤Î¤Ç¡¢
-¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ÎÀ©¸Â¤Ï½ÅÍפǤϤ¢¤ê¤Ş¤»¤ó¡£
-
-¥Ç¥Õ¥©¥ë¥È¤Î¥Ö¥í¥Ã¥¯¥µ¥¤¥º¤ò32k¤ËÁı²Ã¤¹¤ë¤³¤È¤Ç¡¢ºÇÂç¥Æ¡¼¥Ö¥ë¥µ¥¤¥º¤È¹Ô¥µ¥¤¥º¤È
-ºÇÂ祫¥é¥à¿ô¤È¤ò4Çܤˤ¹¤ë¤³¤È¤¬¤Ç¤­¤Ş¤¹¡£¤Ş¤¿¡¢ºÇÂç¥Æ¡¼¥Ö¥ë¥µ¥¤¥º¤Ï¥Æ¡¼¥Ö¥ë¥Ñ¡¼
-¥Æ¥£¥·¥ç¥ó¤ò»È¤Ã¤ÆÁı¤ä¤¹¤³¤È¤â¤Ç¤­¤Ş¤¹¡£
-
-¤Ò¤È¤Ä¤ÎÀ©¸Â¤Ï¡¢Ìó2,000ʸ»ú°Ê¾å¤ÎŤµ¤Î¥«¥é¥à¤Ë¥¤¥ó¥Ç¥Ã¥¯¥¹¤òÉÕ¤±¤ë¤³¤È¤¬¤Ç¤­¤Ê
-¤¤¤³¤È¤Ç¤¹¡£¹¬¤¤¤Ë¤â¡¢¤½¤Î¤è¤¦¤Ê¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¼Âºİ¤ÏɬÍפ¢¤ê¤Ş¤»¤ó¡£Ä¹¤¤¥«¥é¥à
-¤ÎMD5¥Ï¥Ã¥·¥å¤Î´Ø¿ô¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï°ì°ÕÀ­¤¬¤Ê¤Ë¤è¤ê¤ÎÊݸ±¤Ç¡¢¤Ş¤¿¡¢¥Õ¥ë¥Æ¥­¥¹¥È¤Î
-¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ç¤Ï¥«¥é¥àÆâ¤Îñ¸ì¤ò¸¡º÷¤¹¤ë¤³¤È¤¬¤Ç¤­¤Ş¤¹¡£
-
-4.5) °ìÈÌŪ¤Ê¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Î¥Ç¡¼¥¿¤òÊݸ¤¹¤ë¤Ë¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥Ç¥£¥¹¥¯ÍÆÎÌ
-¤Ï¤É¤Î¤¯¤é¤¤É¬ÍפǤ¹¡©
-
-ÉáÄ̤Υƥ­¥¹¥È¥Õ¥¡¥¤¥ë¤ò PostgreSQL ¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËÊݸ¤¹¤ë¤Ë¤Ï¡¢ºÇÂç¤ÇÌó5ÇܤÎ
-¥Ç¥£¥¹¥¯ÍÆÎ̤òɬÍפȤ·¤Ş¤¹¡£
-
-ÎãÂê¤È¤·¤Æ¡¢³Æ¹Ô¤ËÀ°¿ô¤È¥Æ¥­¥¹¥Èµ­½Ò¤ò»ı¤Ä 100,000¹Ô¤Î¥Õ¥¡¥¤¥ë¤ò¹Í¤¨¤Æ¤ß¤Ş¤·¤ç
-¤¦¡£¥Æ¥­¥¹¥È¤Îʸ»úÎó¤ÎÊ¿¶ÑŤµ¤ò20¥Ğ¥¤¥È¤È²¾Äꤹ¤ë¤È¡¢¥Õ¥é¥Ã¥È¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ
-¤ÏÌó2.8MB ¤Ç¤¹¡£¤³¤Î¥Ç¡¼¥¿¤ò´Ş¤à PostgreSQL ¥Ç¡¼¥¿¥Ù¡¼¥¹¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤Ï¼¡¤Î
-¤è¤¦¤ËÌó5.2MB¤È¸«ÀѤâ¤ë¤³¤È¤¬¤Ç¤­¤Ş¤¹¡§
-
- 24 bytes: ³Æ¥í¥¦¤Î¥Ø¥Ã¥À(³µ»»)
- 24 bytes: À°¿ô(int)¥Õ¥£¡¼¥ë¥É¤È¥Æ¥­¥¹¥È(text)¥Õ¥£¡¼¥ë¥É
- + 4 bytes: ¥Ú¡¼¥¸¾å¤Î¥¿¥Ã¥×¥ë¤Ø¤Î¥İ¥¤¥ó¥¿
- ----------------------------------------
- 52 bytes per row
-
- PostgreSQL ¤Î¥Ç¡¼¥¿¥Ú¡¼¥¸¥µ¥¤¥º¤Ï 8192¥Ğ¥¤¥È(8KB)¤Ê¤Î¤Ç:
-
- 8192 bytes per page
- ------------------- = 146 rows per database page (ÀÚ¤ê¼Î¤Æ)
- 52 bytes per row
-
- 100000 data rows
- -------------------- = 633 database pages (ÀÚ¤ê¾å¤²)
- 158 rows per page
-
- 633 database pages * 8192 bytes per page = 5,185,536 bytes (5.2 MB)
-
-¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢¤³¤ì¤Û¤É¤Î¥ª¡¼¥Ğ¥Ø¥Ã¥É¤ÏÍ׵ᤷ¤Ş¤»¤ó¤¬¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹ÉÕ¤±¤µ¤ì¤ë
-¥Ç¡¼¥¿¤ò´Ş¤à°Ê¾å¡¢¤½¤ì¤Ê¤ê¤ËÂ礭¤¯¤Ê¤ê¤Ş¤¹¡£
-
-NULL¤Ï¥Ó¥Ã¥È¥Ş¥Ã¥×¤È¤·¤ÆÊݸ¤µ¤ì¤Æ¤¤¤Æ¡¢¤½¤ì¤é¤¬¤ï¤º¤«¤Ë¥¹¥Ú¡¼¥¹¤ò»È¤¤¤Ş¤¹¡£
-
-4.6) ¥¯¥¨¥ê¤¬ÃÙ¤¤¤Î¤Ï¤Ê¤¼¤Ç¤·¤ç¤¦¡©¤Ê¤¼¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬»È¤ï¤ì¤Ê¤¤¤Î¤Ç¤·¤ç¤¦¤«¡©
-
-¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢¤¹¤Ù¤Æ¤Î¥¯¥¨¥ê¤Ç»È¤ï¤ì¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Ş¤»¤ó¡£¥Æ¡¼¥Ö¥ë¤¬ºÇ¾®¥µ¥¤
-¥º¤è¤êÂ礭¤¯¡¢¥¯¥¨¥ê¤Ç¤½¤Î¤ï¤º¤«¤Ê¥Ñ¡¼¥»¥ó¥Æ¡¼¥¸¤Î¥í¥¦¤òÁªÂò¤¹¤ë»ş¤À¤±¡¢¥¤¥ó¥Ç
-¥Ã¥¯¥¹¤Ï»È¤ï¤ì¤Ş¤¹¡£¤³¤ì¤Ï¥¤¥ó¥Ç¥Ã¥¯¥¹¥¹¥­¥ã¥ó¤Ë¤è¤êµ¯¤³¤µ¤ì¤ë¥é¥ó¥À¥à¤Ê¥Ç¥£¥¹
-¥¯¥¢¥¯¥»¥¹¤Ï¡¢¥Æ¡¼¥Ö¥ë¤ò¥¹¥È¥ì¡¼¥È¤ËÆÉ¤à½ç¼¡Áöºº¤è¤ê¤âÃÙ¤¯¤Ê¤ë¤³¤È¤¬¤¢¤ë¤«¤é¤Ç
-¤¹¡£
-
-¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤¦¤«¤ò·èÄꤹ¤ë¤¿¤á¤Ë¡¢PostgreSQL ¤Ï¥Æ¡¼¥Ö¥ë¤Ë¤Ä¤¤¤Æ¤ÎÅı·×¾ğÊó¤ò
-»ı¤¿¤Ê¤±¤ì¤Ğ¤Ê¤ê¤Ş¤»¤ó¡£¤³¤ÎÅı·×¾ğÊó¤Ï¡¢ VACUUM ANALYZE¤Ş¤¿¤Ï¡¢Ã±¤Ë ANALYZE ¤ò
-»È¤Ã¤Æ¼ı½¸¤¹¤ë¤³¤È¤¬¤Ç¤­¤Ş¤¹¡£Åı·×¾ğÊó¤ò»È¤Ã¤Æ¥ª¥×¥Æ¥£¥Ş¥¤¥¶¤Ï¥Æ¡¼¥Ö¥ë¤ÎÃæ¤Ë¤¢
-¤ë¥í¥¦¿ô¤òÃΤꡢ¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤¦¤Ù¤­¤«¤Î·èÄê¤ò¤è¤êÀµ¤·¤¯¤Ç¤­¤Ş¤¹¡£Åı·×¾ğÊó¤Ï
-ºÇŬ¤Ê·ë¹ç½ç¤ä·ë¹çÊıË¡¤ò·è¤á¤ë¾å¤Ç¤âµ®½Å¤Ê¤â¤Î¤â¤¢¤ê¤Ş¤¹¡£Åı·×¾ğÊó¤Î¼ı½¸¤Ï¡¢¥Æ
-¡¼¥Ö¥ë¤ÎÆâÍÆ¤¬ÊѤï¤ëËè¤Ë·«ÊÖ¤·¤Ê¤µ¤ì¤ë¤Ù¤­¤Ç¤¹¡£
-
-¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢Ä̾ï ORDER BY ¤ä·ë¹ç¤ò¹Ô¤Ê¤¦¤¿¤á¤Ë¤Ï»È¤ï¤ì¤Ş¤»¤ó¡£½ç¼¡¥¹¥­¥ã¥ó
-¤Ë³¤¯ÌÀ¼¨Åª¥½¡¼¥È¤Ï¡¢µğÂç¤Ê¥Æ¡¼¥Ö¥ë¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¥¹¥­¥ã¥ó¤è¤ê¤âÉáÄ̤Ϲ⮤Ǥ¹
-¡£
-
-¤·¤«¤·¡¢ORDER BY¤ÈÁȤ߹ç¤ï¤µ¤ì¤¿LIMIT ¤Ï¡¢¥Æ¡¼¥Ö¥ë¤Î¾®¤µ¤ÊÉôʬ¤òÊÖ¤¹¤¿¤á¤Ë¤¿¤Ó
-¤¿¤Ó¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤¦¤Ç¤·¤ç¤¦¡£
-
-¤â¤·¡¢¥ª¥×¥Æ¥£¥Ş¥¤¥¶¤¬´Ö°ã¤Ã¤Æ¥·¡¼¥±¥ó¥·¥ã¥ë¥¹¥­¥ã¥ó¤òÁªÂò¤·¤¿¤³¤È¤Ëµ¿¤¤¤¬¤Ê¤±
-¤ì¤Ğ¡¢SET enable_seqscan TO 'off'¤ËÀßÄꤷ¤Æ¡¢¥¯¥¨¥ê¤ò¤â¤¦°ìÅټ¹Ԥ·¡¢¥¤¥ó¥Ç¥Ã¥¯
-¥¹¥¹¥­¥ã¥ó¤¬¤Ş¤Á¤¬¤¤¤Ê¤¯Â®¤¯¤Ê¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«¤ò¤ß¤Æ¤¯¤À¤µ¤¤¡£
-
-LIKE ¤¢¤ë¤¤¤Ï ~ ¤Î¤è¤¦¤Ê¥ï¥¤¥ë¥É¥«¡¼¥É±é»»»Ò¤ÏÆÃÊ̤ʴĶ­¤Ç¤·¤«»È¤¨¤Ş¤»¤ó¡§
-
- ¡¦ ¸¡º÷ʸ»úÎó¤¬Ê¸»úÎó¤ÎºÇ½é¤Ë¤­¤­¤Ş¤¹¡£¤¿¤È¤¨¤Ğ¡§
- ¢¢ LIKE ¥Ñ¥¿¡¼¥ó¤¬%¤Ç»Ï¤Ş¤é¤Ê¤¤
- ¢¢ ~ (Àµµ¬É½¸½) ¥Ñ¥¿¡¼¥ó¤Ï^¤Ç»Ï¤Ş¤é¤Ê¤±¤ì¤Ğ¤Ê¤é¤Ê¤¤
- ¡¦ ¸¡º÷ʸ»úÎó¤òʸ»ú¥¯¥é¥¹¤«¤é»Ï¤á¤ë¤³¤È¤Ï¤Ç¤­¤Ş¤»¤ó¡£¤¿¤È¤¨¤Ğ¡¢[a-e]¡£
- ¡¦ ILIKE ¤ä ~* ¤Î¤è¤¦¤ÊÂçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤¸¡º÷¤Ï»È¤¨¤Ş¤»¤ó¡£¤½¤Î¤«¤ï¤ê
- ¡¢¤³¤ÎFAQ¤Î4.8Àá¤ÇÀâÌÀ¤¹¤ë¼°¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬»È¤¨¤Ş¤¹¡£
- ¡¦ initdb ¤Ë¤ª¤¤¤Æ¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤ÇC¥í¥±¡¼¥ë¤¬»È¤ï¤ì¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Ş¤»¤ó¡£¤½¤ÎÍı
- ͳ¤Ï¡¢C¥í¥±¡¼¥ë°Ê³°¤Ç¤Ï¼¡¤ËÂ礭¤Êʸ»ú¤òÃΤ뤳¤È¤¬¤Ç¤­¤Ê¤¤¤«¤é¤Ç¤¹¡£¤³¤Î¤è¤¦
- ¤Ê¾ì¹ç¡¢
-
- LIKE
-
- ¥¤¥ó¥Ç¥¯¥·¥ó¥°¤Ë¤À¤±Æ¯¤¯¤è¤¦¤Ê¡¢ÆÃÊ̤Ê
-
- text_pattern_ops
-
- ¥¤¥ó¥Ç¥Ã¥¯¥¹¤òºîÀ®¤¹¤ë¤³¤È¤â¤Ç¤­¤Ş¤¹¡£¤Ş¤¿¡¢¤½¤ì¤òÁ´Ê¸¸¡º÷¤Î¥Õ¥ë¥Æ¥­¥¹¥È¤Î
- ¥¤¥ó¥Ç¥Ã¥¯¥¹ºîÀ®¤Ë»È¤¦¤³¤È¤¬¤Ç¤­¤Ş¤¹¡£
-
-4.7) Ì䤤¹ç¤ï¤»¥ª¥×¥Æ¥£¥Ş¥¤¥¶¤¬¤É¤Î¤è¤¦¤ËÌ䤤¹ç¤ï¤»¤òɾ²Á¤¹¤ë¤Î¤«¤ò¸«¤ë¤Ë¤Ï¤É¤¦
-¤·¤Ş¤¹¤«¡©
-
-¥ª¥ó¥é¥¤¥ó¥Ş¥Ë¥å¥¢¥ë¤Ç EXPLAIN ¤ò¸«¤Æ¤¯¤À¤µ¤¤¡£
-
-4.8) Àµµ¬É½¸½¤Ç¤Î¸¡º÷¤äÂçʸ»ú¤È¾®Ê¸»ú¤È¤ò¶èÊ̤·¤Ê¤¤Àµµ¬É½¸½¸¡º÷¤Ï¤É¤Î¤è¤¦¤Ë¼Â¸½
-¤·¤Ş¤¹¤«¡©Âçʸ»ú¤È¾®Ê¸»ú¤È¤ò¶èÊ̤·¤Ê¤¤¸¡º÷¤Î¤¿¤á¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¤É¤Î¤è¤¦¤Ë»È¤¤
-¤Ş¤¹¤«¡©
-
-~±é»»»Ò¤ÏÀµµ¬É½¸½¾È¹ç¤ò¹Ô¤Ê¤¤¡¢~* ¤ÏÂçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤
-(case-insensitive)Àµµ¬É½¸½¾È¹ç¤ò¹Ô¤¤¤Ş¤¹¡£Âçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤ LIKE ±é»»
-»Ò¤ò ILIKE ¤È¤¤¤¤¤Ş¤¹¡£
-
-Âçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤ÅùÃÍÈæ³Ó¤Ï¼¡¤Î¤è¤¦¤Ëɽ¸½¤Ç¤­¤ë¡§
-
- SELECT *
- FROM tab
- WHERE lower(col) = 'abc';
-
-ɸ½à¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ç¤Ï»È¤ï¤ì¤º¡¢¤·¤«¤·¤Ê¤¬¤é¡¢¤â¤·¡¢¼°¥¤¥ó¥Ç¥Ã¥¯¥¹¤òºî¤Ã¤¿¤Ê¤é¤½
-¤ì¤¬»È¤ï¤ì¤ë¤Ç¤·¤ç¤¦¡£
-
- CREATE INDEX tabindex ON tab (lower(col));
-
-¾åµ­¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬UNIQUE¤ÇºîÀ®¤µ¤ì¤¿¾ì¹ç¡¢¥«¥é¥à¤ÏÂçʸ»ú¤È¾®Ê¸»ú¤ò³ÊǼ¤Ç¤­¤Ş
-¤¹¤¬¡¢¤½¤Î°ã¤¤¤¬Ê¸»ú¥±¡¼¥¹¤À¤±¤Ç¤¢¤Ã¤Æ¤âƱ°ì¤Ë¤Ï¤Ê¤ê¤Ş¤»¤ó¡£¤¢¤¨¤ÆÆÃÄê¤Îʸ»ú¥±
-¡¼¥¹¤ò¥«¥é¥à¤Ë³ÊǼ¤¹¤ë¤Ë¤Ï CHECKÀ©Ì󤫡¢¥È¥ê¥¬¡¼¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£
-
-4.9) ¥¯¥¨¥ê¤ÎÃæ¤Ç¡¢¥Õ¥£¡¼¥ë¥É¤¬NULL ¤Ç¤¢¤ë¤³¤È¤ò¸¡½Ğ¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Ş¤¹¤«¡© NULL
-¤Ç¤¢¤ë¤³¤È¤ò¸¡½Ğ¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Ş¤¹¤«¡©¥Õ¥£¡¼¥ë¥É¤¬NULL¤«¤É¤¦¤«¤Ç¤É¤Î¤è¤¦¤Ë¥½¡¼
-¥È¤¬¤Ç¤­¤Ş¤¹¤«¡©
-
-°Ê²¼¤Î¤è¤¦¤Ë¡¢IS NULL ¤È IS NOT NULL¤Ç¡¢¤½¤Î¥«¥é¥à¤ò¥Æ¥¹¥È¤·¤Æ¤ß¤Ş¤¹¡§
-
- SELECT *
- FROM tab
- WHERE col IS NULL;
-
-NULL¤Î²ÄǽÀ­¤Î¤¢¤ë¤â¤Î¤òÏ¢·ë¤¹¤ë¤Ë¤Ï¡¢COALESCE()¤ò¼¡¤Î¤è¤¦¤Ë»È¤¤¤Ş¤¹¡£
-
- SELECT COALESCE(col1, '') || COALESCE(col2, '')
- FROM tab
-
-NULL¾õÂ֤ǥ½¡¼¥È¤¹¤ë¤Ë¤Ï¡¢IS NULL ¤È IS NOT NULL ¤Î½¤¾ş»Ò¤ò ORDER BY ¶ç¤ÎÃæ¤Ç»È
-¤Ã¤Æ¤ß¤Ş¤¹¡£true ¤Î¤â¤Î¤Ï false ¤Î¤â¤Î¤è¤ê¤â¹â¤¤ÃͤȤ·¤ÆÊ¤٤é¤ì¤Ş¤¹¤Î¤Ç¡¢¼¡¤Î
-Îã¤Ç¤Ï NULL ¤Îµ­ºÜ¤¬·ë²Ì¥ê¥¹¥È¤Î¾åÉô¤ËÃÖ¤«¤ì¤Ş¤¹¡£
-
- SELECT *
- FROM tab
- ORDER BY (col IS NOT NULL)
-
-4.10) ¤¤¤í¤¤¤í¤Êʸ»ú·¿¤Î¤½¤ì¤¾¤ì¤Î°ã¤¤¤Ï²¿¤Ç¤¹¤«¡©
-
- ·¿ ÆâÉô̾ È÷¹Í
- VARCHAR(n) varchar ºÇÂçĹ¤Î¥µ¥¤¥º¤ò»ØÄꤹ¤ë¡¢µÍ¤áʪ̵¤·
- CHAR(n) bpchar »ØÄꤵ¤ì¤¿¸ÇÄêĹ¤È¤Ê¤ë¤è¤¦¤Ë¶õÇò¤¬µÍ¤á¤é¤ì¤ë
- TEXT text Ťµ¤ËÆÃÊ̤ʾå¸Â¤Ï̵¤·
- BYTEA bytea ²ÄÊÑĹ¤Î¥Ğ¥¤¥ÈÇÛÎó(null-byte safe)
- "char" char 1ʸ»ú
-
-ÆâÉô̾¤Ë¤ªÌܤˤ«¤«¤ë¤Î¤Ï¡¢¥·¥¹¥Æ¥à¡¦¥«¥¿¥í¥°¤òÄ´¤Ù¤ë¤È¤­¤ä¡¢¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò
-¼õ¤±¼è¤ë¤È¤­¤Ç¤¹¡£
-
-¾åµ­¤Î·¿¤Î¤¦¤ÁºÇ½é¤Î£´¤Ä¤Î·¿¤Ï "varlena" ·¿¤Ç¤¹(¤¹¤Ê¤ï¤Á¡¢¥Ç¥£¥¹¥¯¤ÎºÇ½é¤Î£´¥Ğ
-¥¤¥È¤¬¥Ç¡¼¥¿Ä¹¤Ç¡¢¤½¤ì¤Î¸å¤Ë¼Âºİ¤Î¥Ç¡¼¥¿¤¬Â³¤­¤Ş¤¹)¡£¤³¤Î¤è¤¦¤Ë¼Âºİ¤Î¶õ´Ö¤ÏÀë¸À
-¤µ¤ì¤¿Â礭¤µ¤è¤ê¤â¾¯¤·Â礭¤¯¤Ê¤ê¤Ş¤¹¡£¤·¤«¤·¡¢Ä¹¤¤Ãͤϰµ½Ì¤µ¤ì¤ë¤Î¤Ç¡¢¥Ç¥£¥¹¥¯
-¾å¤Î¶õ´Ö¤Ï»×¤Ã¤¿¤è¤ê¤â¾®¤µ¤¯¤Ê¤ê¤Ş¤¹¡£
-
-VARCHAR(n) ¤Ï²ÄÊÑŤÎʸ»úÎó¤òÊݸ¤¹¤ë¤Î¤ËºÇŬ¤Ç¤¹¤¬¡¢Êݸ¤Ç¤­¤ëʸ»úÎó¤ÎŤµ¤ËÀ©
-¸Â¤¬¤¢¤ê¤Ş¤¹¡£TEXT ¤ÏŤµ¤ËÀ©¸Â¤Î̵¤¤Ê¸»úÎó¤ÎÊݸ¤Î¤¿¤á¤Î¤â¤Î¤Ç¡¢ºÇÂç¤Ç 1¥®¥¬¥Ğ
-¥¤¥È¤Ç¤¹¡£ CHAR(n)¤Ï¡¢VARCHAR(n)¤¬Í¿¤¨¤é¤ì¤¿Ê¸»ú¤À¤±¤òÊݸ¤¹¤ë¤Î¤ËÂФ·¡¢¥Ö¥é¥ó
-¥¯¤òµÍ¤á¹ş¤ó¤Ç¤¤¤Ä¤âƱ¤¸Ä¹¤µ¤Çʸ»úÎó¤òÊݸ¤¹¤ë¤Î¤ËºÇŬ¤Ç¤¹¡£BYTEA¤Ï¡¢ÉôʬŪ¤Ë
-NULL ¤Î¥Ğ¥¤¥È¤ò´Ş¤à¥Ğ¥¤¥Ê¥ê¥Ç¡¼¥¿¤òÊݸ¤¹¤ë¤¿¤á¤Î¤â¤Î¤Ç¤¹¡£¤³¤ì¤é¤Î¥¿¥¤¥×¤ÏƱ¤¸
-¤¯¤é¤¤¤ÎÀ­Ç½ÆÃÀ­¤ò¤â¤Á¤Ş¤¹¡£
-
-4.11.1) ÄÌÈÖ(serial)¡¿¼«Æ°Áıʬ¥Õ¥£¡¼¥ë¥É¤Ï¤É¤Î¤è¤¦¤Ë¤Ä¤¯¤ê¤Ş¤¹¤«¡©
-
-PostgreSQL ¤Ï SERIAL ¥Ç¡¼¥¿·¿¤ò¥µ¥İ¡¼¥È¤·¤Ş¤¹¡£¥«¥é¥à¾å¤Ë¥·¡¼¥±¥ó¥¹¤ò¼«Æ°ºîÀ®¤·
-¤Ş¤¹¡£¤¿¤È¤¨¤Ğ¡¢
-
- CREATE TABLE person (
- id SERIAL,
- name TEXT
- );
-
-¤Ï¼«Æ°Åª¤Ë¼¡¤Î¤è¤¦¤ËËİÌõ¤µ¤ì¤Ş¤¹:
-
- CREATE SEQUENCE person_id_seq;
- CREATE TABLE person (
- id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
- name TEXT
- );
-
- [ÌõÃí¡§
- CREATE UNIQUE INDEX person_id_key ON person ( id );
- ¤Ï¡¢ 7.3 °Ê¹ß¤Ï¼«Æ°Åª¤Ë¤Ï¹Ô¤Ê¤ï¤ì¤Ê¤¯¤Ê¤ê¤Ş¤·¤¿¡£
- ]
-
-
-¼«Æ°Åª¤Ë¤Ä¤¯¤é¤ì¤ëÄÌÈ֤ϡ¢ <table>_<serialcolumn>_seq ¤È̾ÉÕ¤±¤é¤ì¤Æ¤¤¤Æ¡¢table
-¤È serialcolumn ¤Ï¡¢¤½¤ì¤¾¤ì¥Æ¡¼¥Ö¥ë¤È SERIAL ¥«¥é¥à¤Î̾Á°¤Ç¤¹¡£ÄÌÈ֤ˤĤ¤¤Æ¤Ï
-¡¢¥ª¥ó¥é¥¤¥ó¥Ş¥Ë¥å¥¢¥ë¤Çcreate_sequence ¤ò¤´¤é¤ó¤¯¤À¤µ¤¤¡£
-
-4.11.2) SERIAL¥Ç¡¼¥¿·¿¤ËÁŞÆş¤µ¤ì¤ëÃͤϡ¢¤É¤¦¤¹¤ì¤ĞÆÀ¤é¤ì¤Ş¤¹¤«¡©
-
-ºÇ¤â´Êñ¤ÊÊıË¡¤Ï¡¢³ä¤êÅö¤Æ¤é¤ì¤¿SERIALÃͤò RETURNING¤È¤·¤Æ¼èÆÀ¤¹¤ë¤³¤È¤Ç¤¹¡£
-4.11.1¤ÎÎãÂê¥Æ¡¼¥Ö¥ë¤ò»È¤¦¤È¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Ş¤¹¡£
-
- INSERT INTO person (name) VALUES ('Blaise Pascal') RETURNING id;
-
-4.11.3) currval() ¤Ï¾¤Î¥æ¡¼¥¶¤È¤Î¶¥¹ç¾õÂ֤˴٤뤳¤È¤Ï¤Ê¤¤¤Ç¤¹¤«¡©
-
-¤½¤ì¤Ï¤¢¤ê¤Ş¤»¤ó¡£currval() ¤Ï¡¢¤¹¤Ù¤Æ¤Î¥æ¡¼¥¶¤Ç¤Ï¤¢¤ê¤Ş¤»¤ó¤¬¡¢ÆÉ¼Ô¤Î¥»¥Ã¥·¥ç
-¥ó¤ËÍ¿¤¨¤é¤ì¤¿¸½ºß¤ÎÃͤòÊÖ¤·¤Ş¤¹¡£
-
-4.11.4) ¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤¬ÃæÃǤ·¤¿¤È¤­¤Ë¤â¤¦¤¤¤Á¤É¥·¡¼¥±¥ó¥¹Èֹ椬»È¤ï¤ì¤Ê¤¤¤Î
-¤Ï¤Ê¤¼¤Ç¤¹¤«¡©¥·¡¼¥±¥ó¥¹¡¿SERIAL¥«¥é¥à¤Ë¶õ¤­¤¬¤¢¤ë¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
-
-Ʊ»şÀ­¤ò²şÁ±¤¹¤ë¤¿¤á¤Ë¡¢¼Â¹ÔÃæ¤Î¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤Ë¡¢É¬Íפ˱ş¤¸¤Æ¥È¥é¥ó¥¶¥¯¥·¥ç
-¥ó¤¬½ªÎ»¤¹¤ë¤Ş¤Ç¥í¥Ã¥¯¤µ¤ì¤Ê¤¤¤è¤¦¥·¡¼¥±¥ó¥¹ÃͤòÍ¿¤¨¤Æ¤¤¤Ş¤¹¡£¤³¤Î¤¿¤á¥È¥é¥ó¥¶
-¥¯¥·¥ç¥ó¤¬ÃæÃǤµ¤ì¤ë¤ÈÈÖ¹æ³ä¤êÅö¤Æ¤Ë¥®¥ã¥Ã¥×¤òÀ¸¤¸¤Ş¤¹¡£
-
-4.12) OID ¤È¤Ï²¿¤Ç¤¹¤«¡© CTID ¤È¤Ï²¿¤Ç¤¹¤«¡©
-
-¥Æ¡¼¥Ö¥ë¤¬WITH OIDS¤Ç¤Ä¤¯¤é¤ì¤¿¾ì¹ç¤Ï¡¢¤½¤ì¤¾¤ì¤Î¥í¥¦¤Ë°ì°Õ¤ÊOID¤¬¼è¤é¤ì¤Ş¤¹¡£
-OID¤Ï¼«Æ°Åª¤Ë4¥Ğ¥¤¥È¤ÎÀ°¿ô¤ÇÍ¿¤¨¤é¤ì¡¢¤½¤ì¤Ï¡¢Á´¥¤¥ó¥¹¥È¥ì¡¼¥·¥ç¥ó¤òÄ̤·¤Æ°ì°Õ
-¤ÊÃÍ¤È¤Ê¤ê¤Ş¤¹¡£¤·¤«¤·¡¢Ìó40²¯¤Ç¥ª¡¼¥Ğ¡¼¥Õ¥í¡¼¤·¡¢¤½¤·¤Æ¡¢OID¤Ï½ÅÊ£¤ò¤·¤Ï¤¸¤á¤Ş
-¤¹¡£PostgreSQL¤ÏÆâÉô¥·¥¹¥Æ¥à¥Æ¡¼¥Ö¥ë¤ò°ì½ï¤Ë¥ê¥ó¥¯¤¹¤ë¤¿¤á¤ËOID ¤ò»È¤¤¤Ş¤¹¡£
-
-¥æ¡¼¥¶¤Î¥Æ¡¼¥Ö¥ë¤Î¥«¥é¥à¤Ë°ì°Õ¤ÎÈÖ¹æ¤òÉÕ¤±¤ë¤¿¤á¤Ë¤Ï¡¢ OID ¤Ç¤Ï¤Ê¤¯ SERIAL ¤ò»È
-¤¦¤Î¤¬ºÇ¤â¤è¤¤¤Ç¤·¤ç¤¦¡£SERIAL¤ÎÏ¢ÈÖ¤Ï1¤Ä¤Î¥Æ¡¼¥Ö¥ëÆâ¤Ç¤Î¤ß°ì°Õ¤Ë¤Ê¤ë¤«¤é¤Ç¡¢¥ª
-¡¼¥Ğ¡¼¥Õ¥í¡¼¤òµ¯¤³¤·¤Ë¤¯¤¤¤È¹Í¤¨¤é¤ì¤Ş¤¹¡£ 8¥Ğ¥¤¥È¤Î¥·¡¼¥±¥ó¥¹ÃͤòÊݸ¤¹¤ë¤¿¤á
-¤Ë¡¢SERIAL8¤¬¤¢¤ê¤Ş¤¹¡£
-
-CTID ¤Ï¡¢ÆÃÄê¤ÎʪÍı¥í¥¦¤ò¥Ö¥í¥Ã¥¯¤È¥ª¥Õ¥»¥Ã¥È¤ÎÃͤǼ±Ê̤¹¤ë¤¿¤á¤Ë»È¤ï¤ì¤Ş¤¹¡£
-CTID¤Ï¡¢¥í¥¦¤¬½¤Àµ¤µ¤ì¤¿¤êºÆÆÉ¹ş¤ß¤µ¤ì¤¿¤È¤­¤ËÊѤï¤ê¤Ş¤¹¡£¤Ş¤¿¡¢ÊªÍı¥í¥¦¤òº¹¤¹
-¤¿¤á¤Ë¥¤¥ó¥Ç¥Ã¥¯¥¹¤Îµ­ºÜ¤Ë»È¤ï¤ì¤Ş¤¹¡£
-
-4.13) ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸ "ERROR: Memory exhausted in AllocSetAlloc()"¤¬½Ğ¤ë¤Î¤Ï¤Ê
-¤¼¤Ç¤¹¤«¡©
-
-¤ª¤½¤é¤¯¡¢¥·¥¹¥Æ¥à¤Î²¾ÁÛ¥á¥â¥ê¡¼¤òÁ´¤Æ»È¤¤²Ì¤¿¤·¤Æ¤·¤Ş¤Ã¤Æ¤¤¤ë²ÄǽÀ­¤¬¤¢¤ë¤«¡¢
-¥«¡¼¥Í¥ë¤¬¤¢¤ë¥ê¥½¡¼¥¹¤Ë¤Ä¤¤¤Æ¤â¤ÄÀ©¸ÂÃͤ¬Ä㤹¤®¤ë²ÄǽÀ­¤¬¤¢¤ê¤Ş¤¹¡£¥µ¡¼¥Ğ¤ò»Ï
-ư¤¹¤ëÁ°¤Ë¤³¤ì¤ò»î¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡§
-
- ulimit -d 262144
- limit datasize 256m
-
-¥·¥§¥ë¤Ë¤è¤Ã¤Æ¡¢¤É¤Á¤é¤«¤Ò¤È¤Ä¤¬À®¸ù¤¹¤ë¤Ç¤·¤ç¤¦¤¬¡¢¤³¤ì¤Ï¥×¥í¥»¥¹¤Î¥Ç¡¼¥¿¥»¥°
-¥á¥ó¥ÈÀ©¸Â¤ò¤è¤ê¹â¤¯ÀßÄꤷ¡¢¤¿¤Ö¤ó¥¯¥¨¥ê¤¬´°·ë¤¹¤ë¤è¤¦¤Ë¤Ê¤ë¤Ç¤·¤ç¤¦¡£¤³¤Î¥³¥Ş
-¥ó¥É¤Ï¸½¹Ô¤Î¥×¥í¥»¥¹¤È¡¢¤³¤Î¥³¥Ş¥ó¥É¤òÁö¤é¤»¤¿¸å¤Ëºî¤é¤ì¤ëÁ´¤Æ¤Î¥µ¥Ö¥×¥í¥»¥¹¤Ë
-¤Ä¤¤¤ÆÅ¬ÍѤµ¤ì¤Ş¤¹¡£¥Ğ¥Ã¥¯¥¨¥ó¥É¤¬¤È¤Æ¤â¿¤¯¤Î¥Ç¡¼¥¿¤òÊÖ¤¹¤¿¤á¤ËSQL ¥¯¥é¥¤¥¢¥ó
-¥È¤ÇÌäÂ꤬³¤¤¤Æ¤¤¤ë¤Î¤Ç¤¢¤ì¤Ğ¡¢¥¯¥é¥¤¥¢¥ó¥È¤ò³«»Ï¤¹¤ëÁ°¤Ë¤³¤ì¤ò»î¤·¤Æ¤ß¤Æ¤¯¤À
-¤µ¤¤¡£
-
-4.14) ¤É¤Î¥Ğ¡¼¥¸¥ç¥ó¤Î PostgreSQL ¤òÁö¤é¤»¤Æ¤¤¤ë¤«¤òÄ´¤Ù¤ë¤Ë¤Ï¤É¤¦¤·¤Ş¤¹¤«¡©
-
-psql ¤«¤é SELECT version(); ¤ò¥¿¥¤¥×¤·¤Ş¤¹¡£
-
-4.15) ¸½ºß¤Î»ş¹ï¤¬¥Ç¥Õ¥©¥ë¥È¤È¤Ê¤ë¤è¤¦¤Ê¥«¥é¥à¤Ï¤É¤Î¤è¤¦¤Ë¤Ä¤¯¤ê¤Ş¤¹¤«¡©
-
-CURRENT_TIMESTAMP¤ò»È¤¤¤Ş¤¹:
-
- CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
-
-4.16) ³°Éô·ë¹ç(outer join)¤Ï¤É¤Î¤è¤¦¤Ë¼Â¸½¤·¤Ş¤¹¤«?
-
-PostgreSQL ¤Ï SQL ɸ½à¹½Ê¸¤ò»È¤¦³°Éô·ë¹ç(¥¢¥¦¥¿¡¼¥¸¥ç¥¤¥ó)¤ò¥µ¥İ¡¼¥È¤·¤Ş¤¹¡£¤³
-¤³¤Ë 2¤Ä¤ÎÎãÂ꤬¤¢¤ê¤Ş¤¹¡£
-
- SELECT *
- FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
-¤¢¤ë¤¤¤Ï
-
- SELECT *
- FROM t1 LEFT OUTER JOIN t2 USING (col);
-
-¤³¤ì¤é¤Î¾İħŪ¤Ê¥¯¥¨¥ê¤Ç¤Ï t1.col ¤ò t2.col ¤È·ë¹ç¤·¤Æ¡¢t1 ¤Î·ë¹ç¤µ¤ì¤Ê¤«¤Ã¤¿¥í
-¥¦(t2 ¤È°ìÃפ·¤Ê¤«¤Ã¤¿¥í¥¦)¤âÊÖ¤·¤Æ¤¤¤Ş¤¹¡£RIGHT ·ë¹ç¤Ï t2 ¤Î·ë¹ç¤µ¤ì¤Ê¤«¤Ã¤¿¥í
-¥¦¤ò²Ã¤¨¤ë¤Ç¤·¤ç¤¦¡£FULL ·ë¹ç¤Ï¡¢°ìÃפ·¤¿¥í¥¦¤Ë t1 ¤È t2 ¤«¤é¤Ï·ë¹ç¤µ¤ì¤Ê¤«¤Ã¤¿
-¥í¥¦¤òÊÖ¤¹¤Ç¤·¤ç¤¦¡£OUTER ¤È¤¤¤¦¸ÀÍդϥª¥×¥·¥ç¥ó¤Ç LEFT, RIGHT, ¤Ş¤¿¤Ï FULL ¤Ê
-¤É¤Î·ë¹ç¤ò²¾Äꤵ¤ì¤Æ¤¤¤Ş¤¹¡£Ä̾·ë¹ç¤ÏINNER·ë¹ç¤È¸Æ¤Ğ¤ì¤Ş¤¹¡£
-
-4.17) Ê£¿ô¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò»È¤¦Ì䤤¹ç¤ï¤»¤Ï¤É¤Î¤è¤¦¤Ë¤¹¤ì¤Ğ¤Ç¤­¤Ş¤¹¤«¡©
-
-¸½¹Ô¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹°Ê³°¤Ø¤ÎÌ䤤¹ç¤ï¤»¤ÎÊıË¡¤Ï¤¢¤ê¤Ş¤»¤ó¡£¤È¤¤¤¦¤Î¤âPostgreSQL¤¬
-¥Ç¡¼¥¿¥Ù¡¼¥¹»ÅÍͤΥ·¥¹¥Æ¥à¥«¥¿¥í¥°¤òÆÉ¤ß¹ş¤à¤¿¤á¤Ç¡¢¤½¤³¤Ë¤Ï¡¢¤¿¤È¤¨¤½¤Î¤Õ¤ê¤ò
-¤¹¤ë¤À¤±¤Ë¤·¤í¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò±Û¤¨¤ÆÌ䤤¹ç¤ï¤»¤ò¤¹¤ë¤¹¤Ù¤¬¤¢¤ê¤Ş¤»¤ó¡£
-
-contrib/dblink ¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹´Ö(cross-database)¤ÎÌ䤤¹ç¤ï¤»¤ò´Ø¿ô¸Æ½Ğ¤·¤Ë¤è¤êµö
-¤·¤Ş¤¹¡£¤â¤Á¤í¤ó¡¢¥¯¥é¥¤¥¢¥ó¥È¤ÏƱ»ş¤ËÀܳ¤òÊ̤Υǡ¼¥¿¥Ù¡¼¥¹¤Ø¤âÄ¥¤é¤Ê¤¯¤Æ¤Ï¤Ê
-¤é¤º¡¢·ë²Ì¤ò¥¯¥é¥¤¥¢¥ó¥È¦¤Ç¥Ş¡¼¥¸¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Ş¤»¤ó¡£
-
-4.18) ´Ø¿ô¤«¤éÊ£¿ô¤Î¥í¥¦¤Ş¤¿¤Ï¥«¥é¥à¤òÊÖ¤¹¤Ë¤Ï¤É¤¦¤·¤Ş¤¹¤«¡©
-
-½¸¹ç¤òÊÖ¤¹´Ø¿ô(Set Returning Functions): http://wiki.postgresql.org/wiki/
-Return_more_than_one_row_of_data_from_PL/pgSQL_functions ¤ò»È¤¦¤È´Êñ¤Ç¤¹
-
-¡£
-
-4.19) PL/PgSQL ¤Î´Ø¿ô¤ÎÃæ¤Ç°ì»ş¥Æ¡¼¥Ö¥ë¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤È¤­¡¢¤É¤¦¤·¤Æ "relation
-with OID ##### does not exist" ¤È¤¤¤¦¥¨¥é¡¼¤ò¼õ¤±¼è¤ë¤Î¤Ç¤·¤ç¤¦¤«¡©
-
-¥Ğ¡¼¥¸¥ç¥ó8.3¤è¤êÁ°¤Î PostgreSQL ¤Ç¤Ï¡¢PL/PgSQL ¤Ï´Ø¿ô¥¹¥¯¥ê¥×¥È¤ò¥­¥ã¥Ã¥·¥å¤·
-¤¿¤¿¤á¡¢±¿°­¤¯¤½¤ÎÉûºîÍѤ¬¤¢¤ê¤Ş¤·¤¿¡£PL/PgSQL ´Ø¿ô¤¬°ì»ş¥Æ¡¼¥Ö¥ë¤Ë¥¢¥¯¥»¥¹¤·¤Æ
-¸å¤Ç¤½¤Î¥Æ¡¼¥Ö¥ë¤ò¾Ã¤·¤Æºî¤ê¤·¤¿¾ì¹ç¤Ë¡¢´Ø¿ô¤¬¤â¤¦°ìÅٸƤӽФµ¤ì¤¿¤È¤­¤Ï¡¢¤½¤Î
-´Ø¿ô¤Î¥­¥ã¥Ã¥·¥å¤·¤Æ¤¤¤¿ÆâÍÆ¤¬¤Ş¤À¸Å¤¤°ì»ş¥Æ¡¼¥Ö¥ë¤ò»Ø¤·¼¨¤·¤¿¤Ş¤Ş¤À¤Ã¤¿¤«¤é¤Ç
-¤¹¡£¤³¤Î¡¢²ò·èºö¤È¤·¤Æ¡¢PL/PgSQL¤ÎÃæ¤Ç EXECUTE ¤ò°ì»ş¥Æ¡¼¥Ö¥ë¤Ø¤Î¥¢¥¯¥»¥¹¤Î¤¿¤á
-¤Ë»È¤¤¤Ş¤¹¡£¤½¤¦¤¹¤ë¤È¡¢¥¯¥¨¥ê¤ÏËè²ó¥Ñ¡¼¥¹¤ò¤ä¤êľ¤·¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Ş¤¹¡£
-
-¤³¤ÎÌäÂê¤Ï¡¢ PostgreSQL ¥Ğ¡¼¥¸¥ç¥ó8.3 °Ê¹ß¤Ç¤Ïµ¯¤­¤Ş¤»¤ó¡£
-
-4.20) ¤É¤Î¤è¤¦¤Ê¥ì¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥½¥ê¥å¡¼¥·¥ç¥ó¤¬¤¢¤ê¤Ş¤¹¤«¡©
-
-¡Ö¥ì¥×¥ê¥±¡¼¥·¥ç¥ó¡×¤È°ì¸À¤Ç¤¤¤¤¤Ş¤¹¤¬¡¢¥ì¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¤¹¤ë¤¿¤á¤Îµ»½Ñ¤Ï¤¤¤¯
-¤Ä¤«¤¢¤ê¡¢¤½¤ì¤¾¤ì¡¢ÍøÅÀ¤È·çÅÀ¤¬¤¢¤ê¤Ş¤¹¡£
-
-¥Ş¥¹¥¿¡¿¥¹¥ì¡¼¥Ö¤Î¥ì¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¢ÆÉ¤ß¡¿½ñ¤­¤Î¥¯¥¨¥ê¤ò¼õ¤±¼è¤ë¥·¥ó¥°¥ë¥Ş¥¹
-¥¿¤¬²Äǽ¤Ç¡¢¥¹¥ì¡¼¥Ö¤Ç¤ÏÆÉ¤ß¡¿SELECT¤ÎÌ䤤¹ç¤ï¤»¤À¤±¤ò¼õ¤±ÉÕ¤±¤ë¤³¤È¤¬¤Ç¤­¤Ş¤¹
-¡£ºÇ¤â¿Íµ¤¤¬¤¢¤ë¡¢¥Õ¥ê¡¼¤ÇÍøÍѤǤ­¤ë¡¢¥Ş¥¹¥¿¡İ¥¹¥ì¡¼¥Ö¤ÎPostgreSQL¥ì¥×¥ê¥±¡¼¥·
-¥ç¥ó¥½¥ê¥å¡¼¥·¥ç¥ó¤Ï¡¢ Slony-I ¤Ç¤¹¡£
-
-¥Ş¥ë¥Á¡İ¥Ş¥¹¥¿¤Î¥ì¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¢ÆÉ¤ß¡¿½ñ¤­¤Î¥¯¥¨¥ê¤ò¼õ¤±¤È¤ê¡¢Ê£¿ô¤Î¥ì¥×¥ê
-¥±¡¼¥È¤µ¤»¤ë¥³¥ó¥Ô¥å¡¼¥¿¤ËÁ÷¤ë¤³¤È¤¬¤Ç¤­¤Ş¤¹¡£¤³¤Îµ¡Ç½¤Ï¡¢¥µ¡¼¥Ğ´Ö¤ÎÊѹ¹¤ÎƱ´ü
-¤¬É¬Íפʤ¿¤á¡¢À­Ç½¤Ë½ÅÂç¤Ê¾×·â¤òÍ¿¤¨¤Ş¤¹¡£ PGCluster ¤Ï¡¢¤³¤Î¤è¤¦¤Ê¥½¥ê¥å¡¼¥·¥ç
-¥ó¤È¤·¤ÆPostgreSQL¤Î¤¿¤á¤Ë¥Õ¥ê¡¼¤ÇÍøÍѤǤ­¤ë¤â¤Î¤È¤·¤Æ¡¢ºÇ¤â¿Íµ¤¤¬¤¢¤ê¤Ş¤¹¡£
-
-¤³¤Î¾¤Ë¤â¡¢¾¦ÍѤä¥Ï¡¼¥É¥¦¥§¥¢¡İ¥Ù¡¼¥¹¤Î¥ì¥×¥ê¥±¡¼¥·¥ç¥ó¥½¥ê¥å¡¼¥·¥ç¥ó¤¬¤¤¤í¤¤
-¤í¤Ê¥ì¥×¥ê¥±¡¼¥·¥ç¥ó¥â¥Ç¥ë¤ò¥µ¥İ¡¼¥È¤·¤Æ¤¤¤Ş¤¹¡£
-
-4.21)¥Æ¡¼¥Ö¥ë¤È¥«¥é¥à¤Î̾Á°¤¬¥¯¥¨¥ê¡¼¤ÎÃæ¤Çǧ¼±¤µ¤ì¤Ê¤¤¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©¤Ê¤¼Âçʸ
-»ú²½(¥­¥ã¥Ô¥¿¥é¥¤¥º)¤Ï²¹Â¸¤µ¤ì¤Ê¤¤¤Î¤Ç¤¹¤«?
-
-̾Á°¤¬Ç§¼±¤µ¤ì¤Ê¤¤¡¢ºÇ¤â°ìÈÌŪ¤Ê¸¶°ø¤Ï¡¢¥Æ¡¼¥Ö¥ë¤òºîÀ®¤¹¤ëºİ¤Ë¡¢¥Æ¡¼¥Ö¥ë¤ä¥«¥é
-¥à¤ò°Ï¤¦Æó½Å°úÍÑÉä¤Î»ÈÍѤǤ¹¡£Æó½Å°úÍÑÉä¤ò»È¤¦¤È¡¢¥Æ¡¼¥Ö¥ë¤È¥«¥é¥à¤Î̾Á°¡Ê¼±ÊÌ
-»Ò¤È¤¤¤¤¤Ş¤¹¡Ë¤ÏÂçʸ»ú¤È¾®Ê¸»ú¤Î¶èÊ̤ò¤·¤Æ³ÊǼ¤µ¤ì¤Ş¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢pgAdmin¤Î¤è
-¤¦¤Ë¥Æ¡¼¥Ö¥ëºîÀ®¤Î¤È¤­¤Ë¼«Æ°Åª¤ËÆó½Å°úÍÑÉä¤ò»È¤¦¤â¤Î¤Ï¥¯¥¨¥ê¤ÎÃæ¤Ç¤½¤ì¤é¤Î̾Á°
-¤ò»È¤¦¤È¤­¤ËÆó½Å°úÍÑÉä¤òÉÕ¤±¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¤³¤È¤ò°ÕÌ£¤·¤Ş¤¹¡£¤³¤Î¤¿¤á¡¢¼±ÊÌ»Ò
-¤òǧ¼±¤µ¤»¤ë¤¿¤á¤Ë¤Ï°Ê²¼¤Î¤¤¤º¤ì¤«¤ò¿´¤¬¤±¤Ş¤¹¡£
-
- ¡¦ ¥Æ¡¼¥Ö¥ë¤òºîÀ®¤¹¤ë¤È¤­¤ËÆó½Å°úÍÑÉä¤Ç¼±Ê̻Ҥò°Ï¤¦¤³¤È¤òÈò¤±¤ë
- ¡¦ ¼±Ê̻ҤˤϾ®Ê¸»ú¤À¤±¤ò»È¤¦
- ¡¦ ¥¯¥¨¥ê¤ÎÃæ¤Ç»²¾È¤¹¤ë¤È¤­¤ÏÆó½Å°úÍÑÉä¤Ç¼±Ê̻Ҥò°Ï¤¦
-
-¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬
-
- ÆüËܸì¤Ë´Ø¤¹¤ë¼ÁÌä
-
-5.1)ÆüËܸ줬¤¦¤Ş¤¯°·¤¨¤Ê¤¤¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
-
-createdb -E¥³¥Ş¥ó¥É¥ª¥×¥·¥ç¥ó¤Ë UTF8 ¤¢¤ë¤¤¤Ï EUC_JP ¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ò»ØÄꤷ
-¤Æ¥Ç¡¼¥¿¥Ù¡¼¥¹¤òºîÀ®¤¹¤ë¤«¡¢¼¡¤Î¤è¤¦¤Ë¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ò»ØÄꤷ¤Æ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò
-ºîÀ®¤·¤Æ¤¯¤À¤µ¤¤¡£
-
- CREATE DATABASE dbname WITH ENCODING 'UTF8';
- ¤â¤·¤¯¤Ï¡¢
- CREATE DATABASE dbname WITH ENCODING 'EUC_JP';
-
-5.2) psql ¤ÇWindows¤«¤é¥¢¥¯¥»¥¹¤·¤¿¤È¤­¤Ë¡¢ÆüËܸ줬ʸ»ú²½¤±¤¹¤ë¤Î¤Ç¤¹¤¬¡©
-
-psql¤ÎÃæ¤Ç¥¯¥é¥¤¥¢¥ó¥È¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£
-
- SET client_encoding TO 'SJIS'
-
-PostgreSQL¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤Ë»È¤¨¤ëÆüËܸìʸ»ú¥³¡¼¥É¤Ï EUC_JP ¤«
-UTF-8(UNICODE) ¤Ç¤¢¤ë¤¿¤á¡¢Shift-JISɽ¼¨¤Î¥³¥Ş¥ó¥É¥×¥í¥ó¥×¥È¤«¤é¤Ï¡¢
-client_encoding¤òÀßÄꤷ¤Æ¤ª¤«¤Ê¤¤¤È¡¢ÆüËܸì¤òɽ¼¨¤¹¤ëºİ¤Ëʸ»ú²½¤±¤¬¤ª¤­¤Ş¤¹¡£
-
-5.3) PostgreSQL¤ÇÆüËܸì¤ÎÁ´Ê¸¸¡º÷¤Ï¤Ç¤­¤Ş¤¹¤«¡©
-
-¥Ğ¡¼¥¸¥ç¥ó8.3¤Ç¤Ï¡¢TSearch2Á´Ê¸¸¡º÷µ¡Ç½¤¬ËÜÂΤËÁȤ߹ş¤Ş¤ì¤Ş¤·¤¿¤¬¡¢¤½¤Î¤Ş¤Ş¤Ç¤Ï
-ÆüËܸì¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤òºî¤ë»ö¤¬Æñ¤·¤¤¾õ¶·¤Ç¤¹¡£¤³¤ì¤ò²ò·è¤¹¤ë¤¿¤á¤Ë¡¢Takahiro
-Itagaki»á¤Ë¤è¤Ã¤Æ¡¢Mecab¤È¤¤¤¦·ÁÂÖÁDzòÀÏ¥×¥í¥°¥é¥à¤òÍøÍѤ¹¤ëÆüËܸìÁ´Ê¸¸¡º÷¥â¥¸
-¥å¡¼¥ë textsearch_ja ¤¬³«È¯¤µ¤ì¤Ş¤·¤¿¡£TSearch2Âбş¤ÎÀ½Éʤò¤ï¤º¤«¤Ë²ş½¤¤¹¤ë¤³¤È
-¤ÇÆüËܸìÂбş¤Ë¤­¤Ş¤¹¡£
-
-¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬
-
-¡ÖÆüËܸìÈǤˤĤ¤¤Æ¡×
-
-[ÌõÃí¡§
- ÆüËܸìÈǤÎÀ½ºî¤Ë¤Ä¤¤¤Æ¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡£
-
- ºÇ½ª¹¹¿·Æü: 2008ǯ10·î8Æü
- ËİÌõ¼Ô: ·¬Â¼ ½á (Jun KUWAMURA <juk at postgresql.jp>)
-
- ¤³¤ÎFAQ¤ÎÏÂÌõ¤ÎºîÀ®¤Ë¤¢¤¿¤ê¶¨ÎϤò¤·¤Æ¤¯¤À¤µ¤Ã¤¿Êı¡¹(·É¾Î¤Ïά¤µ¤»¤Æ¤¤¤¿¤À¤­¤Ş¤¹):
-
- ÅÄÃç Ì­(Minoru TANAKA <Tanaka.Minoru at keiken.co.jp>)
- Àаæ ãÉ×(Tatsuo ISHII <ishii at sraoss.co.jp>)
- óîÆ£ ÃοÍ(Tomohito SAITOH <tomos at elelab.nsc.co.jp>)
- ÇϾì È¥(Hajime BABA <baba at kusastro.kyoto-u.ac.jp>)
- ²¬ËÜ °ì¹¬(Kazuyuki OKAMOTO <kaz-okamoto at hitachi-system.co.jp>)
- ¾®¿û ¾¼°ì(Shoichi Kosuge <s-kosuge at str.hitachi.co.jp>)
- »³²¼ µÁÇ·(Yoshiyuki YAMASHITA <dica at eurus.dti.ne.jp>)
- ¶­ ¿¿ÂÀϺ(Sintaro SAKAI <s_sakai at mxn.mesh.ne.jp>)
- À¸±Û ¾»¸Ê(Masami OGOSHI <ogochan at zetabits.com>)
- ÀĞÀî ½Ó¹Ô(Toshiyuki ISHIKAWA <tosiyuki at gol.com>)
- ËÜÅÄ Ìй­(Shigehiro HONDA <fwif0083 at mb.infoweb.ne.jp>)
- ¤»¤» ¤¸¤å¤ó(Jun SESE <sesejun at linet.gr.jp>)
- ¿Àë ±Ñ¹§(Hidetaka KAMIYA <hkamiya at catvmics.ne.jp>)
- ¿û¸¶ ÆØ(Atsushi SUGAWARA <asugawar at f3.dion.ne.jp>)
- °ğÍÕ ¹áÍı(Kaori Inaba <i-kaori at sraoss.co.jp>)
- ˧²ì Ì÷»Ë(Yasufumi Haga <yasufumi.haga at nifty.com>)
-
- ¤ò¤Ï¤¸¤á¡¢¥İ¥¹¥È¥°¥ì¥¹¤Ë´Ø¤¹¤ëÏÃÂêË­ÉÙ¤ÊÆüËܸìPostgreSQL¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¡¢
- ÏÂÌõ¤Î¤­¤Ã¤«¤±¤òºî¤Ã¤Æ¤¯¤ì¤¿¤ê¡¢¤¤¤Ä¤â¥Á¥§¥Ã¥¯¤ò¤·¤Æ¤¯¤ì¤ë
- JF(Linux Japanese FAQ)¥×¥í¥¸¥§¥¯¥È¡¢FreeBSD ¥É¥­¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¥×¥í¥¸¥§¥¯¥È
- ¤ÎÊı¡¹¡¢¤½¤ì¤«¤é¡¢Ä¾Àܤ¢¤ë¤¤¤Ï´ÖÀÜŪ¤Ë¤«¤«¤ï¤Ã¤Æ¤¯¤À¤µ¤ë¤¹¤Ù¤Æ¤Î¥ª¡¼¥×¥ó¥½¡¼¥¹
- ¥³¥ß¥å¥Ë¥Æ¥£¤Î¤ß¤Ê¤µ¤Ş¤Ë´¶¼Õ¤¤¤¿¤·¤Ş¤¹¡£
-
-
- ¤³¤ÎËİÌõʸ½ñ¤Ï ËÜ²È "Frequently Asked Questions" ¤Î¥Ú¡¼¥¸¤Ë "Japanese FAQ"
- ¤È¤¤¤¦¹àÌܤǤ¢¤ê¤Ş¤¹¡£
-
- ¤Ş¤¿¡¢ºÇ¿·ÈǤϰʲ¼¤Î¥µ¥¤¥È¤Ë¤¢¤ê¤Ş¤¹¡£
- http://www.postgresql.jp/wg/jpugdoc/ ¡ÖJPUGʸ½ñ¡¦½ñÀÒ´ØÏ¢Ê¬²Ê²ñ¡×
- http://www.linux.or.jp/JF/JFdocs/INDEX-database.html ¡ÖLinux JF¥×¥í¥¸¥§¥¯¥È¡× http://www.linet.gr.jp/~juk/pgsql/ ¡ÖPostgreSQL Notes for Japanese¡×¡ÊËİÌõ¼Ô¥Ú¡¼¥¸¡Ë
-
- ¤Ê¤ª¡¢¤³¤ÎÏÂÌõ¤Ë´Ø¤¹¤ë¤´°Õ¸«¡¦¤´¼ÁÌä¤Ï(juk at postgresql.jp)¤Ş¤Ç¤ª´ó¤»¤¯¤À¤µ¤¤¡£
- ¡Ê¢¨ ¥á¡¼¥ë¥¢¥É¥ì¥¹¤Î " at " ¤ÏŬÀڤ˾¤·¤Æ¤¯¤À¤µ¤¤¡£È¾³Ñ¤Î "@" ¤Ç¤¹¡£¡Ë
-]
-
diff --git a/doc/FAQ_polish b/doc/FAQ_polish
deleted file mode 100644
index ff50ec26e32..00000000000
--- a/doc/FAQ_polish
+++ /dev/null
@@ -1,1279 +0,0 @@
-
- Frequently Asked Questions (FAQ) o PostgreSQL
-
- Ostatnia aktualizacja: Sobota Luty 7 22:16:21 EST 2004
-
- Ostatnia aktualizacja tl/umaczenia: Piatek Marzec 5 19:31:12 EST 2004
-
- Obecny maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
-
- Tl/umaczenie: Marcin Mazurek (m.mazurek@netsync.pl)
-
- Najbardziej aktualna wersje tego dokumentu mozna znalezc pod adresem:
- http://www.PostgreSQL.org/docs/faqs/FAQ.html.
-
- Odpowiedzi na pytania dotyczace konkretnych systemów operacyjnych
- mozna znalezc pod adresem: http://www.PostgreSQL.org/docs/index.html.
- _________________________________________________________________
-
- Pytania ogólne
-
- 1.1) Co to jest PostgreSQL? Jak to wymawiac?
- 1.2) Jaka licencja chroniony jest PostgreSQL?
- 1.3) Na jakich systemach Unixowych dzial/a PostreSQL?
- 1.4) Na jakich nie-Unixowych systemach dzial/a PostgreSQL?
- 1.5) Skad moge sciagnac PostgreSQL?
- 1.6) Gdzie mozna szukac wsparcia technicznego?
- 1.7) Jaka jest ostatnia dostepna wersja?
- 1.8) Jaka dokumentacja jest dostepna?
- 1.9) Gdzie moge znalezc informacje o znanych bl/edach czy brakujacych
- rozwiazanich?
- 1.10) Jak moge sie nauczyc SQL?
- 1.11) Czy PostgreSQL ma rozwiazany problem Y2K?
- 1.12) Jak moge sie przyl/aczyc do grupy osób bezposrednio pracujacych
- nad rozwojem PostgreSQL?
- 1.13) Jak moge zgl/aszac bl/edy?
- 1.14) Jak mozna porównac PostgreSQL w stosunku do innych DBMS?
- 1.15) W jaki sposób moge wesprzec finansowo PostgreSQL?
-
- Pytania uzytkowników
-
- 2.1) Czy sa jakies driwery ODBC dla PostgreSQL?
- 2.2) Jakie istnieja narzedzia pozwalajace na dostep do PostgreSQL
- przez www?
- 2.3) Czy istnieje jakies GUI dla PostgreSQL?
- 2.4) Za pomoca jakich jezyków programowania mozna sie komunikowac z
- PostgreSQL?
-
- Pytania dotyczace administracji
-
- 3.1) Jak moge zainstalowac PostgreSQL w innej lokalizacji niz
- /usr/local/pgsql?
- 3.2) Podczas startu postmaster'a, otrzymuje komunikat: Bad System Call
- lub "core dumped". Dlaczego?
- 3.3) Podczas startu postmaster'a, otrzymuje komunikat o bl/edzie:
- IpcMemoryCreate. Dlaczego?
- 3.4) Podczas startu postmaster'a, otrzymuje komunikat o bl/edzie:
- IpcSemaphoreCreate. Dlaczego?
- 3.5) W jaki sposób moge kontrolowac pol/aczenia z innych hostów?
- 3.6) Jak powinienem skonfigurowac system baz danych aby uzyskac lepsza
- wydajnosc?
- 3.7) Jakie sa mozliwosci wyszukiwania bl/edów?
- 3.8) Skad sie bierze komunikat: "Sorry, too many clients" podczas
- próby pol/aczenia sie z baza danych?
- 3.9) Jakie pliki znajduja sie w pg_temp?
- 3.10) Dlaczego konieczne jest przy upgradzie PostgreSQL korzystanie ze
- skryptów dump i restore?
-
- Pytania dotyczace uzytkowania
-
- 4.1) Jaka jest róznica pomiedzy kursorami binarnymi (binary cursors) i
- zwykl/ymi kursorami (normal cursors)?
- 4.2) Jak moge pobrac za pomoca SELECT jedynie kilka pierwszych wyników
- zapytania?
- 4.3) Jak moge uzyskac liste wszystkich tabel czy innych rzeczy pod
- psql?
- 4.4) Jak usunac kolumne z tabeli lub zmienic jej typ?
- 4.5) Jaki jest maksymalny rozmiar dla rzedu, tabeli i bazy danych?
- 4.6) Jak duzo miejsca w bazie danych jest potrzebne aby przechowac
- dane ze zwyczajnego pliku tekstowego?
- 4.7) Jak moge sprawdzic jakie tabele, klucze, bazy danych i
- uzytkownicy sa utworzeni?
- 4.8) Moje zapytania sa wolne lub nie uzywaja kluczy. Dlaczego?
- 4.9) Jak moge sprawdzic w jakis sposób "query optimizer" wykonuje moje
- zapytanie?
- 4.10) Co to jest "R-tree index"?
- 4.11) Co to jest "Genetic Query Optimizer"?
- 4.12) Jak moge uzywac wyrazen regularnych w zapytaniach i zapytan
- case-insensitive w wyrazeniach regularnych? Jak korzystac z indeksów
- dla zapytan case-insensitive?
- 4.13) Jak sprawdzic w zapytaniu czy pole ma wartosc NULL?
- 4.14) Jaka jest róznica pomiedzy róznymi typami tekstowymi (character
- types)?
- 4.15.1) Jak moge utworzyc pole typu int, które samo zwieksza swoja
- wartosc?
- 4.15.2) Jak pobrac wartosc pola typu SERIAL po wykonaniu insert'u?
- 4.15.3) Czy uzycie currval() i nextval() nie doprowadzi do "race
- condition" z innymi uzytkownikami?
- 4.15.4) Dlaczego numery sekwencji nie sa ponownie uzywane przy
- przerwaniu transakcji? Skad sie biora luki w numerowaniu kolumny
- tabeli sekwencjami/SERIALem?
- 4.16) Co to jest OID? Co to jest TID?
- 4.17) Jakie jest znaczenie niektórych terminów w PostgreSQL?
- 4.18) Skad bierze sie ten bl/ad: "ERROR: Memory exhausted in
- AllocSetAlloc()"?
- 4.19) Jak sprawdzic jakiej wersji PostgreSQL uzywam?
- 4.20) Dlaczego operacje, które wykonuje na duzych obiektach
- "large-object" zwracaja komunikat: "invalid large obj descriptor"?
- 4.21) Jak stworzyc kolumne której domyslna wartoscia bedzie biezacy
- czas?
- 4.22) Dlaczego zapytania uzywajace IN sa takie wolne?
- 4.23) Jak wykonac "outer join"?
- 4.24) Jak wykonywac zapytanie uzywajace kilku baz danych jednoczesnie?
- 4.25) Jak zwrócic w funkcji wiele rzedów lub kolumn?
- 4.26) Dlaczego nie moge w sposób pewny tworzyc/usuwac tabel
- tymczasowych w funkcjach PL/PgSQL?
- 4.27) Jakie sa mozliwosci replikacji w PostgreSQL?
- 4.28) Jakie mozliwosci szyfrowania oferuje PostgreSQL?
-
- Rozwijanie PostgreSQL
-
- 5.1) Napisal/em wl/asna funkcje. Kiedy uzyje jej w psql, program
- zrzuca pamiec (dump core)?
- 5.2) Jak moge dodac/zgl/osic nowe typy czy funkcje do PostgreSQL?
- 5.3) Jak napisac funkcje C zwracajaca krotke (tuple)?
- 5.4) Zmienil/em plik zródl/owy. Dlaczego po rekompilacji nie widac
- zmiany?
- _________________________________________________________________
-
- Pytania ogólne
-
- 1.1) Co to jest PostgreSQL? Jak to wymawiac?
-
- PostgreSQL wymawia sie Post-Gres-kju-el. Czesto podczas rozmów uzywany
- jest termin "Postgres"
-
- PostgreSQL jest rozszerzeniem systemu zarzadzania bazami danych -
- POSTGRES, kolejna generacja rozwojowego prototypu DBMS. Mimo, ze
- PostgreSQL zachowal/ bardzo dobrze zbudowany model danych (data model)
- i bogaty zestaw typów danych POSTGRES'a, zastapil/ PostQuel'owy jezyk
- zapytan z rozbudowanym podzbiorem jezyka SQL. PostgreSQL jest
- oprogramowaniem darmowym z dostepnymi cal/ymi zródl/ami.
-
- Rozwój PostgreSQL jest prowadzony przez grupe ludzi z Internetu,
- komunikujacych sie poprzez mailowe listy dyskusyjne PostgreSQL.
- Obecnym koordynatorem jest Marc G. Fournier (scrappy@PostgreSQL.org).
- (Zobacz pytanie 1.6 jak sie przyl/aczyc). Ta grupa ludzi jest
- odpowiedzialna za cal/y rozwój PostgreSQL. PostgreSQL jest projektem
- nie kontrolowanym przez zadna firme, aby wziac udzial/ w jego rozwoju
- sprawdz, http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html
-
- Autorami PostgreSQL 1.01 byli Andrew Yu and Jolly Chen. Wiele innych
- osób pomogl/o przy portowaniu, testowaniu, debugowaniu i rozwijaniu
- kodu. Oryginalny kod Postgresa, na którym zostal/ oparty PostgreSQL,
- byl/ wysil/kiem studentów oraz pracowników pracujacych pod
- kierownictwem profesora Michael'a Stonebraker'a z University of
- California w Berkeley.
-
- Oryginalna nazwa oprogramowania w Berkeley byl/ Postgres. Po dodaniu
- obsl/ugi SQL w 1995, nazwa zostal/a zmieniona na Postgres95. Pod
- koniec roku 1996 nazwa zostal/a zmieniona na PostgreSQL.
-
- 1.2) Jaka licencja chroniony jest PostgreSQL?
-
- PostgreSQL objety jest nastepujaca licencja:
-
- PostgreSQL Data Base Management System
-
- Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
- Portions Copyright (c) 1994-6 Regents of the University of California
-
- Permission to use, copy, modify, and distribute this software and its
- documentation for any purpose, without fee, and without a written
- agreement is hereby granted, provided that the above copyright notice
- and this paragraph and the following two paragraphs appear in all
- copies.
-
- IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
- FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
- INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND
- ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
- PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
- CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
- UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-
- Tekst powyzej, jest klasyczna licencja BSD. Nie posiada ona zadnych
- restrykcji co do uzywania kodu zródl/owego. Podoba nam sie i nie
- zamierzamy jej zmieniac.
-
- 1.3) Na jakich systemach Unixowych dzial/a PostreSQL?
-
- PostgreSQL powinien dzial/ac na wszystkich nowych Unix-podobnych
- systemach. Platformy, które zostal/y szczegól/owo przetestowane
- podczas publikowania PostgreSQL sa wymienione w dokumentacji
- opisujacej instalacje.
-
- 1.4) Na jakich nie-Unixowych systemach dzial/a PostgreSQL?
-
- Klient
-
- Mozliwa jest kompilacja bibliteki C libpq, psql oraz innych
- interfejsów i uruchamianie ich na platformie MS Windows. W tym wypadku
- klient jest uruchamiany na MS Windows a z serwerem komunikuje sie
- poprzez TCP/IP. Serwer moze dzial/ac na dowolnej wspieranej platformie
- Unixowej. Plik win32.mak jest dol/aczony do zródel/, aby mozna byl/o
- stworzyc biblioteke libpq oraz program psql dzial/ajace w srodowisku
- Win32. PostgreSQL moze sie takze komunikowac z klientami ODBC.
-
- Serwer
-
- Serwer moze byc uruchamiany na Windows NT i Win2k uzywajac bibliotek
- Cygwin, Cygnus Unix/NT. W pliku pgsql/doc/FAQ_MSWIN znajdujacym sie w
- zródl/ach lub pod adresem:
- http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN na naszych
- stronach.
-
- Obecnie prowadzone sa prace nad stworzeniem wersji dla MS Win
- NT/200/XP. Jesli chcesz sie dowiedziec o obecnym statusie tych prac
- zobacz http://techdocs.postgresql.org/guides/Windows and
- http://momjian.postgresql.org/main/writings/pgsql/win32.html.
-
- Istnieje takze port pod Novell Netware 6 dostepny pod adresem
- http://forge.novell.com.
-
- 1.5) Skad mozna sciagnac PostgreSQL?
-
- Gl/ówny serwer ftp z dostepem "anonymous" dla PostgreSQL znajduje sie
- ftp://ftp.PostgreSQL.org/pub. jesli szukasz mirrorów sprawdz nasza
- gl/ówna strone www.
-
- 1.6) Gdzie mozna szukac wsparcia technicznego?
-
- Adres gl/ównej listy mailowej: pgsql-general@PostgreSQL.org. Jest ona
- przeznaczona dyskusjom dotyczacym spraw zwiazanych z PostgreSQL. Zeby
- zapisac sie na liste, wyslij email z nastepujacymi liniami w tresci
- maila (nie w temacie):
- subscribe
- end
-
- na adres: pgsql-general-request@PostgreSQL.org.
-
- Dostepna jest takze lista wysyl/ajaca digesty. Aby zapisac sie na nia,
- wyslij email na adres: pgsql-general-digest-request@PostgreSQL.org z
- trescia maila zawierajaca:
- subscribe
- end
-
- Digesty sa wysyl/ane do czl/onków listy, kiedy na gl/ówna liste dotrze
- ok 30k wiadomosci.
-
- Dostepna jest takze lista poswiecona bl/edom znalezionym w PostgreSQL.
- Aby zapisac sie na nia wyslij email na adres:
- pgsql-bugs-request@PostgreSQL.org z trescia maila zawierajaca:
- subscribe
- end
-
- Lista poswiecona dyskusjom developerów jest dostepna pod adresem:
- pgsql-hackers-request@PostgreSQL.org Aby sie na nia zapisac wyslij na
- jej adres mail z trescia:
- subscribe
- end
-
- Dodatkowe informacje o listach mailowych dotyczacych PostgreSQL mozna
- znalezc na stronach WWW PostgreSQL pod adresem:
-
- http://www.PostgreSQL.org
-
- W sieci EFNet istnieje kanal/ IRC #PostgreSQL. Ja, do pol/aczenia sie
- z kanal/em uzywam Unixowego polecenia irc -c '#PostgreSQL' "$USER"
- irc.phoenix.net.
-
- Lista firm oferujacych wsparcie na zasadach komercyjnych znajduje sie
- pod adresem: http://techdocs.postgresql.org/companies.php.
-
- 1.7) Jaka jest ostatnia dostepna wersja?
-
- Ostatnia dostepna wersja PostgreSQL to 7.4.1.
-
- Planujemy publikowanie kolejnych wersji co szesc do osmiu miesiecy.
-
- 1.8) Jaka dokumentacja jest dostepna?
-
- Kilka manuali, stron podecznika man, oraz kilka przykl/adów do
- testowania sa zal/aczone w samej dystrybucji. Znajduja sie one w
- katalogu /doc. Manual moze byc takze przegladany poprzez strony www
- pod adresem http://www.PostgreSQL.org/docs.
-
- Istnieja takze dwie ksiazki dostepne online pod adresami
- http://www.PostgreSQL.org/docs/awbook.html i
- http://www.commandprompt.com/ppbook/. Lista ksiazek o PostgreSQL,
- które mozna kupic znajduje sie pod adresem
- http://techdocs.PostgreSQL.org/techdocs/bookreviews.php. Zbiór
- technicznych artykul/ów o PostgreSQL znajduje sie pod adresem
- http://techdocs.postgresql.org/.
-
- psql posiada kilka wbudowanych polecen \d, za pomoca których mozna
- sprawdzic informacje dotyczace typów, operatorów, funkcji, agregatów
- itd.
-
- Na naszej stronie mozna znalezc duzo wiecej dokumentacji.
-
- 1.9) Gdzie mozna znalezc informacje o znanych bl/edach czy brakujacych
- rozwiazanich?
-
- PostgreSQL wspiera rozszerzony podzbiór standardu SQL-92. Sprawdz
- nasza liste TODO aby znalezc informacje o znanych problemach,
- brakujacych rozwiazaniach czy przyszl/ych planach.
-
- 1.10) Jak moge sie nauczyc SQL?
-
- Ksiazka o PostgreSQL http://www.PostgreSQL.org/docs/awbook.html uczy
- SQL. Jest jeszcze inna ksiazka o PostgreSQL dostepna pod adresem:
- http://www.commandprompt.com/ppbook. Dobry tutorial mozesz znalezc pod
- adresem: http://www.intermedia.net/support/sql/sqltut.shtm, oraz
- http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM,
- i http://sqlcourse.com.
-
- Jeszcze inny to "Teach Yourself SQL in 21 Days, Second Edition" pod
- adresem: http://members.tripod.com/er4ebus/sql/index.htm
-
- Wielu z naszych uzytkowników poleca The Practical SQL Handbook,
- Bowman, Judith S., et al., Addison-Wesley. Inni polecaja The Complete
- Reference SQL, Groff et al., McGraw-Hill.
-
- 1.11) Czy PostgreSQL ma rozwiazany problem Y2K?
-
- Tak, bez problemu radzimy sobie z datami po roku 2000 AD, oraz przed
- rokiem 2000 BC.
-
- 1.12) Jak moge sie przyl/aczyc do grupy osób bezposrednio pracujacych nad
- rozwojem PostgreSQL?
-
- Przede wszystkim sciagnij ostatnie dostepne zródl/a i przeczytaj
- dokumentacje przeznaczona dla developerów na naszej stronie www lub
- dostepna takze w zródl/ach PostgreSQL. Nastepnie zapisz sie na listy
- mailowe pgsql-hackers i pgsql-patches. I na koniec, wysyl/aj nam
- wysokiej jakosci patch'e na liste pgsql-patches.
-
- Jest okol/o 12 osób, które maja uprawnienia do commit'owania w CVS
- PostgreSQL'a. Kazdy z nich submitowal/ tak wiele wysokiej jakosci
- patchy, ze stal/o sie niemozliwe dla obecnych commiterów byc z nimi na
- biezaco, wiec musielismy im ufac i miec pewnosc, ze ich poprawki sa
- wysokiej jakosci.
-
- 1.13) Jak moge zgl/aszac bl/edy?
-
- Zajrzyj na strone PostgreSQL BugTool, na której opisane sa wskazówki
- jak zgl/aszac informacje o bl/edach.
-
- Zajrzyj takze na nasz ftp ftp://ftp.PostgreSQL.org/pub, aby sprawdzic
- czy nie ma nowszych wersji PostgreSQL czy patchy.
-
- 1.14) Jak mozna porównac PostgreSQL w stosunku do innych DBMS?
-
- Jest kilka sposobów oceny softwaru: mozliwosci, wydajnosc, stabilnosc,
- wsparcie i cena.
-
- Mozliwosci
- PostgreSQL posiada mozliwosci dostepne w duzych, komercyjnych
- systemach DBMS, takie jak transakcje, podzapytania
- (subselects), triggery, widoki, klucze obce, referential
- integrity, oraz wyrafinowany system blokowania. Mamy takze
- wl/asciowsci których inni nie posiadaja, jak typy definiowane
- przez uzytkownika, dziedziczenie, rules, multi-version
- concurrency control, która redukuje problemy z blokowaniem
- (lock contention).
-
- Wydajnosc
- Wydajnosc PostgreSQL jest podobna do innych komercyjnych i open
- source baz danych. W niektórych sytuacjach jest szybszy w
- niektórych wolniejszy. W porównianiu do MySQL lub mniejszych
- baz danych jestesmy szybsi przy wielu uzytkownikach,
- skomplikowaych zapytaniach i duzym obciazeniu podczas. MySQL
- jest szybszy dla prostych SELECTów wykonywanych przez niewielu
- uzytkowników. Spowodowane jest to narzutem, który sie pojawia
- przy transakcjach. Oczywiscie MySQL nie ma wiekszosci z
- rozwiazan opisanych powyzej w sekcji Mozliwosci . PostgreSQL
- zostal/ stworzony z mysla o stabilnosci, oraz szerokiej gamie
- mozliwosci, ale mimo to staramy sie w kazdej wersji poprawiac
- jego wydajnosc. Ciekawe porównanie PostgreSQL i MySQL mozna
- znalezc pod adresem
- http://openacs.org/philosophy/why-not-mysql.html Dodatkowo,
- MySQL jest firma, która dystrybuuje jej produkty poprzez zasade
- Open Source i wymaga wykupienia licencji w przypadku tworzenia
- close-source software, co ie ma miejsca w przypadku PostgreSQL.
-
- Stabilnosc
- Zdajemy sobie sprawe, ze DBMS musi byc stabilny, w przeciwnym
- wypadku jest bez wartosci. Staramy sie publikowac kod stabilny,
- dobrze przetestowany, z minimum mozliwych bl/edów. Kazde
- wydanie poprzedza co najmniej miesiac testów wersji beta.
- Patrzac na historie wydan PostgreSQL widac, ze dostarczamy
- stabilne, dobrze sprawdzone wersje, które sa gotowe do uzycia w
- srodowisku produkcyjnym. Myslimy, ze proces publikowania
- kolejnych wersji opracowany przez nas jest jednym z lepszych
- wsród innych twórców oprogramowania bazodanowego.
-
- Wsparcie
- Dzieki naszym listom mailowym masz dostep do duzej liczby
- programistów i uzytkowników, którzy pomagaja rozwiazac kazdy
- napotkany problem. Chociaz nie mozemy gwarantowac znalezienia
- rozwiazania danego problemu, nie róznimy sie w tym od innych
- komercyjnych systemów DBMS. Bezposredni kontakt z
- programistami, uzytkownikami, dokumentacja i kodem zródl/owym
- sprawiaja, ze wsparcie oferowane PostgreSQL niejednokrotnie
- jest lepsze niz w innych systemach DBMS. Istnieje takze
- mozliwosc skorzystania z komercyjnego wsparcia dla tych,
- których takiego rozwiazania potrzebuja. (Sprawdz ten punkt
- FAQ.)
-
- Cena
- Korzystanie z PostgreSQL jest darmowe, zarówno w przypadku
- komercyjnym jak i niekomercyjnym. Mozesz korzystac z naszego
- kodu zródl/owego w Twoim produkcie bez zadnych ograniczen, poza
- tymi wymienionymi w licencji BSD przytoczonej powyzej.
-
- 1.15) W jaki sposób moge wesprzec finansowo PostgreSQL?
-
- PostgreSQL korzysta z najlepszej infrastruktury od samego poczatku
- istnienia projektu, czyli roku 1996 kiedy rozpoczelismy prace.
- Wszystko to zawdzieczamy Marc'owi Fournier'owi, który stworzyl/ ta
- infrastrukture i zarzadza nia od lat.
-
- Wysokiej jakosci infrastruktura jest bardzo wazna dla kazdego projektu
- open-source. Zapobiega przerwom w rozwoju projektu i jakimkolwiek
- przestojom.
-
- Oczywiscie korzystanie z wysokiej jakosci infrastruktury nie jest
- tanie. Istnieje wiele róznych miesiecznych, czy jednorazowych
- wydatków, które trzeba ponosic aby wszystko dzial/al/o jak nalezy.
- Jesli Ty, badz Twoja firma moze wspomóc finansowo rozwój PostgreSQL
- odwiedz adres: http://store.pgsql.com/shopping/ gdzie opisane jest jak
- to zrobic.
-
- Chociaz na stronie wspomniana jest nazwa PostgreSQL Inc, "datki" sa
- przeznaczone jedynie na rozwój projektu PostgreSQL i nie sa
- przeznaczane na finansowanie jakiejkolwiek firmy. Jesli wolisz, mozesz
- wysl/ac czek na adres kontaktowy.
- _________________________________________________________________
-
- Jesli mozesz sie pochwalic udanymi wdrozeniami PostgreSQL, prosimy
- abys zgl/osil/ nam to na stronie: http://advocacy.postgresql.org.
-
- User Client Questions
-
- 2.1) Czy sa jakies driwery ODBC dla PostgreSQL?
-
- Dostepne sa dwa driwery ODBC: PsqlODBC i OpenLink ODBC.
-
- Mozesz pobrac PsqlODBC z adresu
- http://gborg.postgresql.org/project/psqlodbc/projdisplay.php
-
- OpenLink ODBC moze byc pobrany z adresu: http://www.openlinksw.com.
- Wspól/pracuje ze standardowym oprogramowaniem klienckim ODBC wiec w
- ten sposób mozesz korzystac z PostgreSQL ODBC dostepnego na kazdej
- pltaformie która wspiera (Win, Mac, Unix, VMS).
-
- Autorzy beda prawdopodobnie sprzedawac ten produkt osobom które
- wymagaja komercyjnego wsparcia, ale wersja darmowa bedzie zawsze
- dostepna. Wszystkie pytania mozesz wysyl/ac na adres:
- postgres95@openlink.co.uk.
-
- 2.2) Jakie istnieja narzedzia pozwalajace na dostep do PostgreSQL przez
- www?
-
- Dobry podrecznik dla poczatkujacych o dostepie do bazy danych przez
- www mozesz znalezc pod adresem: http://www.webreview.com
-
- Do integracji z www, swietnym rozwiazaniem jest PHP. Mozesz znalezc
- wiecej informacji na ten temat pod adresem http://www.php.net.
-
- Wiele osób w przypadku skomplikowanych rozwiazan uzywa Perl'a i
- modul/u CGI.pl lub mod_perl.
-
- 2.3) Czy istnieje jakies GUI dla PostgreSQL?
-
- Tak, istnieje kilka interfejsów graficznych dla PostgreSQL. Wsród nich
- PgAccess ( http://www.pgaccess.org), PgAdmin III
- (http://www.pgadmin.org), RHDB Admin (http://sources.redhat.com/rhdb/
- ) oraz Rekall ( http://www.thekompany.com/products/rekall/,
- komercyjny). Istnieje takze PHPPgAdmin (
- http://phppgadmin.sourceforge.net/ ), webowy interfejs dla PostgreSQL.
-
- Wiecej informacji na ten temat znajduje sie pod adresem See
- http://techdocs.postgresql.org/guides/GUITools.
-
- 2.4) Za pomoca jakich jezyków programowania mozna sie komunikowac z
- PostgreSQL?
-
- Najbardziej popularne jezyki posiiadaja wl/asny interfejs dla
- PostgreSQL. Sprawdz liste rozszerzen dla intersujacego Ciebie jezyka
- programowania.
-
- Ze zródl/ami PostreSQL dystrubuowane sa interfejsy dla nastepujacych
- jezyków programowania:
- * C (libpq)
- * Embedded C (ecpg)
- * Java (jdbc)
- * Python (PyGreSQL)
- * TCL (libpgtcl)
-
- Inne interfejsy sa dostepne pod adresem: http://gborg.postgresql.org w
- sekcji Drivers/Interfaces.
- _________________________________________________________________
-
- Pytania dotyczace administracji
-
- 3.1) Jak moge zainstalowac PostgreSQL w innej lokalizacji niz
- /usr/local/pgsql?
-
- Uzyj opcji --prefix podczas uruchamiania skryptu configure.
-
- 3.2) Podczas startu postmaster'a, otrzymuje komunikat o bl/edzie: Bad
- System Call lub "core dumped". Dlaczego?
-
- Ten bl/ad moze byc wynikiem wielu problemów, ale na poczatek sprawdz
- czy masz zainstalowane rozszerzenia systemu V w jadrze systemu.
- PostgreSQL wymaga do pracy zainstalowanej obsl/ugi pamieci dzielonej i
- semaforów.
-
- 3.3) Podczas startu postmaster'a, otrzymuje komunikat o bl/edzie:
- IpcMemoryCreate. Dlaczego?
-
- Albo nie masz poprawnie skonfigurowanej obsl/ugi pamieci dzielonej w
- jadrze systemu, albo musisz zwiekszyc jej dostepny rozmiar. Dokl/adna
- ilosc jaka potrzebujesz jest zalezna od architektury systemu na jakim
- pracujesz, jak duzo buforów oraz jak duzo procesów backendu
- skonfigurowal/es dla postmaster'a. Dla wiekszosci systemów, z domyslna
- liczba buforów i procesów potrzebujesz minimum w przyblizeniu 1MB.
- Zobacz PostgreSQL Administrator's Guide gdzie szczegól/owo zostal/o
- opisane wykorzystanie pamieci dzielonej i semaforów.
-
- 3.4) Podczas startu postmaster'a, otrzymuje komunikat o bl/edzie:
- IpcSemaphoreCreate. Dlaczego?
-
- Jesli tresc bl/edu brzmi: IpcSemaphoreCreate: semget failed (No space
- left on device) oznacza to, ze jadro systemu nie jest skonfigurowane
- do obsl/ugi wystarczajacej liczby semaforów. Postgres wymaga jednego
- semafor'a na potencjalny jeden proces backend. Tymczasowym
- rozwiazaniem jest uruchomienie programu postmaster z mniejsza
- maksymalna liczba procesów backend. Uzyj opcji -N z parameterem
- mniejszym od domyslnego - 32. Bardziej trwal/ym rozwiazaniem jest
- zwiekszenie parametrów SEMMNS i SEMMNI jadra twojego systemu.
-
- Niedzial/ajace semafory moga spowodowac niepoprawne zamkniecie systemu
- w czasie intensywnego korzystania z bazy.
-
- Jesli tresc bl/edu jest inna, moze to oznaczac, ze obsl/uga semaforów
- nie zostal/a wl/aczona do jadra wcale. Zobacz PostgreSQL
- Administrator's Guide po bardziej szczegól/owe informacje o pamieci
- dzielonej i semaforach.
-
- 3.5) W jaki sposób moge kontrolowac pol/aczenia z innych hostów?
-
- Domyslnie PostgreSQL pozwala jedynie na pol/aczenia za pomoca socketów
- Unixowych z lokalnego hosta. Inne hosty nie beda mogl/y sie pol/aczyc
- z serwerem dopóki nie zostanie dodana opcja -i do postmaster'a, oraz
- nie umozliwi sie autoryzacji na podstawie adresu hostów modyfikujac
- odpowiednio plik $PGDATA/pg_hba.conf. To zmiany pozwola na pol/aczenia
- TCP/IP.
-
- 3.6) Jak powinienem skonfigurowac system baz danych aby uzyskac lepsza
- wydajnosc?
-
- Indeksy bez watpienia moga przyspieszyc wykonywanie zapytan. Polecenie
- EXPLAIN pozwala zobaczyc jak PostgreSQL interpretuje Twoje zapytanie i
- które indeksy sa uzywane.
-
- Jesli wykonujesz bardzo duzo INSERTów, moze warto je wykonac za pomoca
- jednego duzego pliku uzywajac polecenia COPY. Jest to duzo szybsze niz
- pojedyncze INSERTy. Po drugie polecenia SQL nie zawarte w bloku
- okreslajacym transakcje - BEGIN WORK/COMMIT, sa traktowane jako
- pojedyncza transakcja. Rozwaz wykonanie kilku polecen/zdan SQL w
- jednym bloku transakcji. To redukuje narzut nakl/adany przez
- transakcje. Przy duzych zmianach w danych, warto usunac i stworzyc na
- nowo indeksy.
-
- Jest kilka opcji pozwalajacych na poprawienie wydajnosci. Mozesz
- wyl/aczyc fsync() poprzez uruchomienie postmaster'a z opcjami -o -F.
- To spowoduje, ze fsync() nie bedzie zrzucal/ danych na dysk po kazdej
- transakcji.
-
- Mozesz takze uruchomic postmaster'a z opcja -B aby zwiekszyc wielkosc
- pamieci dzielonej uzywanej przez procesy backendów. Jesli ustawisz ta
- wartosc zbyt wysoko i przekroczysz limity ustawione przez kernel na
- pamiec dzielona, postmaster moze sie nie uruchomic. Kazdy bufor
- zajmuje 8K a domyslna ilosc buforów to 64.
-
- Mozesz takze uzyc opcji -S dla backendu aby zwiekszyc maksymalna
- wartosc pamieci uzywana przez proces backendu podczas sortowania.
- Opcja -S jest ustawiana wartoscia podawana w kilobajtach, domyslna
- wartosc to 512K.
-
- Mozesz takze uzyc polecenia CLUSTER aby pogrupowac dane w tabelach wg
- indeksu. Zobacz opis polecenia CLUSTER w manualu zeby dowiedziec sie
- wiecej.
-
- 3.7) Jakie sa mozliwosci wyszukiwania bl/edów?
-
- PostgreSQL ma kilka mozliwosci na raportowanie informacji o jego
- statusie, które moga byc przydatne przy debugowaniu procesu.
-
- Przede wszystkim uruchom skrypt configure z opcja --enable-cassert,
- wiele funkcji assert() monitoruja postep procesu backend i zatrzymuja
- program kiedy wydarzy sie cos nieoczekiwanego.
-
- Zarówno postmaster jak i postgres maja kilka opcji do debugowania. Za
- kazdym razem kiedy uruchamiasz postmaster'a, upewnij sie, ze wysyl/asz
- standardowe wyjscie i error do pliku z logami, np. w ten sposób:
- cd /usr/local/pgsql
- ./bin/postmaster >server.log 2>&1 &
-
- To utworzy plik server.log w gl/ównym katalogu PostgreSQL. Ten plik
- zawiera pozyteczne informacje o problemach i bl/edach, które
- wydarzyl/y sie podczas pracy serwera. Postmaster posiada opcje -d,
- która pozwala na raportowanie bardzo szczególowych informacji. Do
- opcji -d podajemy liczbe, która okresla szczegól/owosc wysyl/anych
- informacji. Musisz miec swiadomosc, ze wysoki poziom logowania bedzie
- powodowal/ tworzenie bardzo duzych plików z logami.
-
- Jesli postmaster nie zostal/ uruchomiony, mozesz uruchomic
- postgres'owy backend z linii polecen, i uruchomic Twoje polecenie SQL
- bezposrednio na nim. Taki sposób jest polecany jedynie w przypadku
- debugowania. Zwróc uwage, ze w tym wypadku zapytanie konczy znak nowej
- linii a nie srednik. Jesli skompilowal/es z opcjami debugowania mozesz
- uzyc debuggera aby sprawdzic co sie dzieje. Poniewz backend nie
- zostal/ uruchomiony przez postmaster'a, nie dzial/a w identycznym
- srodowisku, co oznacza ze powtórzenie warunków w jakich wystapil/y
- problemy moze byc problemem.
-
- Jesli postmaster dzial/a, uruchom psql w jednym z okien, nastepnie
- znajdz PID procesu postgres uzywanego przez psql. Uzyj debuggera aby
- do PID'u postgres'a. Mozesz ustawiac pul/apki (breakpoints) w
- debuggerze i wykonywac zapytania z psql. Jesli debugujesz uruchamianie
- postgres'a, mozesz ustawic zmienna PGOPTIONS="-W n", nastepnie
- uruchomic psql. Opcja ta pozwoli spowolnic uruchomienie na n sekund
- abys mógl/ sie pol/aczyc z procesem za pomoca debugera, ustawic
- jakiekolwiek pul/apki i kontynuowac proces uruchamiania.
-
- postgres moze byc uruchamiany z opcjami -s, -A i -t, które moga byc
- bardzo przydatne przy debuggowaniu i ocenie wydajnosci.
-
- Mozesz takze skompilowac z profilingiem aby zobaczyc jakie funkcje ile
- czasu wykonuja sie. Pliki profilowane dla backendu zostana umieszczone
- w katalogu pgsql/data/base/dbname. Pliki profilu klienta zostana
- umieszczone w biezacym katalogu klienta. Linux wymaga aby kompilowac z
- opcja -DLINUX_PROFILE aby profilowanie odbywal/o sie poprawnie.
-
- 3.8) Skad sie bierze komunikat: "Sorry, too many clients" podczas próby
- pol/aczenia sie z baza danych?
-
- Musisz zwiekszyc limit ilosci jednoczesnych procesów bacekendu dla
- procesu postmaster'a.
-
- Domyslny limit to 32 procesy. Mozesz go zwiekszyc przez restart
- postmaster z odpowiednia wartoscia ustawiana opcje -N w pliku
- postgresql.conf.
-
- Wez pod uwage, ze jesli zwiekszysz wartosc podana w opcji -N na wiecej
- niz 32 musisz takze zwiekszyc wartosc w opcji -B ponad jej domyslna
- wartosc 64; wartosc -B musi byc co najmniej dwa razy wieksza od
- wartosci podanej w opcji -N, a prawdopodobnie powinna byc w
- rzeczywistosci jeszcze wieksza dla optymalnej wydajnosci. Dla duzej
- liczby procesów backendu na pewno zauwazysz, ze trzeba zwiekszyc rózne
- parametry jadra Unixa. Rzeczy, które pownienes sprawdzic to maksymalna
- liczba bloków pamieci dzielonej, SHMMAX; maksymalna liczba semaforów,
- SEMMNS oraz SEMMNI; maksymalna liczba procesów, NPROC; maksymalna
- liczba procesów na jednego uzytkownika, MAXUPRC; i maksymalna liczba
- otwartych plików, NFILE oraz NINODE. Powód dla którego PostgreSQL ma
- limit na maksymalna liczbe procesów backendu to obawa o wyczerpanie
- zasobów systemu.
-
- 3.9) Jakie pliki znajduja sie w pg_temp?
-
- Katalog ten zawiera tymczasowe pliki utworzone przez executor. Dla
- przykl/adu, jesli jakas operacja sortowania jest wymagana do wykonania
- ORDER BY, a samo sortowanie wymaga wiecej miejsca niz parametr
- backendu -S ustawil/ do wykorzystania, wtedy tymczasowe pliki sa
- uzywane do przechowywania tych danych.
-
- Pliki tymczasowe powinny byc usuniete automatycznie, ale mogl/o sie to
- nie stac jesli proces backendu w miedzyczasie nie zakonczyl/ sie
- poprawnie podczas operacji sortowania. Jesli w danym momencie nie
- dzial/aja zadne procesy backendów mozesz spokojnie usunac pliki
- pg_tempNNN.NN.
-
- 3.9) Dlaczego konieczne jest przy upgradzie PostgreSQL korzystanie ze
- skryptów dump i restore?
-
- Twórcy PostgreSQL dokonuja jedynie mal/ych zmian pomiedzy mal/ymi
- upgradami wersji, np z 7.2 do 7.2.1, wtedy upgrade nie wymaga
- korzystania z dump i restore. Przy wiekszych zmianach, np. z wersji
- 7.2 do 7.3, czesto zmianymaja wpl/yw na format przechowywanych danych.
- Zmiany te sa na tyle skomplikowane, ze nie utrzymujemy zgodosci z
- poprzednimi wersjami PostgreSQL. dump pozwala na wydostanie danych w
- takiej postaci, w której l/atwe jest ich zaimportowanie do nowszych
- wersji bez kl/opotu.
-
- W wydaniach gdzie zmiany nie dotycza formatu danych na dysku, mozna
- wykorzystac skryptu pg_upgrade, do upgradu bez uzycia dump/restore.
- Dokumentacja do danego wydania zawiera informacje czy mozliwe jest
- uzycie pg_upgrade.
- _________________________________________________________________
-
- Pytania dotyczace uzywania
-
- 4.1) Jaka jest róznica pomiedzy kursorami binarnymi (binary cursors) i
- zwykl/ymi kursorami (normal cursors)?
-
- Zobacz w manualu opis polecenia DECLARE.
-
- 4.2) Jak moge pobrac za pomoca SELECT jedynie kilka pierwszych wyników
- zapytania?
-
- Zobacz w manualu opis polecenia FETCH lub uzyj polecenia SELECT ...
- LIMIT....
-
- Nawet jesli chesz pobrac kilka pierwszych rzedów z wyniku zapytania,
- cal/e zapytanie musi zostac wykonane. Byc moze powinienes skorzystac z
- polecenia ORDER BY. Jesli istnieje indeks który odpowiada polom
- okreslonym przez ORDER BY, PostgreSQL moze wykorzystac jedynie kilka
- pierwszych rzedów, byc moze bedzie koniecznosc wykonania zapytania do
- momentu az zostana znalezione pozadane wyniki.
-
- Aby otrzymac losowy rzad, uzyj:
- SELECT col
- FROM tab
- ORDER BY random()
- LIMIT 1;
-
-
- 4.3) Jak moge uzyskac liste wszystkich tabel czy innych rzeczy pod psql?
-
- Mozesz sprawdzic zawartosc zródel/ psql, a konkretnie plik
- pgsql/src/bin/psql/describe.c. Zawiera on polecenia SQL które generuja
- wyniki komend z backslashem. Mozesz takze uruchomic psql z opcja -E
- wtedy po wykonaniu polecenia z backslashem wyswietlane bedzie
- zapytanie, które w rzeczywistosci jest wykonywane.
-
- 4.4) Jak usunac kolumne z tabeli lub zmienic jej typ?
-
- DROP COLUMNT zostal/o dodane w wersji 7.3 przy poleceniu ALTER TABLE
- DROP COLUMN. We wczesniejszych wersjach mozesz zrobic tak:
- BEGIN;
- LOCAL TABLE old_table;
- SELECT ... -- wybierz wszystkie kolumny poza ta jedna której chcesz sie pozbyc
- INTO TABLE new_table
- FROM old_table;
- DROP TABLE old_table;
- ALTER TABLE new_table RENAME TO old_table;
-
- Aby zmienic typ danych kolumny mozesz zrobic tak:
- BEGIN;
- ALTER TABLE tab ADD COLUMN new_col new_data_type;
- UPDATE tab SET new_col = CAST(old_col AS new_data_type);
- ALTER TABLE tab DROP COLUMN old_col;
- COMMIT;
-
- 4.5) Jaki jest maksymalny rozmiar dla rzedu, tabeli i bazy danych?
-
- Oto wszystkie ograniczenia:
- Maksymalny rozmiar dla bazdy danych? nieograniczony ( istnieja
- bazy danych o wielkosci 32 TB databases )
- Maksymalny rozmiar dla tabeli? 32 TB
- Maksymalny rozmiar dla rzedu? 1.6 TB
- Maksymalny rozmiar pola? 1 GB
- Maksymalna liczba rzedów w tabeli? nieograniczona
- Maksymalna liczba kolumn w tabeli? 250-1600 w zalezonosci od typów kolumn
- Makasymalna liczba indeksów na tabeli? nieograniczona
-
- Oczywiscie "nieograniczony" nie jest prawda tak do konca, istnieja
- ograniczenia wynikajace z dostepnego miejsca na dysku, pamieci/swapa.
- Kiedy wielkosci te beda bardzo duze moze odbic sie to na wydajnosci.
-
- Maksymalny rozmiar tabeli, czyli 32 TB nie wymaga od systemu
- operacyjnego wsparcia dla duzych plików. Duze tabele sa przechowywane
- jako pliki o rozmiarze 1 GB, wiec ograniczenia co do wielkosci plików
- narzucone przez system plików nie sa istotne.
-
- Masymalny rozmiar tabeli i maksymalna liczba kolumn moze byc
- zwiekszona jesli zwiekszymy domyslny rozmiar bloku (block size) do
- 32k.
-
- 4.6) Jak duzo miejsca w bazie danych jest konieczne aby przechowywac dane
- ze zwyczajnego pliku tekstowego?
-
- Baza danych PostgreSQL moze potrzebowac do pieciu razy wiecej miejsca
- na przechowywanie danych z plików tekstowych niz ich objetosc.
-
- Jako przykl/ad mozemy rozwazyc plik skl/adajacy sie z 100,000 linii
- zbudowanych z liczby cal/kowitej oraz opisu tekstowego w kazdej.
- Zal/ózmy, ze srednio kazdy l/ancuch tekstu w linii zajmuje 20 bajtów.
- Cal/y plik powinien zajmowac ok. 2.8 MB. Rozmiar pliku bazy danych w
- PostgreSQL zawierajacego te dane mozna oszacowac na okol/o 6.4MB:
- 36 bajtów: nagl/ówek kazdego rzedu w przyblizeniu)
- 24 bajty: jedno pole int i jedno pole typu text
- + 4 bajty: wkaznik na stronie do krotki
- --------------------------------------------------
- 64 bajty w jednym rzedzie
-
- Strona danych w PostgreSQL zajmuje 8192 bajtów (8 KB), wiec:
-
- 8192 bajtów na strone
- --------------------- = 128 rzedów na jedna strone w bazie (zaokraglone w dól/)
- 64 bajtów na rzad
-
- 100000 rzedów danych
- ----------------------- = 782 stron w bazie danych (zaokraglone w góre)
- 128 rzedów na strone
-
-782 stron w bazie * 8192 bajtów na strone = 6,406,144 bajtów (6.4 MB)
-
- Indeksy nie powoduja duzego narzutu na zajmowane miejsce, ale
- zawieraja pewne dane, wiec w pewnych przypadkach moga byc cal/kiem
- duze.
-
- NULLe sa przechowywane jako mapy bitowe, wiec uzywaja bardzo mal/o
- miejsca.
-
- 4.7) Jak moge sprawdzic jakie tabele, klucze, bazy danych i uzytkownicy sa
- utworzeni?
-
- psql ma cal/kiem duza ilosc polecen z backslashem aby wydobyc takie
- informacje. Wprowadz \? aby zobaczyc ich spis. Istnieja takze tablice
- systemowe rozpoczynajace sie od pg_, zawierajace interesujace Ciebie
- informacje. Wykonanie psql -l pokaze spis wszystkich baz danych.
-
- Obejrzyj takze plik pgsql/src/tutorial/syscat.source. Zawiera on wiele
- z zapytan typu SELECT, które sa potrzebne aby wydobyc informacje z
- tablic systemowych.
-
- 4.8) Moje zapytania sa wolne lub nie uzywaja kluczy. Dlaczego?
-
- Indeksy nie sa uzywane automatycznie przez kazde z zapytan. Ideksy sa
- uzywane jedynie gdy tabela jest odpowiedniego rozmiaru, wiekszego niz
- wymagany minimalny, a zapytanie wybiera jedynie mal/y procent
- zawartosci tabeli. Wynika to z tego, ze losowy dostep do dysku
- powodowany przez ideksowane poszukiwanie jest czasami wolniejsze niz
- poszukiwanie sekwencyjne bez uzycia kluczy.
-
- Zeby zdecydowac czy indeks powinien byc uzywany, PostgreSQL musi miec
- statystyki dotyczace danej tabeli. Sa one gromadzone przez uzycie
- polecenia VACUUM ANALYZE, lub poprostu ANALYZE. uzywajac statystyk,
- optymalizator wie ile rzedów jest w tabeli i moze lepiej okreslic czy
- indeksy powinny byc uzyte. Statystyki moga byc takze pomocne w
- okresleniu najlepszej kolejnosci wykonania zl/aczenia (join) i jego
- sposobu. Gromadzenie statystyk powinno sie odbywac w okreslonych
- interwal/ach czasu poniewaz dane w tabelach zmieniaja sie.
-
- Indeksy nie sa zazwyczaj uzywane przez ORDER BY lub przy wykonywaniu
- zl/aczen (join). Sekwencyjne przeszukiwanie po którym nastepuje
- sortowanie jest zazwyczaj szybsze nie wyszukiwanie za pomoca indeksu
- na duzej tabeli.
-
- Jakkolwiek LIMIT w pol/aczeniu z ORDER BY czesto bedzie wykorzystywal/
- indeksy poniewaz jedynie mal/a czesc z tabeli jest zwracana. W
- rzeczywistosci, chociaz MAX() i MIN() nie uzywaja indeksów, mozliwe
- jest aby zwrócic te wartosci uzywajac indeksów poprzez uzycie ORDER BY
- i LIMIT.
- SELECT col
- FROM tab
- ORDER BY col [ DESC ]
- LIMIT 1;
-
- Jesli uwazasz, ze optimizer myli sie wybierajac sequential scan, uzyj
- SET enable_seqscan TO 'off' i uruchom testy aby sprawdzic czy wtym
- wypadku zapytanie bedzie szybciej wykonywane.
-
- Kiedy uzywa sie operatorów dopasujacych takich jak LIKE lub ~, indeksy
- beda uzywane jedynie w pewnych wypadkach:
- * Poczatek wyszukiwania jest oparty na poczatku l/ancucha tekstu.
- + wzorce LIKE nie moga sie zaczynac %
- + dopasowania operatorem ~ (dopasowania regularne) musza sie
- zaczynac znakiem specjalnym ^.
- * Poczatek wyszukiwania nie moze sie zaczynac od klas znaków, np.
- [a-e].
- * Case-insensitive searches such as ILIKE and ~* do not utilise
- indexes. Instead, use functional indexes, which are described in
- section 4.12.
- * Standardowe locale C musi byc uzyte przy wykonywaniu initdb
-
- 4.9) Jak moge sprawdzic w jakis sposób "query optimizer" wykonuje moje
- zapytanie?
-
- Zobacz manual dla polecenia EXPLAIN.
-
- 4.10) Co to jest "R-tree index"?
-
- Indeks R-tree jest uzywany do indeksowania danych przestrzennych.
- Indeks hasuujacy nie nadaje sie do wyszukiwania odlegl/osci. Natomiast
- indeks typu B-tree moze wyszukiwac odleglosci jedynie w
- jednowymiarowych przestrzeniach. R-tree indeks radzi sobie z
- przestrzeniami wielo-wymiarowymi. Dla przykl/adu, jesli zostanie
- zal/ozony indeks typu R-tree na polu typu point, system moze bardziej
- wydajnie odpowiadac na zapytania typu "select all points within a
- bounding rectangle."
-
- Zródl/owym dokumentem opisujacym oryginalnie projektowanie R-tree
- indeksów jest:
-
- Guttman, A. "R-trees: A Dynamic Index Structure for Spatial
- Searching." Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of
- Data, 45-57.
-
- Ten dokument mozesz znalezc takze w pracy Stonebraker'a "Readings in
- Database Systems".
-
- Wbudowane indeksy R-trees radza sobie w wielobokami i boxes.
- Teoretycznie, indeksy R-tree moga byc rozszerzone o mozliwosci
- indeksowania w wiecej wymiarowych przestrzeniach. W praktyce,
- rozbudowa indeksów R-tree wymaga troche pracy, a w tej chwili nie
- dysponujemy jakakolwiek dokumentacja jak to zrobic.
-
- 4.11) Co to jest "Genetic Query Optimizer"?
-
- Modul/ GEQO ma za zadanie przyspieszenie optymalizacji zapytan l/aczac
- wiele tabel za pomoca algorytmów genetycznych (Genetic Algorithm
- (GA)). Pozwala na uzywanie duzych zapytan l/aczacych tabele (join
- queries) bez wykorzystywania zasobozernego wyszukiwania.
-
- 4.12) Jak moge uzywac wyrazen regularnych w zapytaniach i zapytan
- case-insensitive w wyrazeniach regularnych? Jak korzystac z indeksów dla
- zapytan case-insensitive?
-
- Operator ~ moze byc wykorzystywany do wyszukiwania za pomoca wyrazen
- regularnych, a ~* do wyszukiwania case-insensitive z wyrazeniami
- regularnymi. Wariant case-insensitive dla LIKE zostal/ nazwany ILIKE.
-
- Porównania case-insensitive sa zazwyczaj wykonywane w nastepujacy
- sposób:
- SELECT *
- FROM tab
- WHERE lower(col) = 'abc'
-
- W tym wypadku standardowe indeksy nie beda uzywane. Mozesz utworzyc
- indeks funkcyjny, poprzez:
- CREATE INDEX tabindex on tab (lower(col));
-
- 4.13) Jak sprawdzic w zapytaniu czy pole ma wartosc NULL?
-
- Mozesz to sprawdzic, testujac wartosc kolumny warunkiem IS NULL albo
- IS NOT NULL.
-
- 4.14) Jaka jest róznica pomiedzy róznymi typami tekstowymi (character
- types)?
-
-Type Nazwa wewnetrzna Uwagi
---------------------------------------------------
-VARCHAR(n) varchar rozmiar okresla maksymalna dl/ugosc, nie matutaj wypel/niania
-CHAR(n) bpchar wypel/niane pustymi znakami do podanej dl/ugosci
-TEXT text bez limitu na dl/ugosc l/ancucha
-BYTEA bytea zmiennej dl/ugosci tablica bajtów (null-byte safe)
-"char" char 1 znak
-
- Jesli bedziesz przegladac katalogi systemowe lub komunikaty o bl/edach
- czesto spotkasz sie z podanymi powyzej nazwami wewnetrznymi.
-
- Pierwsze cztery typy powyzej to tzw typy "varlena" (np. pierwsze
- cztery bajty na dysku to dl/ugosc, po których jest data). Dlatego
- faktyczna dl/ugosc takiego l/ancucha jest troche wieksza niz
- zadeklarowany rozmiar. Te typy takze podlegaja kompresji lub moga byc
- przechowywane out-of-line jako TOAST, wiec faktyczne zuzycie miejsca
- na dysku moze byc mniejsze niz oczekiwane.
-
- VARCHAR(n) jest najodpowiedniejszy do przechowywania l/ancuchów o
- róznej dl/ugosci ale okresla on maksymalna jego dl/ugosc. TEXT jest
- najlepszy dla l/ancuchów o dowolnej dl/ugosci, nie przekraczajacej
- 1GB.
-
- CHAR(n) jast najlepszym typem do przechowywania l/ancuchów o tej samej
- dl/ugosci. CHAR(n) wypel/nia dane do zadanej dl/ugosci, podczas gdy
- VARCHAR(n) przechowuje jedynie dane dostarczone. BYTEA sl/uzy do
- przechowywania danych binarnych, w szczególnosci dla danych
- zawierajacych NULL bajty. Wszystkie typy opisane tutaj maja podobne
- charakterystyki jesli chodzi o wydajnosc.
-
- 4.15.1) Jak moge utworzyc pole które samo zwieksza swoja wartosc?
-
- PostgreSQL ma zaimplementowany typ SERIAL. Automatycznie tworzy
- sekwencje i indeks na tej kolumnie. Dla przykladu:
- CREATE TABLE person (
- id SERIAL,
- name TEXT
- );
-
- zostanie automatycznie prztl/umaczone na:
- CREATE SEQUENCE person_id_seq;
- CREATE TABLE person (
- id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
- name TEXT
- );
- CREATE UNIQUE INDEX person_id_key ON person ( id );
-
- Wiecej informacji o sekwencjach znajdziesz w manualu o
- create_sequence. Mozesz takze uzyc pola OID jako unikalnej wartosci
- dla kazdego rzedu danych. Jesli bedziesz potrzebowal/ z backupowac
- dane robiac dump bazy i odtworzyc ja, musisz uzyc pg_dump z opcja -o
- lub polecenia COPY WITH OIDS aby zachowac OIDy.
-
- 4.15.2) Jak pobrac wartosc pola typu SERIAL po wykonaniu insert'u?
-
- Jednym z podejsc jest pobranie kolejnej wartosci typu SERIAL z
- sekwencji za pomoca funkcji nextval() zanim zostanie wstawiona, a
- pózniej nalezy jej uzyc. Uzywajac przykl/adu z tabeli z punktu 4.15.1,
- moze to wygladac w Perlu na przykl/ad w ten sposób:
- new_id = output of "SELECT nextval('person_id_seq')"
- INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal');
-
- Bedziesz mial/ wtedy ta wartosc przechowana w zmiennej new_id do
- uzytku w innych zapytaniach (np. jako klucz obcy do tabeli person).
- Warto zwrócic uwage, ze nazwa automatycznie utworzonej sekwencji
- SEQUENCE bedzie nastepujaca: <tabela>_<kolumnatypuserial>_seq, gdzie
- tabela i kolumnatypuserial sa nazwami Twojej tabeli i Twojej kolumny
- typu SERIAL.
-
- Inne rozwiazanie to uzycie funkcji currval() na pola typu SERIAL po
- dodaniu nowej wartosci do rzedu zawierajacego kolumne typu SERIAL z
- wstawiona domyslnie wartoscia, np.
- INSERT INTO person (name) VALUES ('Blaise Pascal');
- new_id = output of "SELECT currval('person_id_seq')";
-
- Ostatecznie mozesz uzyc OID zwracanej po wykonaniu INSERT, chociaz to
- jest najmniej przenosne rozwiazanie. W Perlu, wykorzystujac biblioteke
- DBI z modul/em Edmunda Mergla DBD::Pg, oid jest dostepny poprzez
- $sth->{pg_oid_status} po wykonaniu $sth->execute().
-
- 4.15.3) Czy uzycie currval() i nextval() nie doprowadzi do race condition z
- innymi uzytkownikami?
-
- Nie. currval() zwraca biezaca wartosc przypisana przez Twój backend, a
- nie przez wszystkich uzytkowników.
-
- 4.15.4) Dlaczego numery sekwencji nie sa ponownie uzywane przy przerwaniu
- transakcji? Skad sie biora luki w numerowaniu kolumny tabeli
- sekwancjami/SERIALem?
-
- Aby poprawic zbieznosc (concurrency), wartosci sekwencji sa podawane
- dzial/ajacym transakcjom kiedy tego potrzebuja i nie sa blokowane
- dopóki transakcja sie nie zakonczy. To spowoduje przerwy w numerowaniu
- z przerwanych transakcji.
-
- 4.16) Co to jest OID? Co to jest TID?
-
- OID sa PostgreSQL'owym rozwiazaniem problemu unikalnych numerów
- rzedów. Kazdy rzad tworzony przez PostgreSQL otrzymuje unikalny OID.
- Wszystkie OIDy generowane podczas procesu uruchamianego przez skrypt
- initdb maja mniejsza wartosc niz 16384 (na podstawie pliku
- backend/access/transam.h). Wszystkie OIDy tworzone przez uzytkownika
- sa równe lub wieksze podanej wczesniej wartosci. Domyslnie wszystkie
- OIDy sa unikalne nie tylko w pojedynczej tabeli czy bazie danych ale w
- cal/ej instalacji PostgreSQL.
-
- PostgreSQL uzywa OIDów w swoim wewnetrznym systemie tabel, aby mozna
- byl/o je l/aczyc. Te OIDy moga byc uzywane aby identyfikowac rzedy w
- tabelach i wykorzystywac je w zl/aczeniach tych tabel. Zaleca sie abys
- uzywal/ typu OID aby przechowywac wartosci OID. Mozesz utworzyc indeks
- na polu OID aby dostep do niego byl/ szybszy.
-
- OID sa przypisane do wszystkich rzedów z jednego gl/ównego miejsca i
- uzywane sa przez wszystkie bazy danych. Jesli chcial/bys zmienic OID
- na cos innego, lub jesli chcial/bys zrobic kopie tabeli, z orginalnymi
- OIDami nie ma zadnego przeciwwskazania abys to zrobil/:
- CREATE TABLE new_table(old_oid oid, mycol int);
- SELECT old_oid, mycol INTO new FROM old;
- COPY new TO '/tmp/pgtable';
- DELETE FROM new;
- COPY new WITH OIDS FROM '/tmp/pgtable';
-
- OIDy sa przechowywane jako cztero-bajtowe liczby cal/kowite i skoncza
- sie po osiagnieciu czterech miliardów. Nikt jak dotad nie zgl/osil/
- aby cos takiego sie stalo, ale mamy zamiar pozbyc sie tego
- ograniczenia zanim ktos to zgl/osi.
-
- TID sa uzywane aby zidentyfikowac konkretne rzedy z blokami i
- wartoscia ofsetów. TIDy zmieniaja sie wraz ze zmianami rzedów. Sa
- uzywane przez indeksy, aby wskazywac do fizycznych rzedów.
-
- 4.17) Jakie jest znaczenie niektórych terminów w PostgreSQL?
-
- W czesci kodu zródl/owego i starszej dokumentacji uzywamy terminów,
- które maja bardziej ogólne znaczenie. Oto niektóre z nich:
- * table, relation, class
- * row, record, tuple
- * column, field, attribute
- * retrieve, select
- * replace, update
- * append, insert
- * OID, serial value
- * portal, cursor
- * range variable, table name, table alias
-
- Liste terminów zwiazanych z bazami danych mozesz znalezc pod tym
- adresem:http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/
- glossary/glossary.html.
-
- 4.18) Skad bierze sie ten bl/ad "ERROR: Memory exhausted in
- AllocSetAlloc()"?
-
- Prawdopodobnie wyczerpal/a Ci sie pamiec wirtualna (virtual memory) w
- systemie lub Twój kernel ma zbyt nisko ustawione limity dla pewnych
- zasobów. Spróbuj wykonac nastepujace polecenia zanim uruchomisz
- postmaster'a:
- ulimit -d 262144
- limit datasize 256m
-
- W zaleznosci od shell'a jakiego uzywasz jedno z tych polecen moze nie
- zadzial/ac, ale to ustawienie pozwoli ustawic segment danych dla
- procesu znacznie wiekszy i byc moze pozwoli wykonac zapytanie. To
- polecenie zadzial/a dla biezacego procesu oraz wszytkich podprocesów
- utworzonych po wykonaniu polecenia. Jesli ten problem wystepuje z
- klientem SQL, poniewaz backend zwraca zbyt duzo danych, spróbuj
- wykonac to polecenie przed uruchomieniem klienta.
-
- 4.19) Jak sprawdzic jakiej wersji PostgreSQL uzywam?
-
- W psql, wpisz select version();
-
- 4.20) Dlaczego operacje, które wykonuje na duzych obiektach "large-object"
- zwracaja komunikat: "invalid large obj descriptor"?
-
- Musisz uzyc BEGIN WORK i COMMIT przed i po uzyciu uchwytu do duzego
- obiektu, tzn. musisz nimi otoczyc funkcje lo_open ... lo_close.
-
- Obecnie PostgreSQL uzywjac "rule" zamyka uchwyt do duzego obiektu przy
- kazdym wywol/aniu "commit". Wiec pierwsze próba zrobienia czegokolwiek
- z uchwytem spowoduje wypisanie: invalid large obj descriptor. Kod,
- który do tej pory dzial/al/ (przynajmniej wiekszosc razy) bedzie teraz
- generowal/ informacje o bl/edzie jesli nie bedziesz korzystal/ z
- transakcji.
-
- Jesli uzywasz interfejsu klienta jak ODBC byc moze bedziesz musial/
- ustawic auto-commit off.
-
- 4.21) Jak stworzyc kolumne której domyslna wartoscia bedzie biezacy czas?
-
- Uzyj CURRENT_TIMESTAMP:
-CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
-
- 4.22) Dlaczego zapytania uzywajace IN sa takie wolne?
-
- W wersjach wczesniejszych niz 7.4 l/aczymy podzapytania w outer
- queries poprzez sekwencyjne przeszukiwanie wyników podzapytania dla
- kazdego rzedu z outer query. Jesli podzapytanie zwraca jedynie kilka
- rzedów a zewnetrzne zapytanie zwraca ich wiele, IN jest najszybsze.
- Aby przyspieszyc inne zapytania mozna zastapic IN przez EXISTS:
-SELECT *
- FROM tab
- WHERE col IN (SELECT subcol FROM subtab)
-
- na:
-SELECT *
- FROM tab
- WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col)
-
- Aby to rozwiazanie byl/o szybkie, subcol powinna byc kolumna
- indeksowana.
-
- W wersji 7.4 i pózniejszych, IN w rzeczywistosci uzywa tej samej
- wyrafinowanej techniki l/aczenia jak normalne zapytania i jest
- preferowane nad uzywaniem EXISTS.
-
- 4.23) Jak wykonac "outer join"?
-
- PostgreSQL ma zaimplementowane outer join wykorzystujac standardowa
- skl/adnie SQL. Ponizej dwa przykl/ady:
- SELECT *
- FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
- or
- SELECT *
- FROM t1 LEFT OUTER JOIN t2 USING (col);
-
- Te dwa identyczne zapytania l/acza kolumne t1.col z kolumna t2.col,
- ale takze zwróca niepol/aczone rzedy w t1 (te, które nie pasuja w t2).
- RIGHT join dodal/by niepol/aczone rzedy z tabeli t2. FULL join
- zwrócil/by rzedy plus dodatkowo wszystkie rzedy z tabel t1 i t2.
- Sl/owo OUTER jest opcjonalne i jest dodawane domyslnie przy LEFT,
- RIGHT, i FULL join'ach. Zwykl/e join'y sa nazywane INNER joins.
-
- W poprzednich wersjach "outer joins" moga byc zasymulowane poprzez
- uzycie slowa kluczowego UNION i NOT IN. Dla przykl/adu, l/aczac tabele
- tab1 i tab2, nastepujace zapytanie wykonuje outer join:
- SELECT tab1.col1, tab2.col2
- FROM tab1, tab2
- WHERE tab1.col1 = tab2.col1
- UNION ALL
- SELECT tab1.col1, NULL
- FROM tab1
- WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
- ORDER BY col1
-
- 4.24) Jak wykonywac zapytanie uzywajace kilku baz danych jednoczesnie?
-
- Nie ma takiej mozliwosci aby w zapytaniu odpytawac inna baze danych
- poza biezaca. Poniewaz PostgreSQL l/aduje specyficzne dla bazy danych
- katalogi systemowe, nie jest do konca jasne jak zapytanie pomiedzy
- róznymi bazami danych powinno sie zachowywac.
-
- contrib/dblink pozwala na wykonywanie zapytan poprzez rózne bazy
- danych wywol/ujac odpowiednie funkcje. Oczywiscie klient moze l/aczyc
- sie z róznymi bazami danych i l/aczyc informacje w ten sposób uzyskana
- po stronie klienta.
-
- 4.25) Jak zwrócic w funkcji wiele rzedów lub kolumn?
-
- Mozesz w l/atwy sposób zwracac wiele rzedów lub kolumn uzywajac
- funkcji z:
- http://techdocs.postgresql.org/guides/SetReturningFunctions.
-
- 4.26) Dlaczego nie moge w sposób pewny tworzyc/usuwac tabel tymczasowych w
- funkcjach PL/PgSQL?
-
- PL/PgSQL przechowuje w cache zawartosc funkcji, niepozadanym efektem
- tego jest to, ze gdy taka funkcja korzysta z tabel tymczasowych, które
- sa pózniej kasowane i odtwarzane, a funkcja wywol/ywana jest
- ponownie,jej wywol/anie nie powiedzie sie poniewaz cachowana funkcja
- wciaz bedzie wskazywac na stara tablice tymczasowa. Rozwiazaniem tego
- problemu jest uzywanie EXECUTE aby korzystac z tabel tymczasowych w
- PL/PgSQL. To spowoduje, ze zapytanie bedzie parsowane przy kazdym
- wywol/aniu funkcji.
-
- 4.27) Jakie sa mozliwosci replikacji w PostgreSQL?
-
- Jest kilka opcji aby stosowac replikacje typu master/slave. Ten typ
- pozwala jedynie masterowi na dokonywanie zmian w bazie danych, a slave
- moze jedynie te zmiany odczytywac. Na stronie
- http://gborg.PostgreSQL.org/genpage?replication_research znajduje sie
- ich lista. Replikacja typu multi-master jest w trakcie prac, opis
- projektu znajduje sie pod adresem:
- http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
-
- 4.28) Jakie mozliwosci szyfrowania oferuje PostgreSQL?
-
- * contrib/pgcrypto zawiera wiele funkcji za pomoca, których mozemy
- uzywac kryptografii w zapytaniach SQL.
- * Aby szyfrowac transmisje od klienta do serwera, ten musi miec
- ustawiona opcje ssl na true w pliku postgresql.conf, odpowiedni
- wpis host lub hostssl musi wystepowac w pliku pg_hba.conf, oraz
- sslmode nie moze byc wyl/aczone w kliencie. (Warto zwrócic uwage,
- ze mozliwe jest takze uzywanie transportów szyfrujaców przez
- strony trzecie, takie jak stunnel lub ssh, poza natywnym wsparciem
- dla SSL przez PostgreSQL).
- * Hasl/a uzytkowników bazy danych sa automatycznie szyfrowane od
- wersji 7.3. W poprzednich wersjach, nalezy ta funkcjonalnosc
- poprzez wl/aczenie opcji PASSWORD_ENCRYPTION w postgresql.conf.
- * Serwer moze dzial/ac uzywajac szyfrowanego systemu plików.
-
- Rozwijanie PostgreSQL
-
- 5.1) Napisal/em wl/asna funkcje. Kiedy uzyje jej w psql, program zrzuca
- pamiec (dump core)?
-
- Problem moze byc spowodowany przez bardzo wiele rzeczy. Spróbuj
- najpierw przetestowac Twoja funkcje w samodzielnie dzial/ajacym
- programie.
-
- 5.2) Jak moge dodac/zgl/osic nowe typy czy funkcje do PostgreSQL?
-
- Wyslij Twoje propozycje na liste mailowa pgsql-hackers, wtedy
- prawdopodobnie Twój kod znajdzie sie w katalogu contrib/.
-
- 5.3) Jak napisac funkcje C zwracajaca krotke (tuple)?
-
- W wersjach PostgreSQL od numeru 7.3, funckje zwracajace tabele sa w
- pelni wspierane w C, PL/PgSQL i SQL. Sprawdz w Programmer's Guide aby
- uzyskac wiecej informacji. Przykl/ad funkcji napisanej w C zwracajacej
- tabele zostal/ umieszczony w contrib/tablefunc.
-
- 5.4) Zmienil/em plik zródl/owy. Dlaczego po rekompilacji nie widac zmiany?
-
- Pliki Makefiles nie maja dorzuconych odpowiednich zaleznosci dla
- plików nagl/ówkowych (include files). Wykonaj najpierw make clean, a
- nastepnie ponownie make. Jesli uzywasz GCC mozesz uzyc opcji
- --enable-depend przy wykonywaniu configure aby kompilator mógl/
- okreslic zaleznosci samodzielnie.
diff --git a/doc/FAQ_russian b/doc/FAQ_russian
deleted file mode 100644
index a361767ccc5..00000000000
--- a/doc/FAQ_russian
+++ /dev/null
@@ -1,988 +0,0 @@
-
- Otvety na chasto zadavaemye voprosy po PostgreSQL
-
- Data poslednego obnovleniya: Sreda 25 iyunya 23:54:14 EDT 2008
-
- Anglijskij variant soprovozhdaet: Bryus Mom'yan (Bruce Momjian)
- (bruce@monjian.us)
-
- Pereviol na russkij: Viktor Vislobokov (admin@postgresql.ru.net)
-
- Samuyu svezhuyu anglijskuyu versiyu dokumenta mozhno najti na
- http://www.postgresql.org/files/documentation/faqs/FAQ.html.
-
- Samuyu svezhuyu russkuyu versiyu dokumenta mozhno najti na
- http://postgresql.ru.net/docs/FAQ_russian.html.
-
- Otvety na voprosy specifichnye dlya konkretnyh platform mozhno najti
- na http://www.postgresql.org/docs/faq/.
- _________________________________________________________________
-
- Obschie voprosy
-
- 1.1) CHto takoe PostgreSQL? Kak proiznositsya `eto nazvanie? CHto
- takoe Postgres?
- 1.2) Kto upravlyaet PostgreSQL?
- 1.3) Kakovy avtorskie prava na PostgreSQL?
- 1.4) Na kakih platformah rabotaet PostgreSQL?
- 1.5) Gde mozhno vzyat' PostgreSQL?
- 1.6) Kakaya versiya naibolee svezhaya?
- 1.7) Gde poluchit' podderzhku?
- 1.8) Kak mne soobschit' ob oshibke?
- 1.9) Kak najti informaciyu ob izvestnyh oshibkah ili otsutstvuyuschih
- vozmozhnostyah?
- 1.10) Kakaya dokumentaciya imeetsya v nalichii?
- 1.11) Kak nauchit'sya SQL?
- 1.12) Kak mne otpravit' ispravlenie ili prisoedinitsya k komande
- razrabotchikov?
- 1.13) Kak sravnit' PostgreSQL s drugimi SUBD? Mozhet li PostgreSQL
- byt' vstroennoj?
- 1.14) Budet li PostgreSQL rabotat' s poslednimi izmeneniyami, v raznyh
- stranyh, kasayuschimisya dnevnogo vremeni?
- 1.15) Kak mne otpisat'sya ot spiskov rassylki PostgreSQL? Kak
- izbezhat' polucheniya dubliruyuschihsya soobschenij?
-
- Voprosy pol'zovatelej po klientskoj chasti
-
- 2.1) Kakie interfejsy est' dlya PostgreSQL?
- 2.2) Kakie instrumenty suschestvuyut dlya ispol'zovaniya PostgreSQL
- cherez Web?
- 2.3) Est' li u PostgreSQL graficheskij interfejs pol'zovatelya?
-
- Voprosy administrirovaniya
-
- 3.1) Kak mne ustanovit' PostgreSQL v mesto otlichnoe ot
- /usr/local/pgsql?
- 3.2) Kak mne upravlyat' soedineniyami ot drugih komp'yuterov?
- 3.3) Kakie nastrojki mne nuzhno sdelat' dlya uluchsheniya
- proizvoditel'nosti?
- 3.4) Kakie vozmozhnosti dlya otladki est' v nalichii?
- 3.5) Pochemu ya poluchayu soobschenie "Sorry, too many clients" kogda
- pytayus' podklyuchit'sya k baze?
- 3.6) Kak vypolnit' obnovlenie PostgreSQL?
- 3.7) Kakoe komp'yuternoe "zhelezo" ya dolzhen ispol'zovat'?
-
- Voprosy `ekspluatacii
-
- 4.1) Kak vypolnit' SELECT tol'ko dlya neskol'kih pervyh strochek
- zaprosa? Dlya proizvol'noj stroki?
- 4.2) Kak mne najti kakie tablicy, indeksy, bazy dannyh i pol'zovateli
- suschestvuyut? Kak mne uvidet' zaprosy, kotorye ispol'zuet psql dlya
- polucheniya `etoj informacii?
- 4.3) Kak izmenit' tip dannyh kolonki?
- 4.4) Kakovy maksimal'nye razmery dlya strok v tablice, tablic i bazy
- dannyh?
- 4.5) Kak mnogo diskovogo prostranstva v baze dannyh nuzhno dlya
- sohraneniya dannyh iz obychnogo tekstovogo fajla?
- 4.6) Pochemu moi zaprosy rabotayut medleno? Pochemu oni ne ispol'zuyut
- moi indeksy?
- 4.7) Kak posmotret' na to, kak optimizator vypolnyaet moj zapros?
- 4.8) Kak mne vypolnit' poisk regulyarnogo vyrazheniya i poisk
- nezavisimyj ot registra bukv poisk regulyarnogo vyrazheniya? Kak mne
- ispol'zovat' indeks dlya poiska nezavisimogo ot registra bukv?
- 4.9) Kak mne opredelit', chto znachenie polya v kakom-libo zaprose
- ravno NULL? Kak mne soedinit' vozmozhnye NULL? Mogu ya sortirovat'
- polya NULL ili net?
- 4.10) Kakovy otlichiya mezhdu raznymi simvol'nymi tipami?
- 4.11.1) Kak mne sozdat' pole serial/s-avto-uvelicheniem?
- 4.11.2) Kak mne poluchit' znachenie pri vstavke SERIAL?
- 4.11.3) Ne mozhet li poluchit'sya tak, chto ispol'zovanie currval() i
- nextval() privedet k zaciklirovaniyu s drugimi pol'zovatelyami?
- 4.11.4) Pochemu chisla iz moej posledovatel'nosti ne ispol'zuyutsya
- snova pri otmene tranzakcii? Pochemu sozdayutsya razryvy pri numeracii
- v kolonke, gde ya ispol'zuyu posledovatel'nost'/SERIAL?
- 4.12) CHto takoe OID? CHto takoe CTID?
- 4.13) Pochemu ya poluchayu oshibku "ERROR: Memory exhausted in
- AllocSetAlloc()"?
- 4.14) Kak mne uznat', kakaya versiya PostgreSQL zapuschena?
- 4.15) Kak mne sozdat' kolonku kotoraya po umolchaniyu budet soderzhat'
- tekuschee vremya?
- 4.16) Kak vypolnit' vneshnee svyazyvanie?
- 4.17) Kak vypolnyat' zaprosy, ispol'zuyuschie neskol'ko baz dannyh?
- 4.18) Kak mne vernut' iz funkcii neskol'ko strok tablicy?
- 4.19) Pochemu ya poluchayu oshibku "relation with OID #### ne
- suschestvuet", kogda obraschayuts' k vremennym tablicam v funkciyah
- PL/PgSQL?
- 4.20) Kakie est' resheniya dlya replikacii?
- 4.21) Pochemu imena tablicy i kolonok ne raspoznayutsya v v moiom
- zaprose? Pochemu ne sohranyayutsya zaglavnye bukvy?
- _________________________________________________________________
-
- Obschie voprosy
-
- 1.1) CHto takoe PostgreSQL? Kak proiznositsya `eto nazvanie? CHto takoe
- Postgres?
-
- PostgreSQL proiznositsya Post-Gres-Q-L (Post-Gres-K'yu-`El). (Dlya
- osobo lyubopytstvuyuschih kak proiznosit' "PostgreSQL", suschestvuet
- audio-fajl).
-
- PostgreSQL - `eto ob"ektno-relyacionnaya sistema upravleniya bazami
- dannyh (SUBD), kotoraya imeet tradicionnye vozmozhnosti kommercheskih
- SUBD s rasshireniyami, kotorye est' v SUBD novogo pokoleniya.
- PostgreSQL - `eto svobodnoe i polnost'yu otkrytoe programmnoe
- obespechenie.
-
- Razrabotku PostgreSQL vypolnyaet komanda razrabotchikov, razbrosannaya
- po vsemu miru i svyazannaya cherez Internet. Razrabotka yavlyaetsya
- obschestvennym proektom i ne upravlyaetsya kakoj-libo kompaniej.
- Podrobnosti smotrite v FAQ dlya razrabotchikov,
- http://www.postgresql.org/docs/faqs.FAQ_DEV.html
-
- Postgres -- `eto shiroko ispol'zuemoe sokraschenie dlya PostgreSQL.
- Pervonachal'nym imenem proekta v Berkli bylo Postgres i `etot nik
- teper' naibolee populyaren v razgovorah o PostgreSQL po sravneniyu s
- drugimi. Esli vam trudno polnost'yu progovarivat' 'PostgreSQL', mozhno
- prosto govorit' 'Postgres'.
-
- 1.2) Kto upravlyaet PostgreSQL?
-
- Esli vy ischite kakogo-to osobennogo cheloveka, central'nyj komitet
- ili upravlyayuschuyu kompaniyu, to naprasno --- ih net. U nas est'
- yadro komiteta i razrabotchikov, rabotayuschih s CVS, no `eti gruppy
- sluzhat bol'she dlya administrativnyh celej, chem dlya upravleniya.
- Proekt napryamuyu funkcioniruet s pomosch'yu soobschestva
- razrabotchikov i pol'zovatelej, k kotoromu mozhet prisoedinitsya
- kazhdyj. Vsio chto nuzhno -- `eto podpisat'sya na spiski rassylki i
- uchastvovat' v diskussiyah. (Podrobnosti o tom kak vklyuchit'sya v
- razrabotku PostgreSQL smotrite v FAQ dlya razrabotchikov.)
-
- 1.3) Kakovy avtorskie prava na PostgreSQL?
-
- PostgreSQL rasprostranyaetsya po klassicheskoj licenzii BSD. `Eta
- licenziya ne soderzhit ogranichenij na to, kak budet ispol'zovat'sya
- ishodnyj kod. Nam nravitsya `eta licenziya i u nas net namerenij eio
- menyat'. Vot `eta licenziya BSD, kotoruyu my ispol'zuem:
-
- Sistema Upravleniya Bazami Dannyh PostgreSQL
-
- Portions copyright (c) 1996-2008, PostgreSQL Global Development Group
- Portions Copyright (c) 1994-1996 Regents of the University of
- California
-
- Predostavlyayutsya prava na ispol'zovanie, kopirovanie, izmenenie i
- rasprostranenie dannogo programmnogo obespecheniya i ego dokumentacii
- dlya lyubyh celej, besplatno i bez podpisaniya kakogo-libo
- soglasheniya, pri uslovii chto dlya kazhdoj kopii budut predostavleny
- dannoe vyshe zamechanie ob avtorskih pravah, tekuschij paragraf i dva
- sleduyuschih paragrafa.
-
- KALIFORNIJSKIJ UNIVERSITET NE NESET NIKAKOJ OTVETSTVENNOSTI ZA LYUBYE
- POVREZHDENIYA, VKLYUCHAYA POTERYU DOHODA, NANESENNYE PRYAMYM ILI
- NEPRYAMYM, SPECIAL'NYM ILI SLUCHAJNYM ISPOL'ZOVANIEM DANNOGO
- PROGRAMMNOGO OBESPECHENIYA ILI EGO DOKUMENTACII, DAZHE ESLI
- KALIFORNIJSKIJ UNIVERSITET BYL IZVESCHEN O VOZMOZHNOSTI TAKIH
- POVREZHDENIJ.
-
- KALIFORNIJSKIJ UNIVERSITET SPECIAL'NO OTKAZYVAZYVAETSYA PREDOSTAVLYAT'
- LYUBYE GARANTII, VKLYUCHAYA, NO NE OGRANICHIVAYAS' TOL'KO `ETIMI
- GARANTIYAMI: NEYAVNYE GARANTII PRIGODNOSTI TOVARA ILI PRIGODNOSTI DLYA
- OTDEL'NOJ CELI. DANNOE PROGRAMMNOE OBESPECHENIE PREDOSTAVLYAETSYA NA
- OSNOVE PRICIPA "KAK EST'" I KALIFORNIJSKIJ UNIVERSITET NE OBYAZAN
- PREDOSTAVLYAT' SOPROVOZHDENIE, PODDERZHKU, OBNOVLENIYA, RASSHIRENIYA
- ILI IZMENENIYA.
-
- 1.4) Na kakih platformah rabotaet PostgreSQL?
-
- Obychno, PostgreSQL mozhet rabotat' na lyuboj sovremennoj platforme
- sovmestimoj s Unix. V instrukcii po ustanovke, vy najdete spisok teh
- platform, na kotoryh byli provedeny testovye zapuski PostgreSQL k
- momentu vyhoda dannoj versii.
-
- PostgreSQL takzhe rabotaet na operacionnyh sistemah Microsoft Windows,
- osnovannyh na NT, takih kak Win2000 SP4, WinXP i Win2003. Paket
- installyatora dostupen po adresu
- http://www.postgresql.org/download/windows. Versii Windows, osnovannye
- na MS-DOS (Win95, Win98, WinMe) mogut zapuskat' PostgreSQL s
- pomosch'yu Cygwin.
-
- Takzhe suschestvuet versiya sportirovannaya pod Novell Netware 6 na
- http://developer.novell.com/wiki/index.php/Postgresql, i versiya dlya
- OS/2 (eComStation) na
- http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
- SQL&stype=all&sort=type&dir=%2F.
-
- 1.5) Gde mozhno vzyat' PostgreSQL?
-
- CHerez brauzer, ispol'zuya http://www.postgresql.org/ftp/ i cherez
- ftp, ispol'zuya ftp://ftp.postgresql.org/pub/.
-
- 1.6) Kakaya versiya naibolee svezhaya?
-
- Poslednij vypusk PostgreSQL - `eto versiya 8.3.3
-
- My planiruem vypuskat' novye starshie versii kazhdyj god, a mladshie
- versii kazhdye neskol'ko mesyacev.
-
- 1.7) Gde poluchit' podderzhku?
-
- Soobschestvo PostgreSQL predostavlyaet pomosch' mnozhestvu
- pol'zovatelej cherez E-mail. Osnovnoj web-sajt dlya podpiski na spiski
- rassylki po E-mail `eto: http://www.postgresql.org/community/lists/.
- Horoshim mestom dlya togo, chtoby nachat' zadavat' voprosy
- yavlyayutsya spiski general (obschie voprosy) ili bugs (oshibki).
-
- Glavnym IRC kanalom yavlyaetsya #postgreql, raspolozhennyj na servere
- Freenode (irc.freenode.net). CHtoby podklyuchit'sya, vy mozhete
- ispol'zovat' v Unix vyzov programmy irc -c '#postgresql' "$USER"
- irc.freenode.net ili lyuboj drugoj IRC klient. Na `etom zhe servere
- suschestvuyut kanaly na ispanskom (#postgresql-es), francuzskom
- (#postgresqlfr) i brazil'skom (#postgresql-br) yazykah. Takzhe
- suschestvuet kanal po PostgreSQL na servere EFNet.
-
- Spisok kommercheskoj podderzhki kompanij dostupen na
- http://www.postgresql.org/support/professional_support.
-
- 1.8) Kak mne soobschit' ob oshibke?
-
- Posetite stranichku so special'noj formoj otchiota ob oshibke v
- PostgreSQL po adresu: http://www.postgresql.org/support/submitbug.
- Takzhe prover'te nalichie bolee svezhej versii PostgreSQL na nashem
- FTP sajte ftp://ftp.postgresql.org/pub/.
-
- Na oshibki, uvedomlenie o kotoryh byli sdelany cherez special'nuyu
- formu ili otpravlennye v kakoj-libo spisok rassylki PostgreSQL,
- obychno generiruetsya odin iz sleduyuschih otvetov:
- * `Eto ne oshibka i pochemu
- * `Eto izvestnaya oshibka i ona uzhe est' v spiske TODO
- * Dannaya oshibka byla ispravlena v tekuschem vypuske
- * Dannaya oshibka byla ispravlena, no ispravlenie poka ne popalo v
- oficial'nyj vypusk
- * Zaprashivaetsya bolee detal'naya informaciya:
- + Operacionnaya sistema
- + Versiya PostgreSQL
- + Test, vosproizvodyaschij oshibku
- + Otladochnaya informaciya
- + Vyvod backtrace otladchika
- * `Eto novaya oshibka. Mozhet proizojti sleduyuschee:
- + Budet sozdano ispravlenie, kotoroe budet vklyucheno v
- sleduyuschij vypusk
- + Oshibka ne mozhet byt' ispravlena nemedlenno i budet
- dobavlena v spisok TODO
-
- 1.9) Kak najti informaciyu ob izvestnyh oshibkah ili otsutstvuyuschih
- vozmozhnostyah?
-
- PostgreSQL podderzhivaet rasshirennyj podklass SQL:2003. Smotrite nash
- spisok TODO na predmet izvestnyh oshibok, otsutstvuyuschih
- vozmozhnostej i buduschih planov.
-
- Na zapros kakoj-libo vozmozhnosti obychno prihodyat sleduyuschie
- otvety:
- * Dannaya vozmozhnost' uzhe est' v spiske TODO
- * Dannaya vozmozhnost' nezhelatel'na potomu chto:
- + Ona dubliruet suschestvuyuschuyu funkcional'nost', kotoraya
- sleduet standartu SQL
- + Dannaya vozmozhnost' sil'no uslozhnila by kod, no dala by
- malen'kuyu vygodu
- + Dannaya vozmozhnost' nebezopasna ili nenadiozhna
- * Dannaya novaya vozmozhnost' dobavlena v spisok TODO
-
- PostgreSQL ne ispol'zuet kakuyu-libo sistemu otslezhivaniya oshibok,
- potomu chto my obnaruzhili, chto ispol'zovanie pryamogo obrascheniya
- po `elektronnoj pochte i obnovlyaemogo spiska TODO yavlyaetsya bolee
- `effektivnym. Na praktike, oshibki v programmnom obespechenii
- sohranyayutsya ochen' nedolgo, a oshibki, kotorye vazhny bol'shomu
- kolichestvu pol'zovatelej ispravlyayutsya momental'no. Est' tol'ko
- odno mesto, gde mozhno najti vse izmeneniya, uluchsheniya i
- ispravleniya, sdelannye v vypuske PostgreSQL - `eto zhurnaly
- soobschenij sistemy kontrolya versij CVS. Dazhe zamechaniya k vypuskam
- ne soderzhat vse izmeneniya, sdelannye v programmnom obespechenii.
-
- 1.10) Kakaya dokumentaciya imeetsya v nalichii?
-
- PostgreSQL soderzhit mnogo dokumentacii, vklyuchaya bol'shoe
- rukovodstvo, stranicy `elektronnogo rukovodstva man i nekotorye
- malen'kie testovye primery. Smotrite v katalog /doc. Vy takzhe mozhete
- prosmatrivat' dokumentaciyu v Internet po adresu
- http://www.postgresql.org/docs.
-
- Suschestvuet dve knigi po PostgreSQL dostupnye po adresam
- http://www.PostgreSQL.org/docs/books/awbook.html i
- http://www.commandprompt.com/ppbook/. Est' neskol'ko knig po
- PostgreSQL, kotorye mozhno kupit'. Odnu iz naibolee populyarnyh
- napisal Korri Duglas (Korry Douglas). Spisok obzorov po `etim knigam
- dostupen po adresu http://www.postgresql.org/docs/books/. Krome togo,
- po adresu
- http://wiki.postgresql.org/wiki/Community_Generated_Articles%2C_Guides
- %2C_and_Documentation vy mozhete najti kollekciyu tehnicheskih statej,
- posveschennyh PostgreSQL.
-
- Klient komandnoj stroki psql imeet neskol'ko komand \d dlya
- otobrazheniya informacii po tipam, operatoram, funkciyam, agregatam i
- t.d. - ispol'zujte \? dlya polucheniya spiska dostupnyh komand.
-
- Nash sajt soderzhit esche bol'she informacii.
-
- 1.11) Kak mne nauchit'sya SQL?
-
- Vo-pervyh, voz'mite odnu iz knig po PostgreSQL, o kotoryh govorilos'
- vyshe. Mnogim iz nashih pol'zovatelej takzhe nravitsya kniga The
- Practical SQL Handbook, Bowman, Judith S., et al., Addison-Wesley.
- Drugim nravitsya The Complete Reference SQL, Groff et al.,
- McGraw-Hill.
-
- Suschestvuet takzhe mnozhestvo prekrasnyh uchebnikov dostupnyh v
- online:
- * http://www.intermedia.net/support/sql/sqltut.shtm,
- * http://sqlcourse.com.
- * http://www.w3school.com/sql/default.asp
- * http://mysite.verizon.net/Graeme_Birchall/id1.html
-
- 1.12) Kak mne prislat' ispravlenie ili prisoedinitsya k komande
- razrabotchikov?
-
- Smotrite FAQ dlya razrabotchikov.
-
- 1.13) Kak sravnit' PostgreSQL s drugimi SUBD? Mozhet li PostgreSQL byt'
- vstroennym?
-
- Suschestvuet neskol'ko metodov sravneniya programmnogo obespecheniya:
- vozmozhnosti, proizvoditel'nost', nadezhnost', podderzhka i cena.
-
- Vozmozhnosti
- PostgreSQL imeet bol'shinstvo vozmozhnostej predstavlennyh v
- bol'shih kommercheskih SUBD, takie kak: tranzakcii, podzaprosy,
- triggery, predstavleniya, ssylochnoj celostnosti vtorichnogo
- klyucha i raznye blokirovki. U nas est' nekotorye vozmozhnosti,
- kotoryh net u nih: tipy, opredelyaemye pol'zovatelem, mehanizm
- nasledovaniya, pravila i konkuretnoe mnogoversionnoe upravlenie
- dlya raboty s soderzhimym blokirovok.
-
- Proizvoditel'nost'
- Proizvoditel'nost' PostgreSQL shodna s drugimi kommercheskimi
- SUBD i s SUBD s otkrytym ishodnym kodom. V kakih-to veschah my
- bystree, v kakih-to medlennee. Nasha proizvoditel'nosti obychno
- +/-10% po sravneniyu s drugimi SUBD.
-
- Nadezhnost'
- My ponimali, chto nasha SUBD dolzhna byt' nadezhnoj ili ona
- nichego ne budet stoit'. My staraemsya vypuskat' horosho
- proverennyj, stabil'nyj kod, kotoryj soderzhit minimum oshibok.
- Kazhdyj vypusk prohodit stadiyu beta-testirovaniya po krajnej
- mere v techenii odnogo mesyaca i nasha istoriya vypuskov
- pokazyvaet chto my mozhem predostavlyat' stabil'nye, monolitnye
- vypuski, kotorye gotovy k produktivnomu ispol'zovaniyu. My
- verim, chto my proizvodim proverku ne huzhe, chem u drugih
- SUBD.
-
- Podderzhka
- Nash spisok rassylki predostavlyaet vozmozhmozhnost' obscheniya
- s bol'shoj gruppoj razrabotchikov i pol'zovatelej, kotorye
- mogut pomoch' reshit' lyubye voznikshie problemy. V to zhe
- vremya, my ne garantiruem kakie-libo ispravleniya, no i
- razrabotchiki kommercheskih SUBD ne vsegda delayut
- ispravleniya. Pryamoj dostup k razrabotchikam, soobschestvu
- pol'zovatelej, rukovodstvam i ishodnym tekstam chasto delayut
- podderzhku PostgreSQL prevoshodyaschej drugie SUBD.
- Suschestvuet kommercheskaya podderzhka po rezul'tam voznikshih
- incidentov, kotoraya dostupna dlya teh komu ona nuzhna.
- (Smotrite Sekciyu 1.7.)
-
- Cena
- Nash produkt besplaten kak dlya kommercheskogo tak, i ne dlya
- kommercheskogo ispol'zovaniya. Vy mozhete dobavlyat' svoj kod v
- nash produkt bez ogranichenij, za isklyucheniem teh, chto
- opisyvayutsya v nashej licenzii stilya BSD, kotoraya privedena
- vyshe.
-
- PostgreSQL razrabatyvaetsya po arhitekture klient/server, kotoraya
- trebuet otdel'nyh processov dlya kazhdogo klienta i servera, a takzhe
- neskol'ko vspomogatel'nyh processov. Mnogie vstraivaemye arhitektury
- mogut sootvetstvovat' takim trebovaniyam. Odnako, esli vasha
- vstraivaemaya arhitektura trebuet server baz dannyh dlya zapuska
- vnutri prikladnogo processa, vy ne mozhete ispol'zovat' Postgres i vam
- luchshe by vybrat' dlya bazy dannyh kakoe-libo drugoe oblegchennoe
- reshenie.
-
- 1.14) Budet li PostgreSQL rabotat' s poslednimi izmeneniyami, v raznyh
- stranyh, kasayuschimisya dnevnogo vremeni?
-
- Izmeneniya v sohranenii dnevnogo vremeni v SSHA vklyucheny v
- PostgreSQL versii 8.0.[4+] i vo vse sleduyuschie vypuski, naprimer v
- 8.1. Izmeneniya po Kanade i Zapadnoj Avstralii vklyucheny v 8.0.[10+],
- 8.1.[6+] i vse sleduyuschie vypuski. Vypuski PostgreSQL do 8.0
- ispol'zuyut informaciyu o sohranenii dnevnogo vremeni iz bazy dannyh
- vremennyh zon v operacionnoj sisteme.
- _________________________________________________________________
-
- 1.15) Kak mne otpisat'sya ot spiskov rassylki PostgreSQL? Kak izbezhat'
- polucheniya dubliruyuschih soobschenij?
-
- Stranica Majordomo na sajte PostgreSQL pozvolyaet podpisat'sya ili
- otpisat'sya ot lyubogo iz spiskov rassylki PostgreSQL. (Vam mozhet
- ponadobitsya vash parol' dlya Majordomo, kotoryj otpravlyaetsya na
- vash E-mail, chtoby vojti v upravlenie vashimi podpiskami.)
-
- Vse spiski rassylki PostgreSQL nastarivayutsya tak, chtoby gruppovoj
- otvet uhodil na adres spiska i na adres avtora soobscheniya. Tak
- sdelano, chtoby pol'zovateli poluchali otvety na E-mail kak mozhno
- bystree. Esli vy ne hotite poluchat' dubliruyuschie E-mail
- soobscheniya iz spiska, v sluchayah kogda vy uzhe poluchili `eti
- soobscheniya napryamuyu, ustanovite flazhok eliminatecc na stranice
- Change Settings v Majordomo. Vy takzhe mozhete izbezhat' polucheniya
- kopij svoih soobschenij dlya samogo sebya, esli snimite flazhok
- selfcopy.
- _________________________________________________________________
-
- Voprosy pol'zovatelej po klientskoj chasti
-
- 2.1) Kakie interfejsy est' dlya PostgreSQL?
-
- Ustanovka PostgreSQL vklyuchaet tol'ko C i vstroennyj (embedded) C
- interfejsy. Vse drugie interfejsy yavlyayutsya nezavisimymi proektami
- i zagruzhayutsya otdel'no; samostoyatel'nost' proektov pozvolyaet im
- organizovat' sobstvennoe raspisanie vypuskov novyh versij i imet'
- sobstvennuyu komandu razrabotchikov.
-
- Nekotorye yazyki programmirovaniya, takie kak PHP vklyuchayut v sebya
- interfejs k PostgreSQL. Interfejsy dlya takih yazykov kak Perl, TCL,
- Python i mnogih drugih, dostupny na http://pgfoundry.org.
-
- 2.2) Kakie instrumenty suschestvuyut dlya ispol'zovaniya PostgreSQL cherez
- Web?
-
- Prekrasnoe vvedenie vo vzaimodejstvie baz dannyh i Web mozhno najti
- na: http://www.webreview.com
-
- Dlya integracii s Web, PHP http://www.php.net yavlyaetsya neplohim
- interfejsom.
-
- V slozhnyh sluchayah, mnogie pol'zuyutsya Perl i DBD::Pg s CGI.pm ili
- mod_perl.
-
- 2.3) Est' li u PostgreSQL graficheskij interfejs pol'zovatelya?
-
- Dlya PostgreSQL suschestvuet bol'shoe kolichestvo instrumentov s
- graficheskim interfejsom kak kommercheskih, tak i otkrytyh.
- Podrobnosti mozhno najti v Dokumentacii soobschestva dlya GUI
- istrumentov PostgreSQL
- _________________________________________________________________
-
- Voprosy administrirovaniya
-
- 3.1) Kak mne ustanovit' PostgreSQL v mesto otlichnoe ot /usr/local/pgsql?
-
- Zadajte opciyu --prefix kogda zapuskaete configure.
-
- 3.2) Kak mne upravlyat' soedineniyami ot drugih komp'yuterov?
-
- Po umolchaniyu, PostgreSQL razreshaet tol'ko soedineniya na lokal'noj
- mashine cherez sokety domena Unix ili TCP/IP soedineniya. Dlya togo,
- chtoby drugie mashiny smogli podklyuchit'sya k baze vy dolzhny
- izmenit' listen_addresses v postgresql.conf, razreshit'
- host-avtorizaciya v fajle $PGDATA/pg_hba.conf i perestartovat' server
- SUBD.
-
- 3.3) Kakie nastrojki mne nuzhno sdelat' dlya uluchsheniya proizvoditel'nosti?
-
- Suschestvuet tri glavnyh oblasti, kotorye potencial'no mogut
- uvelichit' proizvoditel'nost':
-
- Izmenenie zaprosa
- `Eto oznachaet modifikaciyu zaprosov dlya polucheniya luchshej
- proizvoditel'nosti:
-
- + Sozdanie indeksov, vklyuchaya indeksy vyrazhenij i
- chastichnye indeksy
- + Ispol'zovanie COPY vmesto mnozhestva INSERT
- + Gruppirovka neskol'kih operatorov v edinuyu tranzakciyu dlya
- umen'sheniya nagruzki pri vypolnenii zaversheniya tranzakcii
- + Ispol'zovanie CLUSTER, kogda iz indeksa beriotsya mnozhestvo
- strok
- + Ispol'zovanie LIMIT dlya togo, chtoby vozvraschalas' tol'ko
- chast' vyvoda ot zaprosa
- + Ispol'zovanie Podgotovlennyh (Prepared) zaprosov
- + Ispol'zovanie ANALYZE dlya obsluzhivaniya statistiki
- optimizatora
- + Regulyarnoe ispol'zovanie VACUUM ili pg_autovacuum
- + Udalenie indeksov vo vremya bol'shih izmenenij dannyh
-
- Nastrojka servera
- Nekotorye ustanovki v postgresql.conf vliyayut na
- proizvoditel'nost'. Podrobnyj polnyj spisok ustanovok sm. v
- Administration Guide/Server Run-time Environment/Run-time
- Configuration, a kommentarii sm. v
- http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_co
- nf_e.html i
- http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.
-
- Vybor "zheleza" - apparatnogo obespecheniya
- Vliyanie "zheleza" na proizvoditel'nost' podrobno opisano v
- http://www.powerpostgresql.com/PerfList/ i
- http://momjian.us/main/writings/pgsql/hw_performance/index.html
- .
-
- 3.4) Kakie vozmozhnosti dlya otladki est' v nalichii?
-
- Est' mnozhestvo ustanovok v nastrojkah servera, nachinayuschihsya na
- log_* na
- http://www.postgresql.org/docs/current/interactive/runtime-config-logg
- ing.html, pozvolyayuschih protokolirovat' zaprosy i statistiku raboty
- processa, kotoraya ochen' polezna dlya otladki i izmereniya
- proizvoditel'nosti.
-
- 3.5) Pochemu ya poluchayu soobschenie "Sorry, too many clients" kogda
- pytayus' podklyuchit'sya k baze?
-
- Vy dostigli ustanovlennogo po umolchaniyu ogranicheniya v 100 sessij
- podklyucheniya k baze dannyh. Vam neobhodimo uvelichit' limit na
- kolichestvo konkurentnyh backend processov dlya vashego servera BD,
- izmeniv znachenie max_connections v fajle postgresql.conf i
- perestartovat' server BD.
-
- 3.6) Kak vypolnit' obnovlenie PostgreSQL?
-
- Sm. informaciyu ob obnovlenii v
- http://www.postgresql.org/support/versioning i special'nye instrukcii
- v
- http://www.postgresql.org/docs/current/static/install-upgrading.html.
-
- 3.7) Kakoe komp'yuternoe "zhelezo" ya dolzhen ispol'zovat'?
-
- Poskol'ku "zhelezo" personal'nyh komp'yuterov yavlyaetsya naibolee
- sovmestimym, lyudi sklonny verit', chto takoe "zhelezo" imeet
- odinakovoe kachestvo. `Eto ne tak. Pamyat' ECC, SCSI i kachestvennye
- materinskie platy yavlyayutsya bolee nadiozhnymi i imeyut bolee
- luchshuyu proizvoditel'nost', chem menee dorogoe "zhelezo". PostgreSQL
- budet rabotat' na lyubom "zheleze", no esli dlya vas vazhny
- nadiozhnost' i proizvoditel'nost', to s vashej storony budet mudro
- postavit' sootvetstvuyuschee "zhelezo". Obsudit' raznoe "zhelezo"
- mozhno v nashih spiskah rassylki.
- _________________________________________________________________
-
- Voprosy `ekspluatacii
-
- 4.1) Kak vypolnit' SELECT tol'ko dlya neskol'kih pervyh strochek zaprosa?
- Proizvol'noj stroki?
-
- Dlya polucheniya tol'ko neskol'kih strok, esli vy znaete ih
- kolichestvo na moment vypolneniya SELECT ispol'zujte LIMIT.
- Esli est' kakoj-libo indeks, kotoryj sovpadaet s ORDER BY, to
- vozmozhno, chto ves' zapros vypolnen i ne budet. Esli vy ne znaete
- kolichestva neobhodimyh strok na moment vypolneniya SELECT,
- ispol'zujte kursor i FETCH.
-
- To SELECT a random row, use:
- SELECT col
- FROM tab
- ORDER BY random()
- LIMIT 1;
-
- 4.2) Kak mne najti kakie tablicy, indeksy, bazy dannyh i pol'zovateli
- suschestvuyut? Kak mne uvidet' zaprosy, kotorye ispol'zuet psql dlya
- polucheniya `etoj informacii?
-
- CHtoby prosmatrivat' tablicy v psql, ispol'zujte komandu \dt. Polnyj
- spisok komand v psql vy mozhete poluchit', ispol'zuya \?. Krome togo,
- vy mozhete posmotret' ishodnyj kod psql v fajle
- pgsql/src/bin/psql/describe.c. On soderzhit komandy SQL kotorye
- generiruyutsya pri vvode v psql komand, nachinayuschihsya s obratnoj
- kosoj cherty. Vy takzhe mozhete zapustit' psql s opciej -E tak, chtoby
- `eta programma vydavala zaprosy, kotorye ona ispol'zuet dlya
- vypolneniya zadannyh vami komand. PostgreSQL takzhe predostavlyaet SQL
- sovmestimyj s INFORMATION SCHEMA interfejs, s pomosch'yu kotorogo, vy
- mozhete sformirovat' zapros na poluchenie informacii o baze dannyh.
-
- Takzhe suschestvuyut sistemnye tablicy, nachinayuschiesya s pg_.
-
- Ispol'zujte psql -l dlya polucheniya spiska vseh baz dannyh.
-
- Takzhe posmotrite fajl pgsql/src/tutorial/syscat.source. On pokazyvaet
- mnogie iz operatorov SELECT neobhodimyh dlya polucheniya informacii iz
- sistemnyh tablic bazy dannyh.
-
- 4.3) Kak izmenit' tip dannyh kolonki?
-
- V 8.0 i bolee pozdnih versiyah, izmenenie tipa kolonki vypolnyaetsya
- ochen' legko cherez ALTER TABLE ALTER COLUMN TYPE.
-
- V bolee rannih versiyah sdelajte tak:
- BEGIN;
- ALTER TABLE tab ADD COLUMN new_col new_data_type;
- UPDATE tab SET new_col = CAST(old_col AS new_data_type);
- ALTER TABLE tab DROP COLUMN old_col;
- COMMIT;
-
- 4.4) Kakovy maksimal'nye razmery dlya strok v tablice, tablic i bazy dannyh?
-
- Suschestvuyut sleduyuschie ogranicheniya:
-
- Maksimal'nyj razmer bazy? neogranichen (suschestvuyut bazy na 32 TB)
- Maksimal'nyj razmer tablicy? 32 TB
- Maksimal'nyj razmer stroki? 400 Gb
- Maksimal'nyj razmer polya? 1 GB
- Maksimal'noe kolichestvo strok v tablice? neogranicheno
- Maksimal'noe kolichestvo kolonok v tablice? 250-1600 v zavisimosti ot
- tipa
- Maksimal'noe kolichestvo indeksov v tablice? neogranicheno
-
- Razumeetsya, ponyatie "neogranicheno" na samom dele ogranichivaetsya
- dostupnym diskovym prostranistvom i razmerami pamyati/svoppinga. Kogda
- znacheniya perechislennye vyshe neopravdano bol'shie, mozhet
- postradat' proizvoditel'nost'.
-
- Maksimal'nyj razmer tablicy v 32 TB ne trebuet chtoby operacionnaya
- sistema podderzhivala fajly bol'shih razmerov. Bol'shie tablicy
- hranyatsya kak mnozhestvo fajlov razmerom v 1 GB, tak chto
- ogranicheniya, kotorye nakladyvaet fajlovaya sistema ne vazhny.
-
- Maksimal'nyj razmer tablicy i maksimal'noe kolichestvo kolonok mogut
- byt' uvelicheny v chetyre raza, esli razmer bloka po umolchaniyu budet
- uvelichen do 32k.
-
- Suschestvuet ogranichenie, po kotoromu indeksy ne mogut sozdavat'sya
- dlya kolonok dlinnee chem 2,000 simvolov. K schast'yu takie indeksy
- vryad li dejstvitel'no komu-to nuzhny. Unikal'nost' garantiruetsya
- nailuchim obrazom, s pomosch'yu funkcional'nogo indeksa iz h`esha MD5
- dlinnoj kolonki, a polnotekstovoe indeksirovanie pozvolyaet iskat'
- slova vnutri kolonki.
-
- 4.5) Kak mnogo diskovogo prostranstva v baze dannyh nuzhno dlya sohraneniya
- dannyh iz obychnogo tekstovogo fajla?
-
- SUBD PostgreSQL mozhet potrebovat'sya diskovogo prostranstva do 5 raz
- bol'she dlya sohraneniya dannyh iz prostogo tekstovogo fajla.
-
- V kachestve primera, rassmotrim fajl v 100,000 strok v kazhdoj, iz
- kotoryh celoe chislo i tekstovoe opisanie. Pri `etom dlina teksta, v
- srednem, sostavlyaet 20 bajt. Razmer prostogo fajla sostavit 2.8 MB.
- Razmer bazy PostgreSQL, soderzhaschej `eti zhe dannye sostavit
- priblizitel'no 5.2 MB iz kotoryh:
- 24 bajt: na kazhdyj zagolovok stroki v tablice (priblizitel'no)
- + 24 bajta: odno pole s celochislennym tipom i odno tekstovoe pole
- + 4 bajta: ukazatel' na stranice dlya vsej tablichnoj stroki
- ----------------------------------------
- 56 bajt na stroku v tablice
-
- Razmer stranicy dannyh v PostgreSQL sostavlyaet 8192 bajt (8 KB), tak chto:
-
- 8192 bajt na stranicu
- --------------------- = 158 strok v tablice na stranicu BD (okruglionno)
- 52 bajt na stroku v tablice
-
- 100000 strok dannyh
- ----------------------- = 633 stranic v BD (okruglionno)
- 158 strok v tablice na stranicu
-
- 633 stranic BD * 8192 bajt na stranicu = 5,185,536 bajt (5.2 MB)
-
- Indeksy ne trebuyut tak mnogo, no poskol'ku oni sozdayutsya dlya
- bol'shogo kolichestva dannyh, oni takzhe mogut byt' veliki.
-
- Znacheniya NULL hranyatsya kak bitovye karty i po`etomu oni zanimayut
- ochen' malo mesta.
-
- 4.6) Pochemu moi zaprosy rabotayut medleno? Pochemu oni ne ispol'zuyut moi
- indeksy?
-
- Indeksy ne ispol'zuyutsya dlya kazhdogo zaprosa. Oni ispol'zuyutsya
- tol'ko esli tablica bol'she minimal'nogo razmera i zapros vybiraet
- tol'ko malen'kij procent strok v tablice. Tak ustroeno, potomu chto
- dostup k disku s primeneniem randomizacii pri skanirovanii indeksov
- mozhet byt' medlennee, chem prostoe chtenie tablicy ili ee
- posledovatel'noe skanirovanie.
-
- CHtoby opredelit' neobhodimost' ispol'zovaniya indeksa dlya kakoj-libo
- tablicy, PostgreSQL dolzhen imet' statistiku po `etoj tablice. `Eta
- statistika sobiraetsya pri ispol'zovanii VACUUM ANALYZE ili prosto
- ANALYZE. Ispol'zuya statistiku, optimizator uznaet o tom kak mnogo
- strok v tablice i esli on dolzhen ispol'zovat' indeksy, to on mozhet
- prinimat' luchshie resheniya. Statistika takzhe vliyaet na opredelenie
- optimal'nogo poryadka svyazyvaniya i metoda svyazyvaniya. Pri
- izmenenii soderzhimogo tablicy dolzhen periodicheski vypolnyatsya sbor
- statistiki.
-
- Obychno indeksy ne ispol'zuyutsya dlya ORDER BY ili dlya vypolneniya
- svyazyvanij. Posledovatel'nyj perebor sleduyuschij za yavnoj
- sortirovkoj obychno bystree, chem poisk po indeksam v bol'shoj
- tablice. Odnako, ORDER BY chasto kombiniruetsya s LIMIT i v `etom
- sluchae indeks budet ispol'zovat'sya, poskol'ku pri vypolnenii budet
- vozvraschat'sya nebol'shaya chast' tablicy.
-
- Esli vam kazhetsya, chto optimizator nekorrektno vybiraet
- posledovatel'nyj perebor, ispol'zujte SET enable_seqscan TO 'off' i
- zapustite zapros snova, chtoby uvidet', dejstvitel'no li skanirovanie
- indeksov bystree.
-
- Kogda ispol'zuyutsya operacii s shablonami, naprimer LIKE ili ~,
- indeksy mogut byt' ispol'zovany v sleduyuschih sluchayah:
- * Nachalo stroki poiska dolzhno sovpadat' s nachalom iskomoj stroki,
- t.e.:
- + LIKE shablony ne dolzhny nachinat'sya s %..
- + ~ shablony regulyarnyh vyrazhenij dolzhna nachinat'sya na ^.
- * Stroka poiska ne dolzhna nachinat'sya s simvola klassa, t.e.
- [a-e].
- * Poisk nezavisimyj ot registra, takoj kak ILIKE i ~* ne ispol'zuet
- indeksy. Vmesto nego, ispol'zujte indeksy vyrazhenij, kotorye
- opisyvayutsya v sekcii 4.8.
- * Vo vremya initdb dolzhna ispol'zovat'sya lokal' po umolchaniyu C,
- potomu chto ne suschestvuet vozmozhnosti uznat' sleduyuschij
- naibol'shij simvol dlya ne-C lokali. Vy mozhete dlya takih
- sluchaev sozdat' special'nyj indeks text_pattern_ops kotoryj
- rabotaet tol'ko dlya LIKE indeksirovaniya. Dlya poiska slov takzhe
- mozhno ispol'zovat' polnotekstovyj indeks.
-
- 4.7) Kak posmotret' na to, kak optimizator vypolnyaet moj zapros?
-
- Smotrite stranicu rukovodstva posvyaschennuyu EXPLAIN.
-
- 4.8) Kak mne vypolnit' poisk regulyarnogo vyrazheniya i poisk nezavisimyj ot
- registra bukv poisk regulyarnogo vyrazheniya? Kak mne ispol'zovat' indeks
- dlya poiska nezavisimogo ot registra bukv?
-
- Operator ~ proizvodit poisk regulyarnogo vyrazheniya, a operator ~*
- proizvodit nezavisimyj ot registra bukv poisk regulyarnogo
- vyrazheniya. Nezavisimyj ot registra variant LIKE nazyvaetsya ILIKE.
-
- Nezavisimoe ot registra sravnenie obychno vyrazhaetsya tak:
- SELECT *
- FROM tab
- WHERE lower(col) = 'abc';
-
- `Eta konstrukciya ne budet ispol'zovat' standartnyj indeks. Odnako,
- esli vy sozdadite indeks vyrazheniya, on budet ispol'zovan:
- CREATE INDEX tabindex ON tab (lower(col));
-
- Esli vysheukazannyj indeks sozdaiotsya kak UNIQUE, to kolonka, dlya
- kotoroj on sozdaiotsya mozhet hranit' simvoly i v verhnem, i v nizhnem
- registre, indes ne mozhet imet' identichnyh znachenij, kotorye
- otlichayutsya tol'ko registrom. CHtoby v kolonke mozhno bylo hranit'
- simvoly tol'ko v opredelionnom registre, ispol'zujte ogranichenie
- CHECK ili proverku cherez trigger.
-
- 4.9) Kak mne opredelit', chto znachenie polya v kakom-libo zaprose ravno
- NULL? Kak mne soedinit' vozmozhnye NULL? Mogu ya sortirovat' polya NULL ili
- net?
-
- Vy prosto sravnivaete znachenie s IS NULL i IS NOT NULL, kak zdes':
- SELECT *
- FROM tab
- WHERE col IS NULL;
-
- CHtoby soedinit' s vozmozhnymi znacheniyami NULL, ispol'zujte
- COALESCE() kak zdes':
- SELECT COALESCE(col1, '') || COALESCE(col2, '')
- FROM tab
-
- CHtoby otsortirovat' dannye po znacheniyu ispol'zujte modifikatory IS
- NULL i IS NOT NULL v vyrazhenii ORDER BY. Kogda oni budut generirovat'
- znacheniya istina, to pri sortirovke oni budut vyshe, chem znacheniya
- lozh', tak chto zapisi s NULL budut v otsortirovannom spiske sverhu:
- SELECT *
- FROM tab
- ORDER BY (col IS NOT NULL);
-
- 4.10) Kakovy otlichiya mezhdu raznymi simvol'nymi tipami?
-
- Tip Vnutrennee imya Zamechaniya
- VARCHAR(n) varchar razmer zadaet maksimal'nuyu dlinu, net zapolneniya
- CHAR(n) bpchar zapolnyaetsya pustotoj do fiksirovannoj dliny
- TEXT text net zadavaemogo verhnego ogranicheniya ili dliny
- BYTEA bytea massiv bajt peremennoj dliny (mozhno ispol'zovat'
- null-bajt bez opaski)
- "char" char odin simvol
-
- Vnutrennee imya vy mozhete uvidet', kogda smotrite sistemnye katalogi
- i v nekotoryh soobscheniyah ob oshibkah.
-
- Pervye chetyre tipa yavlyayutsya "varlena" tipami (t.e., pervye
- chetyre bajta na diske yavlyayutsya dlinnoj, za kotoroj sleduyut
- dannye). Takim obrazom, fakticheski ispol'zuemoe prostranstvo bol'she,
- chem oboznachennyj razmer. Odnako, dlinnye znacheniya takzhe
- szhimayutsya, tak chto zanimaemoe diskovoe prostranstvo mozhet takzhe
- byt' i men'she, chem ozhidalos'.
- VARCHAR(n) - `eto luchshee reshenie, kogda nuzhno hranit' stroki
- peremennoj dliny, ne prevyshayuschie opredelennogo razmera. TEXT -
- `eto luchshee reshenie dlya strok neogranichennoj dliny, s maksimal'no
- dopustimoj dlinoj v 1 gigabajt.
-
- CHAR(n) - `eto luchshee reshenie dlya hraneniya strok, kotorye obychno
- imeyut odinakovuyu dlinu. CHAR(n) zapolnyaetsya pustotoj do zadannoj
- dliny, v to vremya kak VARCHAR(n) hranit tol'ko simvoly, iz kotoryh
- sostoit stroka. BYTEA ispol'zuetsya dlya hraneniya binarnyh dannyh,
- znacheniya kotoryh mogut vklyuchat' NULL bajty. Vse tipy opisannye
- zdes', imeyut shodnye harakteristiki proizvoditel'nosti.
-
- 4.11.1) Kak mne sozdat' pole serial/s-avto-uvelicheniem?
-
- PostgreSQL podderzhivaet tip dannyh SERIAL. On avtomaticheski sozdaet
- posledovatel'nost'. Naprimer:
- CREATE TABLE person (
- id SERIAL,
- name TEXT
- );
-
- avtomaticheski transliruetsya v:
- CREATE SEQUENCE person_id_seq;
- CREATE TABLE person (
- id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
- name TEXT
- );
-
- Avtomaticheski sozdannaya posledovatel'nost' imeet imya vida
- <tablica>_<kolonka_serial>_seq, gde tablica i kolonka_serial - `eto
- sootvetstvenno imena tablicy i kolonki s tipom SERIAL. Smotrite
- podrobnosti o posledovatel'nostyah na stranice rukovodstva
- posvyaschennoj create_sequence.
-
- 4.11.2) Kak mne poluchit' znachenie pri vstavke SERIAL?
-
- Prostejshij sposob poluchit' naznachennoe znachenie SERIAL `eto
- ispol'zovat' RETURNING. Ispol'zuya dlya primera tablicu v 4.11.1, `eto
- mozhet vyglyadet' tak:
- INSERT INTO person (name) VALUES ('Blaise Pascal') RETURNING id;
-
- Vy takzhe mozhete vyzvat' nextval() i ispol'zovat' `eto znachenie v
- INSERT ili vyzvat' currval() posle INSERT.
-
- 4.11.3) Ne mozhet li poluchit'sya tak, chto ispol'zovanie currval() i
- nextval() privedet k zaciklirovaniyu s drugimi pol'zovatelyami?
-
- Net. currval() vozvraschaet tekuschee znachenie, naznachennoe vashej
- sessiej, a ne drugimi sessiyami.
-
- 4.11.4) Pochemu chisla iz moej posledovatel'nosti ne ispol'zuyutsya snova pri
- otmene tranzakcii? Pochemu sozdayutsya razryvy pri numeracii v kolonke, gde
- ya ispol'zuyu posledovatel'nost'/SERIAL?
-
- Dlya realizacii konkuretnosti, znacheniya posledovatel'nostej, pri
- neobhodimosti vydayutsya vo vremya zapuska tranzakcij i ne
- blokiruyutsya do polnogo vypolneniya tranzakcij. `Eto mozhet vyzyvat'
- razryvy v numeracii pri otmene tranzakcij.
-
- 4.12) CHto takoe OID? CHto takoe CTID?
-
- Esli tablica sozdana s WITH OIDS, to kazhdaya stroka poluchaet
- unikal'nyj indentifikator OID. OID - `eto avtomaticheski naznachaemoe
- unikal'noe 4-h bajtovoe celoe chislo, kotoroe unikal'no dlya vsej
- ustanovlennoj SUBD. Odnako, posle togo kak ego znachenie prevysit 4
- milliarda, znacheniya OID nachinayut dublirovat'sya. PostgreSQL
- ispol'zuet OID dlya svyazyvaniya svoih vnutrennih tablic.
-
- Dlya unikal'nogo znacheniya v strokah tablicy pol'zovatelya, luchshim
- sposobom yavlyaetsya ispol'zovanie SERIAL vmesto OID, potomu chto
- posledovatel'nosti SERIAL unikal'ny tol'ko vnutri tablicy i takim
- obrazom men'she podverzheny perepolneniyu. Dlya hraneniya znachenij
- 8-mi bajtnoj posledovatel'nosti dostupen tip SERIAL8.
-
- CTID ispol'zuetsya dlya identifikacii special'nyh fizicheskih zapisej
- s blochnymi i offset znacheniyami. CTID izmenyaetsya posle togo kak
- stroki v tablice byli izmeneny ili peregruzheny.
-
- TID ispol'zuetsya indeksnymi zapisyami v kachestve ukazatelya na
- fizicheskie zapisi.
-
- 4.13) Pochemu ya poluchayu oshibku "ERROR: Memory exhausted in
- AllocSetAlloc()"?
-
- Predpolozhitel'no u vas zakonchilas' virtual'naya pamyat' ili chto
- vashe yadro imeet malen'kij limit na opredelennye resursy. Popytajtes'
- pered zapuskom servera BD vypolnit' sleduyuschie komandy:
- ulimit -d 262144
- limit datasize 256m
-
- V zavisimosti ot komandnogo interpretatora shell, tol'ko odna iz
- dannyh komand vypolnitsya uspeshno, no ona pozvolit vam ustanovit'
- bol'shij segment dannyh processa i vozmozhno reshit problemu. `Eta
- komanda izmenyaet parametry tekuschego processa i vseh ego potomkov,
- sozdannyh posle eio zapuska. Esli u vas voznikla problema s SQL
- klientom, potomu chto backend vozvraschaet slishkom bol'shoj ob"em
- dannyh, popytajtes' vypolnit' `etu komandu pered zapuskom klienta.
-
- 4.14) Kak mne uznat', kakaya versiya PostgreSQL zapuschena?
-
- Iz psql, naberite SELECT version();
-
- 4.15) Kak mne sozdat' kolonku kotoraya po umolchaniyu budet soderzhat'
- tekuschee vremya?
-
- Ispol'zujte CURRENT_TIMESTAMP:
-CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
-
- 4.16) Kak mne vypolnit' vneshnee svyazyvanie?
-
- PostgreSQL podderzhivaet vneshnee svyazyvanie, ispol'zuya standartnyj
- sintaksis SQL. Vot dva primera:
- SELECT *
- FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
- ili
- SELECT *
- FROM t1 LEFT OUTER JOIN t2 USING (col);
-
- `Eto identichnye zaprosy svyazyvaniya t1.col i t2.col, takzhe
- vozvraschayut lyubye nesvyazannye stroki v t1 (kotorye ne sovpadayut s
- t2). RIGHT svyazyvanie dolzhno dobavit' nesvyazannye stroki t2. FULL
- svyazyvanie dolzhno vozvratit' sovpavshie stroki plyus vse
- nesvyazannye stroki iz t1 i t2. Slovo OUTER yavlyaetsya
- neobyazatel'nym i naznachaetsya v LEFT, RIGHT i FULL svyazyvaniyah.
- Obychnye svyazyvaniya nazyvayutsya INNER svyazyvaniya.
-
- 4.17) Kak vypolnyat' zaprosy, ispol'zuyuschie neskol'ko baz dannyh?
-
- Ne suschestvuet sposoba sozdat' zapros k bazam dannyh otlichnym ot
- tekuschej. Poskol'ku PostgreSQL zagruzhaet sistemnye katalogi
- specifichnye dlya bazy dannyh, neponyatno dazhe, kak dolzhen sebya
- vesti takoj mezhbazovyj zapros.
-
- contrib/dblink pozvolyaet zaprosy mezhdu bazami, ispol'zuya vyzovy
- funkcij. Razumeetsya, klient mozhet odnovremenno takzhe ustanavlivat'
- soedieneniya s razlichnymi bazami dannyh i takih obrazom ob"edinyat'
- informaciyu iz nih.
-
- 4.18) Kak mne vernut' iz funkcii neskol'ko strok tablicy?
-
- Vy mozhete legko ispol'zovat' funkcii, vozvraschayuschie spisok,
- http://wiki.postgresql.org/wiki/Return_more_than_one_row_of_data_from_
- PL/pgSQL_functions.
-
- 4.19) Pochemu ya poluchayu oshibku "relation with OID #### ne suschestvuet",
- kogda obraschayuts' k vremennym tablicam v funkciyah PL/PgSQL?
-
- V PostgreSQL do versii 8.3, PL/PgSQL k`eshiruet scenarii funkcii i
- odin iz negativnyh `effektov `etogo sostoit v tom, chto esli funkciya
- PL/PgSQL obraschaetsya k vremennoj tablice i `eta tablica pozdnee
- udalyaetsya i peresozdaetsya, a funkciya zatem vyzyvaetsya snova, to
- ee vyzov privedet k oshibke, potomu chto sk`eshirovannoe soderzhimoe
- funkcii soderzhit ukazatel' na staruyu vremennuyu tablicu. CHtoby
- reshit' `etu problemu, ispol'zujte EXECUTE dlya dostupa k vremennym
- tablicam v PL/PgSQL. Ispol'zovanie `etogo operatora zastavit zapros
- peregenerirovat'sya kazhdyj raz.
-
- V PostgreSQL 8.3 i pozdnee, `etoj problemy net.
-
- 4.20) Kakie est' resheniya dlya replikacii?
-
- Hotya "replikaciya" -- `eto edinyj termin, est' neskol'ko raznyh
- tehnologij dlya vypolneniya replikacij s raznymi osobennostyami dlya
- kazhdoj.
-
- Replikaciya Master/slave pozvolyaet imet' odin glavnyj (master) server
- dlya vypolneniya zaprosov chteniya/zapisi, v to vremya kak
- podchinionnye (slave) servera mogut proizvodit' tol'ko zaprosy
- chteniya/SELECT. Naibolee populyarnym resheniem dlya replikacii
- master-slave v PostgreSQL yavlyaetsya Slony-I.
-
- Replikaciya Multi-master pozvolyaet vypolnyat' zaprosy chteniya/zapisi
- na neskol'kih, repliciruemyh drug s drugom komp'yuetrah. `Eta
- osobennost' takzhe privodit k potere proizvoditel'nosti, potomu chto
- neobhodima sinhronizaciya izmenenij mezhdu neskol'kimi serverami.
- Naibolee populyarnym resheniem dlya takoj replikacii v PostgreSQL
- yavlyaetsya PGcluster.
-
- 4.21) Pochemu imena tablicy i kolonok ne raspoznayutsya v v moiom zaprose?
- Pochemu ne sohranyayutsya zaglavnye bukvy?
-
- Naibolee chasto imena neraspoznayutsya iz-za ispol'zovaniya dvojnyh
- kavychek v imeni tablicy ili kolonki pri sozdanii tablicy. Pri
- ispol'zovanii dvojnyh kavychek, imya tablicy i kolonki (kotorye
- nazyvayut identifikatorami) sohranyayutsya v registro-zavisimom vide;
- `eto oznachaet, chto vy dolzhny ispol'zovat' dvojnye kavychki, kogda
- ukazyvaete `eti imena v zaprose. Nekotorye interfejsy, takie kak
- pgAdmin, vo vremya sozdaniya tablicy dobavlyayut dvojnye kavychki
- avtomaticheski. Takim obrazom, chtoby identifikatory raspoznavalis' vy
- dolzhny sledovat' odnomu iz sleduyuschih pravil:
- * Izbegat' ispol'zovaniya dvojnyh kavychek pri sozdanii tablic
- * Ispol'zovat' v identifikatorah tol'ko simvoly nizhnego registra
- * Ispol'zovat' dvojnye kavychki dlya identifikatorov v zaprosah
diff --git a/doc/FAQ_turkish b/doc/FAQ_turkish
deleted file mode 100644
index d1c886d2a91..00000000000
--- a/doc/FAQ_turkish
+++ /dev/null
@@ -1,1192 +0,0 @@
-
- PostgreSQL için Sıkça Sorulan Sorular (SSS)
-
- Son güncelleme : 15 Kasım 2004 Pazartesi - 15:03:23
-
- Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
-
- Çevirenler : Devrim Gündüz (devrim@tdmsoft.com)
- Nicolai Tufar (ntufar@tdmsoft.com)
- Volkan YAZICI (volkany@phreaker.net)
-
- Bu belgenin en güncel hali,
- http://www.PostgreSQL.org/docs/faqs/FAQ_turkish.html ve
- http://www.gunduz.org/seminer/pg/FAQ_turkish.html adreslerinde
- görülebilir.
-
- Platforma özel sorularınız, http://www.PostgreSQL.org/docs/index.html
- adresinde yanıtlanır.
- _________________________________________________________________
-
- Genel Sorular
-
- 1.1) PostgreSQL nedir? Nasıl okunur?
- 1.2) PostgreSQL'in hakları nedir?
- 1.3) PostgreSQL, hangi Unix platformlarında çalışır?
- 1.4) Hangi Unix olmayan uyarlamaları bulunmaktadır?
- 1.5) PostgreSQL'i nereden indirebilirim?
- 1.6) Desteği nereden alabilirim?
- 1.7) En son sürümü nedir?
- 1.8) Hangi belgelere ulaşabilirim?
- 1.9) Bilinen hatalar ya da eksik özelliklere nereden ulasabilirim?
- 1.10) Nasıl SQL öğrenebilirim?
- 1.11) PostgreSQL 2000 yılına uyumlu mudur?
- 1.12) Geliştirme takımına nasıl katılabilirim??
- 1.13) Bir hata raporunu nasıl gönderebilirim?
- 1.14) PostgreSQL, diğer VTYS(DBMS) lerle nasıl karşılaştırılabilir?
- 1.15) PostgreSQL'e maddi açıdan nasıl destek olabilirim?
-
- Kullanıcı/istemci Soruları
-
- 2.1) PostgreSQL için ODBC sürücüleri var mı?
- 2.2) PostgreSQL'i web sayfalarında kullanabilmek için hangi araçlar
- bulunmaktadır?
- 2.3) PostgreSQL'in grafik kullanıcı arabirimi var mıdır?
- 2.4) PostgreSQL ile iletişimi kurabilmek için hangi dilleri
- kullanabilirim?
-
- Yönetimsel Sorular
-
- 3.1) PostgreSQL'i /usr/local/pgsql dizininden başka dizinlere nasıl
- kurabilirim?
- 3.2) Postmaster'ı başlattığımda Bad System Call ya da core dumped
- mesajı alıyorum. Neden?
- 3.3) Postmaster'ı başlattığımda, IpcMemoryCreate hatası alıyorum.
- Neden?
- 3.4) Postmaster'ı, başlattığımda, IpcSemaphoreCreate hatası alıyorum.
- Neden?
- 3.5) Diğer bilgisayarların benim PostgreSQL veritabanı sunucuma
- bağlantılarını nasıl kontrol edebilirim?
- 3.6) Veritabanı motorunu daha iyi başarım icin nasıl ayarlayabilirim?
- 3.7) Hangi hata ayıklama özellikleri bulunmaktadır?
- 3.8) Bağlanmaya çalışırken, neden "Sorry, too many clients" hatasını
- alıyorum. Neden?
- 3.9) pgsql_tmpdizinin içindeki dosyalar nelerdir?
- 3.10) PostgreSQL sürümlerini yükseltmek için neden bir dump/reload
- işlemi gerçekleştirmek zorundayım?
- 3.11) Nasıl bir donanım kullanmalıyım?br>
-
- İşletimsel Sorular
-
- 4.1) Binary cursor ve normal cursor arasındaki fark nedır?
- 4.2) Sorgunun sadece ilk birkaç satırını nasıl SELECT edebilirim?
- 4.3) psql'in içinde gördügüm tabloların ya da diğer şeylerin listesini
- nasıl alabilirim?
- 4.4) Bir tablodan bir kolonu nasıl kaldırabilirim?
- 4.5) Bir satır, tablo ve veritabanı için en fazla büyüklük nedir?
- 4.6) Tipik bir metin dosyasındaki veriyi saklamak için ne kadar disk
- alanı gereklidir?
- 4.7) Veritabanında hangi tablo ya da index'lerin tanımlandığını nasıl
- görebilirim?
- 4.8) Sorgularım cok yavaş, ya da index'lerimi kullanmıyorlar. Neden?
- 4.9) Query-optimizer'ın sorgularımı nasıl değerlendirdiğini, işleme
- soktuğunu nasıl görebilirim?
- 4.10) R-tree index nedir?
- 4.11) Genetic Query Optimizer nedir?
- 4.12) Düzenli ifade (Regular Expression) aramalarını ve büyük/küçük
- harfe duyarsız aramaları nasıl yapabilirim? Bu büyük/küçük harfe
- duyarlı aramalar için index'i nasıl kullanabilirim?
- 4.13) Bir sorguda, bir alanın NULL olduğunu nasıl ortaya
- çıkarabilirim?
- 4.14) Çesitli karakter tipleri arasındaki farklar nelerdir?
- 4.15.1) Nasıl serial/otomatik artan (auto-incrementing) bir alan
- yaratabilirim?
- 4.15.2) Serial girişinin değerini nasıl alabilirim?
- 4.15.3) currval() ve nextval() diğer kullanıcılara sorun yaratmaz mı?
- 4.15.4) Neden sequence sayıların transaction işleminin iptalinden
- sonra yeniden kullanılıyor? Neden sequence/SERIAL kolonumdaki
- sayılarda atlamalar oluyor?
- 4.16) OID nedir? TID nedir?
- 4.17) PostgreSQL' de kullanılan bazı terimlerin anlamları nelerdir?
- 4.18) Neden "ERROR: Memory exhausted in AllocSetAlloc()" hatasını
- alıyorum?
- 4.19) Hangi PostgreSQL sürümünü çalıstırdığımı nasıl görebilirim?
- 4.20) Neden large-object işlemlerim, "invalid large obj descriptor"
- hatasını veriyor?
- 4.21) Şu andaki zamanı öntanımlı değer olarak kabul eden kolonu nasıl
- yaratırım?
- 4.22) Neden IN kullanan subquery'lerim çok yavaş?
- 4.23) Outer join işlemini nasıl yapabilirim?
- 4.24) Aynı anda birden fazla veritabanında nasıl işlem yapabilirim?
- 4.25) Bir fonksiyondan nasıl çoklu satır ya da kolon döndürebilirim?
- 4.26) Neden Pl/PgSQL fonksiyonları içinden güvenli bir şekilde tablo
- yaratma/kaldırma işlemlerini yapamıyoruz?
- 4.27) Hangi şifreleme seçenekleri bulunmaktadır?
-
- PostgreSQL Özelliklerini Genişletmek
-
- 5.1) Kullanıcı-tanımlı bir fonksiyon yazdım. psql'de çalıştırdığım
- zaman neden core dump ediyor?
- 5.2) PostgreSQL'e nasıl yeni veri tipleri/fonksiyonlar ekleyebilirim?
- 5.3) Bir tuple döndürmek için bir C fonksiyonunu nasıl yazarım?
- 5.4) Bir kaynak dosyasında değişiklik yaptım. Yeniden derlememe rağmen
- değişiklik geçerli olmuyor. Neden?
- _________________________________________________________________
-
- Genel Sorular
-
- 1.1) PostgreSQL nedir? Nasıl okunur?
-
- PostgreSQL, Post-Gres-Q-L. olarak okunur
-
- PostgreSQL, yeni-nesil VTYS araştırma prototipi olan POSTGRES
- veritabanı yönetim sisteminin geliştirilmesidir. POSTGRES'in zengin
- veri tiplerini ve güçlü veri modelini tutarken, SQL'in geliştirilmiş
- alt kümesi olan PostQuel dilini kullanır. PostgreSQL ücretsizdir ve
- kaynak kodu açık dağıtılır.
-
- PostgreSQL, PostgreSQL geliştirme listesine üye olan bir Internet
- geliştirici takımı tarafından geliştirilir. Şu andaki koordinatör,
- Marc G. Fournier (scrappy@PostgreSQL.org). (Bu takıma nasıl
- katılacagınızı öğrenmek için 1.6 numaralı maddeyi okuyunuz.) Bu takım,
- tüm PostgreSQL gelişiminden sorumludur.
-
- PostgreSQL 1.01 sürümünün yazarları Andrew Yu ve Jolly Chen idi.
- Bunların dışında bir kaç kisi de uyarlama, hata ayıklama ve kodun
- geliştirilmesi için çalısmıştı. PostgreSQL'in türediği orijinal
- Postgres kodu, lisans, lisansüstü ve akademisyenler tarafından,
- Professor Michael Stonebraker (University of California, Berkeley)
- koordinatörlügünde yazılmıştır.
-
- Berkley'deki yazılımın adı Postgres idi. SQL uyumluluğu 1995'te
- eklenince, adı Postgres 95 oldu. 1996 yılının sonlarında adı
- PostgreSQL olarak değiştirildi.
-
- 1.2) PostgreSQL'in hakları nedir?
-
- PostgreSQL Data Base Management System
-
- Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
- Portions Copyright (c) 1994-6 Regents of the University of California
-
- Permission to use, copy, modify, and distribute this software and its
- documentation for any purpose, without fee, and without a written
- agreement is hereby granted, provided that the above copyright notice
- and this paragraph and the following two paragraphs appear in all
- copies.
-
- IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
- FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
- INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND
- ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
- PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
- CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
- UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-
- Üstteki metin klasik açık-kod lisansı olan BSD lisansıdır. Kaynak
- kodun nasıl kullanılabileceğine dair sınırlamaları yoktur. Bu lisansı
- seviyoruz. Değiştirme niyetimiz bulunmamaktadır.
-
- 1.3) PostgreSQL, hangi Unix platforlarında çalışır?
-
- Genel olarak, modern bir Unix-uyumlu platform PostgreSQL'i
- çalıştıracaktır. Ayrıntılı bilgi için kurulum belgelerine
- bakabilirsiniz.
-
- 1.4) Hangi Unix olmayan uyarlamaları bulunmaktadır?
-
- PostgreSQL 8.0 sürümü ile , PostgreSQL artık Win2000, WinXP ve Win2003
- gibi Microsoft Windows NT tabanlı işletim sistemlerinde doğal olarak
- çalışmaya başlamıştır. Paketlenmiş bir kurulum programı,
- http://pgfoundry.org/projects/pginstaller. adresinden indirilebilir.
-
- Ayrıca, http://forge.novell.com adresinde Novell Netware 6 portu
- bulunmaktadır.
-
- 1.5) PostgreSQL'i nereden indirebilirim?
-
- PostgreSQL için ana anonim ftp sitesi ftp://ftp.PostgreSQL.org/pub
- adresidir. Yansılar için, ana web sayfamıza bakabilirsiniz.
-
- 1.6) Nereden destek alabilirim?
-
- Ana e-posta listesi : pgsql-general@PostgreSQL.org. PostgreSQL
- konusundaki tartışmalara açıktır. Üye olmak için, aşağıdaki satırları
- e-postanızın body kısmına (konu kısmına değil) yazıp,
- pgsql-general-request@PostgreSQL.org adresine gönderin:
-subscribe
-end
-
- Aynı zamanda, bir digest listesi bulunmaktadır. Bu listeye üye olmak
- için, pgsql-general-digest-request@PostgreSQL.org adresine, body
- kısmında
-subscribe
-end
-
- yazan bir e-posta atmanız yeterli olacaktır.
-
- Digest postalar, ana liste 30k civarında e-postaya ulaştığında üyelere
- gönderilmektedir.
-
- Bug'lar için bir e-posta listesi bulunmaktadır. Bu listeye üye olmak
- için, pgsql-bugs-request@PostgreSQL.org adresine, body kısmında
-subscribe
-end
-
- yazan bir e-posta atmanız yeterli olacaktır.
-
- Aynı zamanda, geliştiriciler için tartışma listesi bulunmaktadır. Bu
- listeye üye olmak için, pgsql-hackers-request@PostgreSQL.org adresine,
- body kısmında
-subscribe
-end
-
- yazan bir e-posta atmanız yeterli olacaktır.
-
- Bunun dışındaki e-posta listelerine ve PostgreSQL hakkında bilgiye,
- PostgreSQL WWW ana sayfasından ulasabilirsiniz:
- http://www.PostgreSQL.org
-
- Aynı zamanda, EFNet üzerinde, #PostgreSQL adlı bir IRC kanalı
- bulunmaktadır. Bunun için, irc -c '#PostgreSQL' "$USER"
- irc.phoenix.net Unix komutunu kullanabilirsiniz.
-
- Ticari destek veren firmaların listesine
-
- http://www.postgresql.org/users-lounge/commercial-support.html
-
- adresinden ulaşbilirsiniz.
-
- 1.7) En son sürüm nedir?
-
- PostgreSQL'in son sürümü 7.4.6'dır.
-
- Her 6-8 ayda ana sürüm çıkarılması planlanmaktadır.
-
- 1.8) Hangi belgelere ulaşabilirim?
-
- Dağıtımın içinde, kitapçıklar, kitapçık sayfaları ve bazı küçük
- örnekler verilmektedir. /doc dizinine bakınız. Ayrıca, bu el
- kitapçıklarını online olarak http://www.PostgreSQL.org/docs/
- adresinden inceleyebilirsiniz.
-
- http://www.PostgreSQL.org/docs/awbook.html ve
- http://www.commandprompt.com/ppbook adreslerinde PostgreSQL kitapları
- bulunmaktadır. PostgreSQL kitablarının listesine,
- http://www.ca.PostgreSQL.org/books/ adresinden ulaşaiblirsiniz.
- Ayrıca, PostgreSQL konusundaki teknik makalelere de
- http://techdocs.PostgreSQL.org/ adresinden ulaşabilirsiniz.
-
- psql'in, \d ile baslayan veri tipler, operatorler, fonksiyonlar,
- aggregate'ler, vb. ile ilgili güzel komutları vardır.
-
- Web sitemiz daha fazla belgeyi içermektedir.
-
- 1.9) Bilinen hatalar ya da eksik özelliklere nereden ulaşabilirim?
-
- PostgreSQL SQL-92 uyumluluğu içindedir, standartlardan fazla da
- özellikleri bulunmaktadır. Bilinen hatalar, eksik özellikler ve
- gelecek ile ilgili planlar için TODO listesine bakınız.
-
- 1.10) Nasıl SQL öğrenebilirim?
-
- http:/www.PostgreSQL.org/docs/awbook.html adresindeki kitap SQL
- ögretecektir. http://www.commandprompt.com/ppbook adresinde de bir
- baska PostgreSQL kitabı bulunmaktadır.
-
- http://www.intermedia.net/support/sql/sqltut.shtm,
- http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM
- http://sqlcourse.com ve http://sqlcourse2.com adreslerinde de güzel
- belgeler bulunmaktadır.
-
- Bir başkası da, http://members.tripod.com/er4ebus/sql/index.htm
- adresinde bulunan "Teach Yourself SQL in 21 Days, Second Edition"
- kitabıdır.
-
- Bazı kullanıcılarımız da şu kitabı önermektedirler: "The Practical SQL
- Handbook, Bowman, Judith S., et al.,Addison-Wesley". Bazıları ise "The
- Complete Reference SQL, Groff et al., McGraw-Hill" kitabını
- önermektedirler.
-
- 1.11) PostgreSQL 2000 yılına uyumlu mudur?
-
- Evet.
-
- 1.12) Geliştirme takımına nasıl katılabilirim?
-
- Öncelikle, en son kaynak kodunu indirin ve web sitemizdeki ya da
- dağıtımın içindeki PostgreSQL Developer belgesini okuyun. Ardından,
- pgsql-hackers ve pgsql-patches listelerine üye olun. Üçüncü olarak da,
- pgsql-pacthes listesine yüksek kalitede yamalar gönderin.
-
- PostgreSQL CVS arşivine erişim izni olan, 10 kadar geliştirici
- bulunmaktadır. Hepsi defalarca, diğer kişilerin yaptığından çok daha
- yüksek-kaliteli yamalar göndermişlerdir. Ayrıca biz de bu
- geliştiricilerin ekledikleri yamaların yüksek kalitede olduğuna
- güveniyoruz.
-
- 1.13) Bir hata raporunu nasıl gönderebilirim?
-
- PostgreSQL BugTool sayfasına gidiniz. O sayfada bir bug bildirmek için
- neleri yapmanız gerektiği anlatılmıştır.
-
- Ayrıca, ftp://ftp.PostgreSQL.org/pub ftp adresimizde, yeni bir
- PostgreSQL sürümü ya da yaması olup olmadığıni kontrol ediniz.
-
- 1.14) PostgreSQL, diger DBMS'lerle nasıl karşılastırılabilir?
-
- Bir yazılımın gücünü ölçmek için çeşitli yollar vardır: Yazılımın
- özellikleri, başarımı, güvenilirliği, desteği ve ücreti.
-
- Özellikler:
-
- PostgreSQL mevcut büyük ticari veritabanlarının, transaction,
- subselect, trigger, view, foreign key referential integrity ve
- sophisticated locking gibi (user-defined types), rules, inheritance ve
- lock cakışmalarını düşürmek için multi-version uyumluluk özellikleri
- bulunmaktadır.
-
- Performans (Başarım):
-
- PostgreSQL, diğer ticari ve açık kaynak kodlu veritabanlarıyla yakın
- başarımı sağlar. Bazı açılardan daha hızlıdır, diğer açılardan da
- yavaştır. MySQL ya da daha zayıf veritabanları ile
- karşılaştırıldığında, INSERT/UPDATE işlemlerinde, transaction bazlı
- çalıstığımız için daha yavaşız. MySQL, yukarıdaki "özellikler"
- kısmında belirtilenlerden hiç birine sahip değildir. Biz, başarımımızı
- her sürümde arttırsak da, esneklik ve gelişmiş özellikler için
- yapılanmış durumdayız. PostgreSQL'i MySQL ile karşılaştıran şu web
- sitesine bakabilirsiniz: http://openacs.org/why-not-mysql.html
-
- Güvenilirlik:
-
- DBMS'lerin güvenilir olması gerketiği, yoksa değerleri olmayacağını
- düşünüyoruz. Çok iyi test edilmiş, dengeli çalısan minimum sayıda hata
- içeren kod sunmaya çalışıyoruz. Her bir sürüm en az 1 aylık beta
- testlerinden geçirilmektedir. Sürüm geçmişine bakarsanız, üretime
- hazır, dengeli ve kararlı kodlar sunduğumuzu görebilirsiniz. Bu
- alanda, diğer veritabanı yazılımlarına üstünlüğümüz olduğuna
- inanmaktayız.
-
- Destek:
-
- E-posta listemiz, oluşan herhangi bir sorunu çözebilecek büyük sayıda
- kullanıcı ve geliştirici grubunu içerir. Sorununuz için, en az bir
- ticari veritabanı kadar rahat çözüm bulabilirsiniz. Gelistiricilere,
- kullanıcı grubuna, belgelere ve kaynak koda direk olarak erişebilme,
- PostgreSQL desteğini, diğer DBMS'lere göre daha önemli kılar.
- Gereksinimi olanlara, ticari destek verilebilir. (Destek için 1.6
- bölümüne bakınız.)
-
- Fiyat:
-
- Ticari ve ticari olmayan tüm kullanımlarınız için PostgreSQL
- ücretsizdir. Kodumuzu, yukarıda belirtilen BSD-stili lisanstaki
- sınırlamalar hariç, ürününüzün içine ekleyebilirsiniz.
-
- 1.15) PostgreSQL'e maddi açıdan nasıl destek olabilirim?
-
- PostgreSQL, 1996 yılından beri 1. sınıf altyapıya sahiptir. Bunun
- için, yıllar boyu çalışıp bu altyapıyı oluşturup yöneten Marc
- Fournier'e teşekkürler.
-
- Bir açık kaynak kodlu proje için, kaliteli altyapı çok önemlidir. Bu
- altyapı, projenin kesilmesini önler ve projenin ilerlemesini
- hızlandırır.
-
- Tabii ki bu altyapı ucuz değildir. İşlerin yürümesi için çeşitli yılık
- ve anlık harcamalarımız olmaktadır. Eğer siz ya da şirketinizin bu
- çabamıza bağışta bulunabilecek parası varsa, lütfen
- http://store.pgsql.com/ adresine gidiniz ve bağışta, hibede bulununuz.
-
- Web sayfasının 'PostgreSQL Inc.' den bahsetmesine rağmen, "katkıda
- bulunanlar" (contributors) maddesi sadece PostgreSQL projesini
- desteklemek içindir ve belirli bir şirketin para kaynağı değildir.
- isterseniz, bağlantı adresine bir çek gönderebilirsiniz.
- _________________________________________________________________
-
- Kullanıcı/İstemci Soruları
-
- 2.1) PostgreSQL icin ODBC sürücüleri var mı?
-
- iki tane ODBC sürücüsü bulunmaktadır: PsqlODBC ve OpenLink ODBC.
-
- PsqlODBC'i
- http://gborg.postgresql.org/project/psqlodbc/projdisplay.php
- adresinden indirebilirsiniz.
-
- OpenLink ODBC http://www.openlinksw.com adresinden alınabilir.Bu
- sürücü, kendi standart ODBC istemci yazılımı ile çalıstığından,
- destekledikleri her platformda (Win, Mac, Unix, VMS) PostgreSQL ODBC
- bulunmalidir.
-
- Ücretsiz sürümü olmakla beraber, ticari kalitede destek almak
- isteyenlere satmak isteyeceklerdir. Sorularınızı lütfen
- postgres95@openlink.co.uk adresine gönderiniz.
-
- 2.2) PostgreSQL'i web sayfalarında kullanabilmek için hangi araçlar
- bulunmaktadır?
-
- http://www.webreview.com/ adresinde, arka planda veritabanı çalıstıran
- Web sayfaları için giriş seviyesinde bilgi bulunmaktadır.
-
- Web ile bütünleşme için, PHP () mükemmel bir arabirim sunar.
-
- Karmaşık sorunlar için, çoğu kisi Perl arabirimini ve CGI.pm ya da
- mod_perl kullanır.
-
- 2.3) PostgreSQL'in grafik kullanıcı arabirimi var mıdır?
-
- Çeşitli grafik arabirimlerimiz bulunmaktadır. Bunların arasında,
- PgAccess (http://www.pgaccess.org/), PgAdmin II
- (http://www.pgadmin.org/, sadece Win32 için), RHDB Admin
- (http://sources.redhat.com/rhdb/) ve Rekall
- (http://www.thekompany.com/products/rekall/) bulunmaktadır. Ayrıca,
- PostgreSQL için web tabanlı bir arabirim olan PHPPgAdmin
- (http://phppgadmin.sourceforge.net/) bulunmaktadır.
-
- Daha ayrıntılı liste için
- http://techdocs.postgresql.org/guides/GUITools adresine
- bakabilirsiniz.
-
- 2.4) PostgreSQL ile iletişimi kurabilmek için hangi dilleri kullanabilirim?
-
- * C (libpq)
- * Embedded C (ecpg)
- * Java (jdbc)
- * Python (PyGreSQL)
- * TCL (libpgtcl)
-
- Diğerleri için, http://gborg.postgresql.org adresindeki
- Drivers/Interfaces bölümüne bakabilirsiniz.
- _________________________________________________________________
-
- Yönetimsel Sorular
-
- 3.1) PostgreSQL'i, /usr/local/pgsql dizininden başka dizinlere nasıl
- kurabilirim?
-
- configure betiğini çalıstırırken, --prefix seçeneğini veriniz.
-
- 3.2) postmaster'i baslattıgımda, a Bad System Call ya da core dumped mesajı
- alıyorum. Neden?
-
- Bunun birçok nedeni olabilir. Ancak ilk kontrol edilmesi gereken sey,
- çekirdeginize System V uzantılarının kurulu olup olmadıgını kontrol
- etmek olabilir. PostgreSQL shared memory ve semaphores için çekirdek
- destegine gereksinim duyar.
-
- 3.3) postmaster'i başlattığımda, ıpcMemoryCreate hatası alıyorum. Neden?
-
- Ya çekirdeğinizde shared memory desteğiniz düzgünce
- yapılandırılmamıştır, ya da çekirdeğinizdeki mevcut shared memory
- miktarını büyütmeniz gerekecektir. Gereksinim duyacağınız miktar,
- mimarinize ve postmaster için ayarladıgınız tampon ile backend işlemi
- sayısına bağlıdır. Tüm sistemler için, tamponlar ve işlemlerde
- öntanımlı sayılarla, ~ 1MB kadar yere gereksinmeniz olacaktır.
- PostgreSQL 7.3.2 Sistem Yöneticileri Rehberi'ne, shared memory ve
- semaphorelar hakkındaki ayrıntılı bilgi için bakabilirsiniz.
-
- 3.4) postmaster'ı başlattığımda, ıpcSemaphoreCreate hatası alıyorum. Neden?
-
- Eğer hata, "ıpcSemaphoreCreate: semget failed (No space left on
- device)" ise, çekirdeğiniz yeterli semaphore ile yapılandırılmamış
- demektir. Postgres, her bir potansiyel backend için bir semaphore
- gereksinimi duyar. Geçici bir çözüm, postmasterı backend işlemleri
- için daha az miktarda sınırla başlatmak olabilir. -N'i varsayılan
- değer olan 32'den küçük bir değerle başlatınız. Daha kalıcı bir çözüm,
- çekirdeğinizin SEMMNS ve SEMMNI parametrelerini yükseltmek olacaktır.
-
- Çalışmayan semaphore'lar ağır veritabanı işlemlerinde çökme
- yaratabilirler.
-
- Eğer hata mesajınız başka bir şey ise, çekirdeğinizde semaphore
- desteğini yapılandırmamış olabilirsiniz. Shared memory ve
- semaphore'lar hakkındaki daha ayrıntılı bilgi için PostgreSQL 7.3.2
- Sistem Yöneticileri Rehberi'ne bakabilirsiniz.
-
- 3.5) Diger bilgisayarların benim PostgreSQL veritabanı sunucuma
- bağlantılarını nasıl kontrol edebilirim?
-
- Ön tanımlı olarak, PostgreSQL sadece yerel makineden Unix domain
- sockets kullanarak bağlanılmasına izin verir. Diger makineler,
- postmaster'a -i etiketini geçirmezseniz ve $PGDATA/pg_hba.conf
- dosyasını düzenleyerek host-based authentication'a olanak vermezseniz,
- bağlantı yapamayacaklardır.
-
- 3.6) Veritabani motorunu daha iyi başarım için nasıl ayarlayabilirim?
-
- Index'ler sorguları hızlandırabilir. EXPLAIN komutu, PostgreSQL'in
- sorgunuzu nasıl yorumladığını ve hangi index'leri kullandığını
- görmenize izin verir.
-
- Eğer cok fazla INSERT işlemi yapıyorsanız, bunları büyük bir toplu
- işlem dosyasıkullanıp COPY komutu ile veritabanına girmeyi deneyiniz.
- Bu, tekil INSERT'lerden daha hızlıdır. İkinci olarak, BEGIN
- WORK/COMMIT transaction bloğu içinde olmayan ifadeler kendi
- transaction'larındaymış gibi düşünülür. Çoklu ifadeleri tek bir
- transaction bloğu içinde yapabilirsiniz. Bu, transaction overhead'ini
- düşürecektir. Tek bir transaction bloğu içinde birden çok ifadeyi
- çalıştırmayı deneyebilirsiniz. Bu da aynı şekilde, transaction
- overhead'ini düşürür.
-
- Çeşitli ayarlama seçenekleri mevcuttur. fsync() işlemini, postmaster'ı
- -o -F seçeneği ile başlatarak devre dışı bırakabilirsiniz. Bu işlem,
- fsync()'lerin her transactiondan sonra diski flush etmesini
- engelleyecektir.
-
- Aynı zamanda, postmaster'i -B seçeneği ile başlatıp, backend işlemleri
- tarafından kullanılan shared memory buffers sayılarını
- arttırabilirsiniz. Eğer bu parametreyi çok yüksek tutarsanız,
- çekirdeğinizin shared memory bölgesindeki limiti aşma olasılığınız
- yüzünden postmaster başlayamayabilir. Her bir tampon (buffer) 8K'dır.
- Öntanımlı sayı ise 64 tampondur.
-
- Aynı şekilde, backend'in -S seçeneğini geçici sıralamalar için backend
- süreçleri tarafından kullanılacak hafızayı arttırmak amacıyla
- kullanabilirsiniz. -S seçeneği kilobayt cinsinden değer alır ve ön
- tanımlı değeri 512'dir (512 K)
-
- Tablolardaki veriyi bir index'e eşlemek amacıyla gruplama için CLUSTER
- komutunu kullanabilirsiniz. Ayrıntılı bilgi için CLUSTER komutunun
- yardım sayfasına bakabilirsiniz.
-
- 3.7) Hangi hata ayıklama özellikleri bulunmaktadır?
-
- PostgreSQL, hata ayıklama amacıyla kullanılabilecek durum bilgisi
- rapor eden çeşitli özeliklere sahiptir.
-
- Öncelikle, configure betiğini --enable-cassert seçeneğiyle
- çalıştırırsanız, bir çok assert() backend calışmasını gözlemler ve
- beklenmeyen bir durumda programı durdurur.
-
- Postmaster ve postgres çeşitli hata ayıklama seçeneklerine sahiptir.
- Öncelikle, postmaster'ı başlattığınızda, standart çıktıyı ve hataları
- bir log dosyasına yönlendirdiğinize emin olun:
-cd /usr/local/pgsql
-./bin/postmaster >server.log 2>&1 &
-
- Bu işlem PostgreSQL ana dizinine server.log dosyası yerleştirecektir.
- Bu dosya sunucunun yaşadığı sorunlar ya da hatalar hakkında yararlı
- bilgiler içerir. -d seçeneği, hata ayıklama seviyesini belirten bir
- rakam ile kullanılır. Yüksek hata ayıklama seviyelerinin büyük log
- dosyaları oluşturacağını unutmayınız.
-
- Eğer postmaster çalışmıyorsa, postgres backend'ini komut satırından
- çalıştırabilir ve SQL ifadenizi direk olarak yazabilirsiniz. Bu sadece
- hata ayıklama amacıyla önerilir. Burada, noktalı virgülün değil de
- yeni bir satırın sorguyu sonlandırdığını unutmayınız. Eğer hata
- ayıklama sembolleri ile derlediyseniz, ne olduğunu görmek için bir
- hata ayıklayıcı kullanabilirsiniz. backend postmaster'dan
- başlatılmadığından, eşdeğer bir ortamda çalışmamaktadır ve
- locking/backend etkileşim sorunları artabilir.
-
- Eğer postmaster çalışıyorsa, bir pencerede psql'i çalıştırın ve psql
- tarafından kullanılan postgres sürecinin süreç numarasını (PID) bulun.
- Postgres süreci ile ilişkilendirmek için bir hata ayıklarıcı kullanın.
- Sorguları psql aracılığı ile çalıştırabilirsiniz. Eğer postgres
- başlangıcında hata ayıklamak istiyorsanız, PGOPTIONS="-W n" seçeneğini
- ayarlayabilir ve psql'i başlatabilirsiniz. Bu işlem, başlangıcın n
- saniye kadar gecikmesini sağlayacaktır; böylece hata ayıklayıcıyı
- sürece ilişkilendirdikten sonra başlangıç sürecinin devam etmesini
- sağlayabilirsiniz.
-
- postgres programı hata ayıklama ve başarım ölçümleri için -s, -A ve -t
- seçeneklerine sahiptir.
-
- 3.8) Bağlanmaya çalışırken, neden "Sorry, too many clients" hatasını
- alıyorum?
-
- Postmaster'ın eşzamanlı olarak başlatabileceği backend süreçleri
- sınırlarını arttırmanız gerekmektedir.
-
- Ön tanımlı değer 32 süreçtir. Bunu, postmaster'ı uygun -N değeri ile
- ya da postgresql.conf dosyasını düzenleyerek yeniden başlatmakla
- arttırabilirsiniz.
-
- Eğer -N değerini 32'den büyük yapacaksanız, aynı zamanda -B değerini
- de değiştirmeniz gerektiğini unutmayın. -B, -N'nin en az 2 katı kadar
- olmalıdır; daha iyi başarım için bu sayıyı daha da arttırmalısınız.
- Yüksek sayıdaki backend süreçleri için, çeşitli çekirdek yapılandırma
- parametrelerini arttırmanız gerekecektir. Yapılması gerekenler,
- SHMMAX, SEMMNS, SEMMNI, NPROC, MAXUPRC ve açılabilecek dosyaların
- maksimum sayısı olan NFILE ve NINODE değerlerini karıştırmaktır. Bunun
- nedeni, PostgreSQL'in izin verilen backend süreçlerinin sayısı
- üzerinde bir sınırı olmasıdır. Böylelikle sistem kaynaklarının dışına
- çıkılmayacaktır.
-
- PostgreSQL'in 6.5 sürümüne kadar, en fazla backend sayısı 64 idi ve
- bunu değiştirmek için include/storage/sinvaladt.h dosyası içindeki
- MaxBAckendid sabitini değiştirdek sonra yazılımı yeniden derlemek
- gerekiyordu.
-
- 3.9) pgsql_tmp dizinin içindeki dosyalar nelerdir?
-
- Sorgu çalıstırıcı (query executer) tarafından yaratılan geçici
- dosyalardır. Örnegin, bir sıralama ORDER BY ile yapılacaksa ve
- sıralama backend'in -s parametresinin izin verdiğinden daha fazla
- alana gereksinim duyuyorsa, ekstra veriyi tutmak için geçici dosyalar
- yaratılır.
-
- Geçici dosyalar, eğer sıralama sırasında backend göçmezse otomatik
- olarak silinecektir. Eğer çalışan durumda bir backend'iniz yoksa,
- pg_tempNNN.NN dosyalarını silmeniz güvenlidir.
-
- 3.10) PostgreSQL sürümlerini yükseltmek için neden bir dump/reload işlemi
- gerçekleştirmek zorundayım?
-
- PostgreSQL takımı ara sürümlerde sadece küçük değişiklikler
- yapmaktadır; bu yüzden 7.2 sürümünden 7.2.1'e yükseltmek dump/restore
- işlemi gerekmemektedir. Ancak, esas sürümlerde (örnek: 7.2'den 7.3'e)
- çoğunlukla sistem tablolarının ve veri dosyalarının iç yapısı
- değiştirilir. Bu değişiklikler çoğunlukla karmaşıktır; dolayısıyla
- veri dosyalarının geriye dönük uyumluluğu işlemlerini yapmıyoruz. Dump
- işlemi, veriyi genel biçimde alacağından yeniden yükleme esnasında
- veri, yeni iç biçime uygun şekilde yerleştirilecektir.
-
- Disk biçiminin değişmediği sürümlerde, pg_upgrade betiği güncellemenin
- bir dump/restore gerektirmeden yapılmasını sağlayacaktır. pg_upgrade
- betiğinin o sürüm için bulunup bulunmadığını sürüm notları içinde
- bulabilirsiniz.
-
- 3.11) Nasıl bir donanım kullanmalıyım?
-
- PC donanımı tamamen uyumlu olduğu için, insanlar tüm PC donanımlarının
- aynı kalitede olduğunu düşünürler. Oysa böyle değildir. ECC RAM, SCSI
- ve kaliteli anakartlar daha ucuz donanımlara göre daha çok
- güvenilirlerdir ve başarımları daha yüksektir. PostgreSQL hemen hemen
- tüm donanımda çalışabilmektedir, ancak güvenilirlik ve başarım önemli
- ise donanım seçeneklerini çok iyi araştırmak gereklidir. E-posta
- listelerimi donanımlarla ilgili sorular ve de ticaret için
- kullanılabilir.
- _________________________________________________________________
-
- İşletimsel Sorular
-
- 4.1) Binary cursor ve normal cursor arasındaki fark nedir?
-
- DECLARE yardım sayfasına bakınız.
-
- 4.2) Sorgunun sadece ilk birkaç satırını nasıl SELECT edebilirim?
-
- FETCH yardım sayfasına bakınız, ya da SELECT ... LIMIT ... kullanınız.
-
- İlk birkaç satırı almak isteseniz bile, tüm sorgu değerlendirilmek
- durumunda kalınabilir. ORDER BY içeren bir sorgu düşünün. Eğer ORDER
- BY işe eşleşen bir index varsa, PostgreSQL istenen ilk birkaç satırı
- işleyebilir, ya da tüm sorgu istenen satırlar üretilene kadar
- işlenebilir.
-
- 4.3) psql'in içinde gördügüm tabloların ya da diğer şeylerin listesini
- nasıl alabilirim?
-
- pgsql/src/bin/psql/describe.c içindeki psql kaynak kodunu
- okuyabilirsiniz. Bu kod, psql'in \ ile başlayan komutlarının çıktısını
- olusturan SQL komutlarını içerir. Aynı zamanda, psql'i -E seçeneği ile
- başlatıp, verdiğiniz komutları çalıştırmak için yaptığı sorguların
- çıktılarını görebilirsiniz.
-
- 4.4) Bir tablodan bir kolonu nasıl kaldırabilirim?
-
- Bu özellik (ALTER TABLE DROP COLUMN) 7.3 sürümü ile gelmiştir. Eski
- sürümlerde aşağıdakileri uygulamalısınız:
-BEGIN;
-LOCK TABLE old_table;
-SELECT ... -- select all columns but the one you want to remove
-INTO TABLE new_table
-FROM old_table;
-DROP TABLE old_table;
-ALTER TABLE new_table RENAME TO old_table;
-COMMIT;
-
- 4.5) Bir satır, tablo ve veritabanı için en fazla büyüklük nedir?
-
- Sınırlar:
-
- Veritabanı için en fazla büyüklük nedir?
- Sınırsız (32 TB'lık veritabanı bulunmaktadır)
- Bir tablo için en fazla büyüklük nedir?
- 32 TB
- Bir satır için en fazla büyüklük nedir?
- 1.6 TB
- Bir alan için en fazla büyüklük nedir?
- 1 GB
- Tabloda en fazla satır sayısı kaçtır?
- Sınırsız
- Bir tabloda olabilecek en fazla kolon sayısı kaçtır?
- Kolon tiplerine bağlı olarak 250-1600
- Bir tabloda olabilecek en fazla index sayısı kaçtır?
- Sınırsız
-
- Tabii ki bunlar aslında sınırsız degildir. Burada belirtilen sınırlar,
- fiziksel sınırların haricindeki sınırlardır. Boş disk alanı,
- hafıza/takas alanı na bağlı sınırlamalar vardır. Başarım, sınır
- değerlere yaklaştıkça, ya da değerler çok büyük olduğunda düşebilir.
-
- Bir tablo için büyüklük sınırı olan 32 TB, işletim sisteminin büyük
- dosya desteği olup olmamasından bağımsızdır. Büyük tablolar, 1 GB'lik
- dosyalarda saklandığı için, dosya sistemi sınırlarınin bir önemi
- yoktur.
-
- Tablo ve kolon sayısı büyüklükleri, ön tanımlı blok büyüklüğü 32k ya
- çıkarılarak arttırılabilir.
-
- 4.6) Tipik bir metin dosyasındaki veriyi saklamak için ne kadar disk alanı
- gereklidir?
-
- Bir PostgreSQL veritabanı, veriyi "flat" metin dosyasında saklamak
- için gereken alanın 5 kat fazla disk alanına gereksinim duyabilir.
-
- Her satırında bir tamsayı ve metin (text) içeren, 100.000 satırlık bir
- dosya düşünün. Her satırın ortalama 20 byte olduğunu farzedelim. Metin
- dosyası 2.8 MB olacaktır. Bu veriyi tutan PostgreSQL veritabanı
- yaklaşık 6.4 MB yer kaplayacaktır.
- 36 byte: Her bir satır başlığı (yaklaşık)
-+ 24 byte: Bir tamsayı (int) alanı ve bir metin (text) alanı
-+ 4 byte: Sayfada tuple a pointer
-----------------------------------------
- 64 byte -> kayıt başına
-
- PostgreSQL'de veri sayfası (data page) büyüklüğü 8192 byte (8k)dır,
- dolayısıyla:
-8192 byte -> page başına
-------------------------- = Her bir veritabanı page'ı başına 128 satır (yaklaşık)
- Satır başına 64 byte
-
-100000 veri satırı
--------------------- = 782 veritabanı sayfası
- 128 satır
-
- 782 veritabanı sayfası * sayfa başına 8192 byte = 6,406,144 bytes (6.4
- MB)
-
- Index'ler çok fazla yere gereksinim duymazlar, ama index'lenmiş veriyi
- tutacaklarından büyük olabilirler.
-
- NULL değerler bitmapler içinde tutulur; dolayısıyla çok az yer
- kaplarlar.
-
- 4.7) Veritabanında hangi tablo ya da index'lerin tanımlandığını nasıl
- görebilirim?
-
- psql, bu tür bilgileri göstermek için, \ ile başlayan bir çok komut
- sunmaktadır. \? komutu ile bu komutları görebilirsiniz. Ayrıca,
- bunları açıklayan ve pg_ ile başlayan çok sayıda sistem tablosu
- bulunmaktadır. Aynı zamanda, psql -l ile tüm veritabanlarını
- listeyelebirsiniz.
-
- Ayrıca, pgsql/src/tutorial/syscat.source kodunu inceleyebilirsiniz. Bu
- dosya, veritabanı sistem dosyalarından bilgiyi almak için gereksinim
- duyulan bir çok SELECT'leri gösterir.
-
- 4.8) Sorgularım cok yavaş, ya da index'lerimi kullanmıyorlar. Neden?
-
- Indexler her sorgu tarafından otomatik olarak kullanılmazlar. Indexler
- eğer bir tablonun büyüklüğü minimum bir büyüklükten fazla ise ve sorgu
- tablodaki satırların sadece küçük bir yüzdesini seçiyorsa kullanılır.
- Bunun nedeni, index erişiminin neden olduğu raslansal disk erişimi nin
- diskin ya da tablonun sıralı okunmasından daha yavas olabilmesidir.
-
- Bir index'in kullanılıp kullanılmayacağını belirlemek için, PostgreSQL
- tablo hakkındaki istatistiklere gereksinmesi vardır. Bu istatistikler,
- VACUUM ANALYZE kullanılarak toplanırlar. Optimizer, istatistikleri
- kullanarak, tabloda kaç satır olduğunu ve bilir ve indexin kullanılıp
- kullanılmayacağına daha iyi karar verir. Istatistikler, aynı zamanda
- en uygun join sırasını ve yöntemini belirlemekte çok önemlidir.
- İstatistik toplanması, tablo içerikleri değiştikçe periyodik olarak
- yapılmalıdır.
-
- Indexler normalde ORDER BY sorguları ya da join işlemlerini
- gerçekleştirmek için kullanılmazlar. Açık bir sıralamayı takip eden
- sıralı bir arama (sequential scan), büyük bir tabloda index araması
- yapmaktan genelde daha hızlıdır.
- Ancak, ORDER BY ile birleşmiş LIMIT genellikle bir index
- kullanacaktır; çünkü tablonun sadece belirli bir miktarı
- döndürülecektir. Aslında, MAX() ve MIN() fonksiyonlarının index
- kullanmamalarından dolayı, bu gibi değerleri ORDER BY ve LIMIT
- kullanarak da almak olasıdır:
- SELECT col
- FROM tab
- ORDER BY col [ DESC ]
- LIMIT 1;
-
- Eğer optimizer'ın sıralı arama yapmasının yanlış olduğuna
- inanıyorsanız, SET enable_seqscan TO 'off' kullanın ve index kullanan
- aramaların hala daha hızlı olup olmadığını görün.
-
- LIKE ya da ~ gibi operatörler kullanıyorsanız, index'ler sadece
- aşağıdaki koşullarda kullanılabilir:
- * Arama dizininin başı, dizinin başı ile bağlanmalıdır. Yani,
- + LIKE sorguları % ile başlamamalıdır.
- + Düzenli ifade sorguları ^ işe başlamamalıdır.
- * Arama metni bir karakter sınıfı ile başlayamaz. Örnek: [a-e]
- * ILIKE ve ~* gibi büyük/küçük harfe duyarsız aramalar index'lerden
- yararlanmazlar. Onun yerine, bölüm 4.12'de anlatılan fonksiyonel
- index'leri kullanabilirsiniz.
- * initdb sırasında öntanımlı C locale'i kullanılmalıdır.
-
- 4.9) query-optimizer'ın sorgularımı nasıl değerlendirdiğini, işleme
- soktuğunu nasıl görebilirim?
-
- EXPLAIN yardım sayfasına bakınız.
-
- 4.10) R-tree index nedir?
-
- R-tree index, uzaysal (spatial) verileri indexlemek için kullanılır.
- Bir hash index, dizi aramalarında (range search) kullanılamaz. B-tree
- index dizi aramalarında sadece tek boyutlu çalışmaktadır. R-tree, çok
- boyutlu veriyi destekler. Örneğin, eğer bir R-tree index point veri
- tipi üzerinde inşa edililebilirse, sistem "select all points within a
- bounding rectangle" gibi sorgulara daha verimli yanıtlar verecektir.
-
- Orijinal R-tree tasarımını açıklayan belge:
-
- Guttman, A. "R-trees: A Dynamic Index Structure for Spatial
- Searching." Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of
- Data, 45-57.
-
- Bu belgeyi, Stonebraker'ın "Readings in Database Systems" kitabında
- bulabilirsiniz.
-
- Gömülü R-tree indexleri poligon ve boxları kullanabilir. Teorik
- olarak, R-tree indexlerin özelliklerini genişletmek bir miktar çaba
- gerektirir ve bunun nasıl yapılacağına dair bir belgemiz henüz
- bulunmamaktadır.
-
- 4.11) Genetic Query Optimizer nedir?
-
- GEQO modülü, Genetic Algorithm(GA) kullanılarak tablolar
- birleştirildiğinde sorgu optimizasyonunu hızlandırır.
-
- 4.12) Düzenli ifade (Regular Expression) aramalarını ve büyük/küçük harfe
- duyarsız aramaları nasıl yapabilirim? Bu büyük(küçük harfe duyarlı aramalar
- için index'i nasıl kullanabilirim?
-
- ~ operatörü düzenli ifade eşleşmesi ve ~* büyük/küçük harfe duyarsız
- düzenli ifade eşleşmesi yapar. Büyük/küçük harfe duyarlı olan LIKE'ın
- büyük/küçük harfe duyarsız olan biçimi ILIKE'tır ve PostgreSQL 7.1
- sürümü ile birlikte gelmiştir.
-
- Büyük-küçük harfe duyarsız eşitlik karşılaştırmaları aşağıdaki gibi
- ifade edilir:
-SELECT *
-FROM tab
-WHERE lower(col) = 'abc'
-
- Bu standart bir index yaratmayacaktır. Ancak eğer fonksiyonel bir
- index yaratırsanız; o kullanılacaktır:
-CREATE INDEX tabindex on tab (lower(col));
-
- 4.13) Bir sorguda, bir alanin "NULL" olduğunu nasıl ortaya çıkarabilirim?
-
- Kolonu, IS NULL ve IS NOT NULL ile test edebilirsiniz.
-
- 4.14) Çesitli karakter tipleri arasındaki farklar nelerdir?
-
-Veri Tipi İç Adı Not
---------------------------------------------------
-VARCHAR(n) varchar boyut en büyük uzunluğu verir; sadece verilen kadar veri tutulur.
-CHAR(n) bpchar belirtilen uzunluğa kadar sonuna boşluk eklenir.
-TEXT text uzunlukta herhangi bir üst sınır yoktur.
-BYTEA bytea variable-length byte array (null-byte safe)
-"char" char bir karakter
-
- İç adları (internal name) sistem kataloglarını ve bazı hata
- mesajlarını incelerken göreceksiniz.
-
- İlk dört veri tipi "varlena" tipidir (yani, diskteki ilk 4 bayt
- uzunluktur; devamı da veridir.) Dolayısıyla, kullanılan gerçek alan,
- belirtilen alandan biraz daha büyüktür. Ancak, bu veri tipleri,
- sıkıştırılmaya tabi tutulabilir; dolayısıyla disk alanı beklenilenden
- küçük olabilir. VARCHAR(n) büyüklüğü artabilen ama en büyük uzunluğu
- sınırlı olan verileri saklamak için en uygun yöntemdir. TEXT, 1 GB
- büyüklüğe kadar olan verileri tutmak için kullanılır.
-
- CHAR(n), aynı uzunluktaki dizilerin saklanması için kullanımır.
- CHAR(n) belirtilen uzunluğa kadar boşluk ile doldurur; ancak
- VARCHAR(n) sadece verilen karakterleri saklar. BYTEA binary veri
- saklamak içindir; ayrıca "NULL" bayt içeren değerleri de saklar.
- Burada anlatılan üç veri tipi de benzer başarım karakteristiklere
- sahiptir.
-
- 4.15.1) Nasıl serial/otomatik artan (auto-incrementing) bir alan
- yaratabilirim?
-
- PostgreSQL'de SERIAL veri tipi vardır. Bu veri tipi bir sequence ve
- kolon üzerinde bir index yaratır.
-
- Örnek, aşağıdaki sorgu:
-CREATE TABLE person (
- id SERIAL,
- name TEXT
-);
-
- buna çevrilir:
-CREATE SEQUENCE person_id_seq;
-CREATE TABLE person (
- id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
- name TEXT
-);
-CREATE UNIQUE INDEX person_id_key ON person ( id );
-
- Sequenceler hakkında daha fazla bilgi için create_sequence yardım
- sayfasına bakabilirsiniz. Her satırın OID alanını tekil bir sayı
- olarak alabilirsiniz. Ancak, veritabanınızın dump'ını alıp yeniden
- yüklerseniz, OID değerlerini koruyabilmek için pg_dump'ın -o
- parametresini ya da "COPY WITH OIDS" seçeneğini kullanmanız
- gerekecektir.
-
- 4.15.2) SERIAL girişinin degerini nasıl alabilirim?
-
- Bir yaklaşım, sequence nesnesindeki SERIAL değerini, veriyi girmeden
- önce nextval() ile alıp, aldığınız değeri kendinizin girmesidir.
- 4.15.1'deki örnek tabloyu kullanarak bir örnek verelim:
-new_id = execute("SELECT nextval('person_id_seq')");
-
- execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
-
- Diğer sorgular için new_id'de yeni değerin saklanması gerekir.
- Otomatik olarak yaratılan SEQUENE nesnesinin adı, <tablo adı>_<serial
- kolonu adı>_seq şeklinde olacaktır (< > işaretleri olmadan).
-
- Alternatif olarak, atanmış SERIAL değerini, değer girildikten sonra
- currval() fonksiyonu ile alabilirsiniz:
- execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
- new_id = execute("SELECT currval('person_id_seq')");
-
- Son olarak, ön tanımlı değeri bulmak için INSERT ifadesinden dönen OID
- değerini kullanabilirsiniz; ancak bu en az taşınabilir çözüm
- olacaktır. Perl'de, Edmund Mergl'in DBD:Pg mödülü ile birlikte DBI
- kullanarak, OID değeri $sth->execute() çalıştırıldıktan sonra
- $sth->(pg_oid_status) ile alınabilir.
-
- 4.15.3) currval() ve nextval() diğer kullanıcılara sorun yaratmaz mı?
-
- Hayır. curval(), tüm kullanıcılar değil, backend tarafından atanan
- geçerli değeri döndürür.
-
- 4.15.4) Neden sequence sayıları transaction işleminin iptalinden sonra
- yeniden kullanılıyor? Neden sequence/SERIAL kolonumdaki sayılarda atlamalar
- oluyor?
-
- Uyumluluğu arttırmak için, sequence değerleri çalışan transaction'lara
- gerektiği şekilde aktarılır ve transaction bitene kadar o değer
- kilitlenmez. Bu, iptal edilen transaction işlemleri nedeniyle
- boşluklara neden olur.
-
- 4.16) OID nedir? TID nedir?
-
- OIDler, tekil satır numaralarına PostgreSQL'in yanıtıdır.
- PostgreSQL'de yaratılan her sayı, tekil bir OID alır. initdb işlemi
- sırasında yaratılan tüm OID'ler 16384'ten küçüktür
- (backend/access/transam.h). Kullanıcılar tarafından yaratılan tüm
- OID'ler bu sayıya eşit ya da bu sayıdan büyüktür. Varsayılan durumda,
- tüm bu OIDler sadece bir tablo ya da veritabanında değil, tüm
- PostgreSQL kurulumunda tekildir.
-
- PostgreSQL OIDleri, tablolar arasında satırları ilişkilendirmek için
- kendi iç tablolarında kullanır. Bu OIDler belirli kullanıcı
- satırlarını belirtmek için kullanabilir ve join işlemlerinde
- kullanılır. OID değerlerini saklamak için OID kolon tipini kullanmanız
- önerinir. Daha hızlı bir erişim için, OID alanında bir index
- yaratabilirsiniz.
-
- OID'ler yeni satırlara, tüm veritabanları tarafında kullanılan ortak
- bir alandan atanırlar. Eğer OID'i başka bir değere eşitlemek
- isterseniz ya da tablonun bir kopyasını orijinal OIDler ile çıkarmak
- isterseniz, bu mümkündür:
- CREATE TABLE new_table(old_oid oid, mycol int);
- SELECT old_oid, mycol INTO new FROM old;
- COPY new TO '/tmp/pgtable';
- DELETE FROM new;
- COPY new WITH OIDS FROM '/tmp/pgtable';
-
- OIDler 4-bit tamsayı olarak saklanırlar ve 4 milyarda overflow
- olacaktır. Kimse bu sayıya ulaştığına dair bir bilgi iletmedi ve bu
- sınırı kimse bu sınıra ulaşmadan kaldıracağız.
-
- TIDler, belirli fiziksel satırlar block ve offset değerleri ile
- belirtmekte kullanılır. TIDler, satırlar değiştiğinde ya da yeniden
- yüklendiğinde değişirler. Index girdileri tarafından fiziksel
- satırları göstermek için kullanılırlar.
-
- 4.17) PostgreSQL'de kullanılan bazı terimlerin anlamları nelerdir?
-
- Kaynak kodun bir kısmı ve eski belgeler, daha geniş kullanım alanı
- olan terimleri kullanırlar. Bunların bazıları:
- * table, relation, class
- * row, record, tuple
- * column, field, attribute
- * retrieve, select
- * replace, update
- * append, insert
- * OID, serial value
- * portal, cursor
- * range variable, table name, table alias
-
- Genel veritabanı terimleri,
- http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary
- /glossary.html adresinde bulunabilir.
-
- 4.18) Neden "ERROR: Memory exhausted in AllocSetAlloc()" hatasını alıyorum?
-
- Sisteminizde sanal belleğinizi tüketmiş olabilirsiniz, ya da
- çekirdeğiniz belli kaynaklar icin düşük bir sınıra sahip olabilir.
- postmaster'ı başlatmadan önce aşağıdakileri deneyebilirsiniz:
-ulimit -d 262144
-limit datasize 256m
-
- Kabuğunuza bağlı olarak, bunlardan sadece biri olumlu sonuç
- verecektir, ama bu işlem veri segment sınırınızı arttıracak, ve belki
- de sorgunuzun tamamlanmasını sağlayacaktır. Bu komut, varolan işleme
- (current process) ve komut çalıştırıldıktan sonraki tüm alt işlemlere
- uygulanır. Eğer SQL istemcinizle, backend'in çok fazla veri döndürmesi
- nedeniyle bir sorun yaşıyorsanız, bunu istemciyi başlatmadan önce
- deneyiniz.
-
- 4.19) Hangi PostgreSQL sürümünü çalıştırdığımı nasıl görebilirim?
-
- psql arabiriminde, select version(); yazınız.
-
- 4.20) Neden large-object işlemlerim, "invalid large obj descriptor"
- hatasını veriyor?
-
- Large object işlemlerinizin uçlarına, yani lo_open ... lo_close
- komutlarının çevresine, BEGIN WORK ve COMMIT koymanız gerekmektedir;
-
- Şu anda, PostgreSQL kuralları large objectleri transaction commit
- edildiğinde kapatarak uygulamaktadır. Dolayısıyla handle ile yapılacak
- ilk şey invalid large obj descriptor hatası ile
- sonuçlanacaktır.Dolayısıyla çalışan kodunuz eğer transaction
- kullanmazsanız hata mesajları üretecektir.
-
- Eğer ODBC gibi bir istemci arabirimi kullanıyorsanız, auto-commit'i
- kapatmanız gerekebilir.
-
- 4.21) Şu andaki zamanı öntanımlı değer olarak kabul eden How do I create a
- column that will default to the current time?
-
- Alttakini kullanabilirsiniz:
-CURRENT_TIMESTAMP:
-CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
-
- 4.22) Neden IN kullanan subquery'lerim çok yavas?
-
- 7.4 sürümünden önce, subqueryler. Eğer subquery sadece birkaç satır ve
- outer query bol sayıda satır döndürüyorsa, IN en hızlısıdır. Sorguları
- hızlandırmak için IN yerine EXISTS kullanın:
-SELECT *
- FROM tab
- WHERE col1 IN (SELECT col2 FROM TAB2)
-
- sorgusunu, aşağıdaki ile değiştirin:
-SELECT *
- FROM tab
- WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2)
-
- Bu işlemin hızlı olması için, subcol'un indexlenmiş bir kolon olması
- gerekmektedir.
-
- 7.4 sürümü ve sonrasında, IN aslında normal sorgularla aynı karmaşık
- join tekniklerini kullanır ve EXISTS'e tercih edilir.
-
- 4.23) Outer join işlemini nasıl yapabilirim?
-
- PostgreSQL outer joins islemlerini SQL standartlarını kullanarak
- gerçekleştirmektedir. Aşağıda 2 örnek bulunmaktadır:
-SELECT *
-FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
- ya da
-SELECT *
-FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
- Bu özdeş sorgular t1.col' i t2.col'ye join ederler ve aynı zamanda
- t1'deki unjoined satırları (t2'de eşlenmemiş olanlarla) döndürürler.
- RIGHT JOIN t2'nin unjoined satırlarını ekleyecektir. Bir FULL join,
- eşleşmiş bütün satırları ve t1 ile t2'den tüm bağlanmamış (unjoined)
- satırları alır. OUTER sözcüğü seçimseldir ve LEFT, RIGHT ve FULL join
- işlemlerinde olduğu kabul edilir. Sıradan join işlemleri INNER JOIN
- olarak adlandırılır.
-
- Önceki sürümlerde, OUTER JOINler UNION ve NOT IN kullanılarak simüle
- edilebiliyordu. Örneğin, tab1 ve tab2'yi birleştirirken, aşağıdaki
- sorgu iki tablonun dıştan bağlanmasını sağlar:
-SELECT tab1.col1, tab2.col2
-FROM tab1, tab2
-WHERE tab1.col1 = tab2.col1
-UNION ALL
-SELECT tab1.col1, NULL
-FROM tab1
-WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
-ORDER BY col1
-
- 4.24) Aynı andan birden fazla veritabanında nasıl işlem yapabilirim?
-
- Mevcut veritabanınız dışındaki başka bir veritabanınızı sorgulamanızın
- bir yolu bulunmamaktadır. Bunun nedeni, PostgreSQL'in veritabanına
- özel sistem katalogları yüklemesidir. Bu nedenle, cross-database bir
- sorgunun nasıl davranacağını kestirmek zordur.
-
- contrib/dblink fonksiyon çağrılarını kullanarak cross-database
- sorgulara izin verir. Tabii ki, bir istemci değişik veritabanlarına
- aynı anda erişim sağlayabilir ve bilgiyi bu şekilde birleştirebilir.
-
- 4.25) Bir fonksiyondan nasıl çoklu satır ya da kolon döndürebilirim?
-
- 7.3 sürümünde, bir fonksiyondan kolaylıkla çoklu satır ya da sütun
- döndürebilirsiniz.
- (http://techdocs.postgresql.org/guides/SetReturningFunctions)
-
- 4.26) Neden Pl/PgSQL fonksiyonları içinden güvenli bir şekilde tablo
- yaratma/kaldırma işlemlerini yapamıyoruz?
-
- PL/PgSQL fonksiyon içerikleri cache'ler. Bunun istenmeyen bir tarafı,
- eğer bir PL/PgSQL fonksiyonu geçici bir tabloya erişiyorsa ve bu tablo
- ileride kaldırılıp yeniden oluşturulduktan sonra fonksiyon yeniden
- çağrılırsa, fonksiyon çalışmayacaktır; çünkü cache'lenmiş fonksiyon
- hala eski geçici tabloyu gösteriyor olacaktır. Çözüm, geçici tablo
- erişimleri için PL/PgSQL'de EXECUTE kullanmaktır. Bu, sorgunun her
- seferinde yeniden işlenmesini sağlayacaktır.
-
- 4.27) 4.28) Hangi şifreleme seçenekleri bulunmaktadır?
-
- * contrib/pgcrypto SQL sorgularında kullanılabilmesi için şifreleme
- fonksiyonları içermektedir.
- * İstemciden sunucuya iletişimi şifrelemek için, sunucuda ssl
- seçeneği postgresql.conf içinde açık olmalıdır. Ayrıca,pg_hba.conf
- dosyası içinde host ya da hostssl kaydı mutlaka olmalıdır ve
- istemci sslmode kapatılmamalıdır. (Aynı zamanda,PostgreSQL'in
- doğal SSL bağlantıları dışında ssh ya da ssl gibi 3.parti
- şifrelenmiş veri iletimi de mümkündür.)
- * Veritabanı kullanıcı adı ve şifreleri 7.3 sürümü ile birlikte
- otomatik olarak şifrelenirler. Önceki sürümlerde, postgresql.conf
- içindeki PASSWORD_ENCRYPTION seçeneğini aktif hale getirmeniz
- gerekmektedir.
- * Sunucunun kendisini şifreli dosya sistemi üzerinde
- çalıştırabilirsiniz.
- _________________________________________________________________
-
- PostgreSQL Özelliklerini Genişletmek
-
- 5.1) Kullanıcı-tanımlı bir fonksiyon yazdım. psql'de çalıştırdığım zaman
- neden core dump ediyor?
-
- Sorunun nedeni birden fazla şey olabilir. Kullanıcı-tanımlı
- fonksiyonunuzu stand-alone bir programda çalıştırmayı deneyiniz.
-
- 5.2) PostgreSQL'e nasıl yeni tipler/fonksiyonlar ekleyebilirim?
-
- Çalışmalarınızı pgsql-hackers e-posta listesine gönderiniz. Kodunuz
- incelendikten sonra contrib dizinine konacaktır.
-
- 5.3) Bir tuple dondürmek icin bir C fonksiyonunu nasil yazarım?
-
- PostgreSQL 7.3 sürümü ile birlikte, C, PL/PgSQL ve SQL kullanılarak
- tablo-döndüren fonksiyonlar tamamen desteklenmektedir. Ayrıntılı bilgi
- için PostgreSQL 7.3.2 Kullanıcı Rehberi'ne bakabilrisiniz. Bir örneği
- contrib/tablefunc içinde bulabilirsiniz.
-
- 5.4) Bir kaynak dosyasında değişiklik yaptım. Yeniden derlememe rağmen
- değişiklik geçerli olmuyor. Neden?
-
- Makefile'lar include dosyaları için tam bir bağımlılık içermezler.
- Öncelikle make clean, ardından da baska bir make işlemi yapmanız
- gerekir. GCC kullanıyorsanız, configure betiğinin --enable-depend
- seçeneğini, derleyicinin bağımlılıkları otomatik olarak hesaplaması
- için kullanabilirsiniz.
diff --git a/doc/src/FAQ/FAQ_MINGW.html b/doc/src/FAQ/FAQ_MINGW.html
deleted file mode 100644
index 159553873ab..00000000000
--- a/doc/src/FAQ/FAQ_MINGW.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
- <meta http-equiv="content-type"
- content="text/html; charset=ISO-8859-1">
- <title>PostgreSQL Native Win32 Status Report</title>
-</head>
-<body>
-<h1 style="text-align: center;">Compiling PostgreSQL On Native Win32 FAQ<br>
-</h1>
-<P>Last updated: Thu Oct 14 18:22:57 EDT 2004</P>
-<P>Current maintainer: Bruce Momjian &lt;<A href=
-"mailto:bruce@momjian.us">bruce@momjian.us</A>&gt;<BR>
-</P>
-
-<P>The most recent version of this document can be viewed at <A href=
-"http://www.postgresql.org/docs/faqs.FAQ_MINGW.html">
-http://www.postgresql.org/docs/faqs.FAQ_MINGW.html</A>.</P>
-
-<P>The FAQ Running & Installing PostgreSQL On Native Windows is at <A href=
-"http://pginstaller.projects.postgresql.org/faq/FAQ_windows.html">
-http://pginstaller.projects.postgresql.org/faq/FAQ_windows.html</A>.</P>
-
-<p>The native Win32 port is built from source using MinGW tools.&nbsp;
-There is also a precompiled binary installer called <span
- style="font-style: italic;">pginstaller</span> which you can find at
-from <a href="http://pgfoundry.org/projects/pginstaller">http://pgfoundry.org/projects/pginstaller</a>.&nbsp;
-It is a fully native build and uses no additional software like MinGW.
-The ready-made installer files are available on the main PostgreSQL ftp servers
-in the binary/win32 directory.
-<br>
-</p>
-<h2>Tools for Building Binaries<br>
-</h2>
-<p> The native Win32 port requires a 32-bit NT-based Microsoft
-operating
-system, like Windows NT 4, Windows 2000/2003, or Windows XP. (NT 4
-is no longer supported since version 8.2)&nbsp; Earlier
-operating systems do not have sufficient infrastructure. Building the
-port also
-requires MinGW and Msys, which can be downloaded from <a
- href="http://www.mingw.org/">http://www.mingw.org/</a>. MinGW is
-a Unix-like build environment for Microsoft operating systems.
-Msys is a collection of unix tools required to run shell scripts like <i>configure.&nbsp;
-</i>Neither is required to run the resulting binaries;&nbsp; they are
-needed only for creating the binaries.&nbsp; Work is in progress to support
-building using Visual C++ in a future version.<br>
-</p>
-<h2>Steps For Building Binaries<br>
-</h2>
-<ul>
- <li>Download the nightly snapshot tarball from <a
- href="ftp://ftp.postgresql.org/pub/dev">ftp://ftp.postgresql.org/pub/dev</a>
-or checkout via CVS (you will need <i>bison, flex,</i> and <i>perl</i>
-installed to build from CVS)<br>
- </li>
- <li>Run <i>configure</i> (you might need to add the --without-zlib
-argument, depending on whether you have installed <span
- style="font-style: italic;">zlib
- </span>on MinGW)</li>
- <li>Run <i>make install</i></li>
-</ul>
-Note:&nbsp; it is suggested that you run <i>psql</i> under <i>CMD.EXE.</i>,
-as the Msys console has buffering issues.<br>
-<br>
-If you make a change that you want to contribute, make a context diff
-and send
-it to the mailing list. <br>
-<h2>Resources</h2>
-There are several resources that helped us complete this port:<br>
-<ul>
- <li>PeerDirect port of PostgreSQL 7.2 to Win32 (<a
- href="ftp://momjian.postgresql.org/pub/postgresql/win32/PeerDirect">ftp://momjian.postgresql.org/pub/postgresql/win32/PeerDirect</a>)</li>
- <li>CONNX Win32 signal code(<a
- href="ftp://momjian.postgresql.org/pub/postgresql/win32/CONNX">ftp://momjian.postgresql.org/pub/postgresql/win32/CONNX</a>)</li>
- <li>SRA port of PostgreSQL to Win32 (unfortunately, this is not
-publically available because the threaded portion is proprietary)</li>
- <li>CHM help files (<a
- href="http://www.pgadmin.org/snapshots/help/en_US/pgadmin3.chm">http://www.pgadmin.org/snapshots/help/en_US/pgadmin3.chm</a>)</li>
-</ul>
-</body>
-</html>
diff --git a/doc/src/FAQ/FAQ_brazilian.html b/doc/src/FAQ/FAQ_brazilian.html
deleted file mode 100644
index 35e7c051e02..00000000000
--- a/doc/src/FAQ/FAQ_brazilian.html
+++ /dev/null
@@ -1,942 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML>
- <HEAD>
- <META name="generator" content="HTML Tidy, see www.w3.org">
- <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <TITLE>FAQ do PostgreSQL</TITLE>
- </HEAD>
-
- <BODY bgcolor="#ffffff" text="#000000" link="#ff0000" vlink="#a00000"
- alink="#0000ff">
- <H1>Perguntas Frequentes (FAQ) sobre PostgreSQL</H1>
-
- <P>&Uacute;ltima atualiza&ccedil;&atilde;o: Sex Nov 16 10:53:50 EST 2007</P>
-
- <P>Mantenedor atual: Bruce Momjian (<A href=
- "mailto:bruce@momjian.us">bruce@momjian.us</A>)
- </P>
-
- <P>Traduzido por: Euler Taveira de Oliveira (<A href=
- "mailto:euler@timbira.com">euler@timbira.com</A>)</P>
-
- <P>A vers&atilde;o mais recente desse documento pode ser vista em <A href=
- "http://www.postgresql.org/files/documentation/faqs/FAQ.html">
- http://www.postgresql.org/files/documentation/faqs/FAQ.html</A> (EN).<BR>
- <A href="http://www.postgresql.org/files/documentation/faqs/FAQ_brazilian.html">
- http://www.postgresql.org/files/documentation/faqs/FAQ_brazilian.html</A> (pt_BR).</P>
-
- <P>Perguntas sobre plataformas espec&iacute;ficas s&atilde;o respondidas em <A href=
- "http://www.postgresql.org/docs/faq/">http://www.postgresql.org/docs/faq/</A>.</P>
- <HR>
-
- <H2 align="center">Perguntas Gerais</H2>
- <A href="#item1.1">1.1</A>) O que &eacute; PostgreSQL? Como ele &eacute; pronunciado?
- O que &eacute; Postgres?<BR>
- <A href="#item1.2">1.2</A>) Quem controla o PostgreSQL?<BR>
- <A href="#item1.3">1.3</A>) Qual &eacute; a licen&ccedil;a do PostgreSQL?<BR>
- <A href="#item1.4">1.4</A>) Quais plataformas o PostgreSQL pode ser executado?<BR>
- <A href="#item1.5">1.5</A>) Onde eu posso conseguir o PostgreSQL?<BR>
- <A href="#item1.6">1.6</A>) Qual &eacute; a &uacute;ltima vers&atilde;o?<BR>
- <A href="#item1.7">1.7</A>) Onde eu posso conseguir suporte?<BR>
- <A href="#item1.8">1.8</A>) Como eu posso submeter um relato de um bug?<BR>
- <A href="#item1.9">1.9</A>) Como eu posso saber quais s&atilde;o os bugs conhecidos ou caracter&iacute;sticas ausentes?<BR>
- <A href="#item1.10">1.10</A>) Que documenta&ccedil;&atilde;o est&aacute; dispon&iacute;vel?<BR>
- <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>
- <A href="#item2.1">2.1</A>) Quais interfaces est&atilde;o dispon&iacute;veis para PostgreSQL?<BR>
- <A href="#item2.2">2.2</A>) Quais ferramentas est&atilde;o dispon&iacute;veis para utilizar o PostgreSQL com p&aacute;ginas Web?<BR>
- <A href="#item2.3">2.3</A>) O PostgreSQL tem interfaces gr&aacute;ficas para interagir com usu&aacute;rio?<BR>
-
-
- <H2 align="center">Perguntas Administrativas</H2>
- <A href="#item3.1">3.1</A>) Como eu instalo o PostgreSQL em um local diferente de <I>/usr/local/pgsql</I>?<BR>
- <A href="#item3.2">3.2</A>) Como eu controlo conex&otilde;es de outras m&aacute;quinas?<BR>
- <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?<BR>
- <A href="#item3.7">3.7</A>) Que tipo de hardware eu devo usar?<BR>
-
-
- <H2 align="center">Perguntas Operacionais</H2>
- <A href="#item4.1">4.1</A>) Como eu fa&ccedil;o um <SMALL>SELECT</SMALL> somente dos primeiros registros de uma consulta? Um registro rand&ocirc;mico?<BR>
- <A href="#item4.2">4.2</A>) Como eu descubro quais tabelas, &iacute;ndices, bancos de dados e usu&aacute;rios est&atilde;o definidos? Como eu vejo as consultas utilizadas pelo <I>psql</I> para mostr&aacute;-los?<BR>
- <A href="#item4.3">4.3</A>) Como voc&ecirc; muda o tipo de dado de uma coluna?<BR>
- <A href="#item4.4">4.4</A>) Qual &eacute; o tamanho m&aacute;ximo de um registro, uma tabela e um banco de dados?<BR>
- <A href="#item4.5">4.5</A>) Quanto espa&ccedil;o em disco &eacute; necess&aacute;rio para armazenar dados de um arquivo texto?<BR>
- <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 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
- <SMALL>SERIAL</SMALL>?<BR>
- <A href="#item4.11.3">4.11.3</A>) <I>currval()</I> n&atilde;o lida com condi&ccedil;&atilde;o de corrida com outros usu&aacute;rios?<BR>
- <A href="#item4.11.4">4.11.4</A>) Por que os n&uacute;meros da minha sequ&ecirc;ncia n&atilde;o s&atilde;o reutilizados quando uma transa&ccedil;&atilde;o &eacute; abortada? Por que h&aacute; intervalos nos n&uacute;meros da minha sequ&ecirc;ncia/coluna SERIAL?<BR>
- <A href="#item4.12">4.12</A>) O que &eacute; um <SMALL>OID</SMALL>? O que &eacute; um <SMALL>CTID</SMALL>?<BR>
- <A href="#item4.13">4.13</A>) Por que eu recebo o erro <I>"ERROR: Memory exhausted in AllocSetAlloc()"</I>?<BR>
- <A href="#item4.14">4.14</A>) Como eu informo qual vers&atilde;o do PostgreSQL eu estou utilizando?<BR>
- <A href="#item4.15">4.15</A>) Como eu crio uma coluna que conter&aacute; por padr&atilde;o a hora atual?<BR>
- <A href="#item4.16">4.16</A>) Como eu fa&ccedil;o uma jun&ccedil;&atilde;o externa (outer join)?<BR>
- <A href="#item4.17">4.17</A>) Como eu fa&ccedil;o consultas utilizando m&uacute;ltiplos bancos de dados?<BR>
- <A href="#item4.18">4.18</A>) Como eu retorno m&uacute;ltiplos registros ou colunas de uma fun&ccedil;&atilde;o?<BR>
- <A href="#item4.19">4.19</A>) Por que eu obtenho erros "relation with OID ######
- 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? Por que as mai&uacute;sculas n&atilde;o s&atilde;o preservadas?<BR>
-
-
- <HR>