author | Bruce Momjian | |
Thu, 10 Jun 2004 03:46:11 +0000 (03:46 +0000) | ||
committer | Bruce Momjian | |
Thu, 10 Jun 2004 03:46:11 +0000 (03:46 +0000) |
doc/FAQ_brazilian | [new file with mode: 0644] | patch | blob |
doc/src/FAQ/FAQ_brazilian.html | [new file with mode: 0644] | patch | blob |
Última atualização: Sex Jun 4 00:09:16 EDT 2004
Mantenedor atual: Bruce Momjian (
Traduzido por: Euler Taveira de Oliveira (
A versão mais recente desse documento pode ser vista em
Perguntas sobre plataformas específicas são respondidas em
PostgreSQL é pronunciado Post-Gres-Qui-El. Um arquivo de áudio está PostgreSQL é um melhoramento do sistema de gerência O desenvolvimento do PostgreSQL é feito por um grupo de Os autores do PostgreSQL 1.01 foram Andrew Yu e Jolly Chen. O nome original do software em Berkeley era Postgres. Quando PostgreSQL está sujeito a seguinte licença: PostgreSQL Sistema de Gerência de Banco de Dados Portions copyright (c) 1996-2004, PostgreSQL Global Development Permissão de uso, cópia, modificação EM NENHUM EVENTO A UNIVERSIDADE DA CALIFÓRNIA SERÁ A UNIVERSIDADE DA CALIFÓRNIA ESPECIFICADAMENTE NÃO DÁ O que está descrito acima é a licença BSD, uma 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. Cliente É possível compilar a biblioteca libpq, o psql e outras interfaces e aplicações clientes para executar em plataformas MS Windows. Neste caso, o cliente está sendo executado no MS Windows e comunica via TCP/IP com um servidor executando em uma das plataformas Unix suportadas. O arquivo win32.mak está presente na distribuição para que seja possível compilar a biblioteca libpq e o psql para Win32. O PostgreSQL também se comunica com clientes ODBC. Servidor O Servidor de banco de dados pode ser executado em Windows NT e Win2k utilizando o Cygwin, uma biblioteca de portabilidade Unix/NT da Cygnus. Veja pgsql/doc/FAQ_MSWIN na distribuição ou a FAQ do MS Windows em http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN. Um porte nativo para MS Win NT/2000/XP está sendo desenvolvido. Para maiores detalhes sobre o status do PostgreSQL no Windows veja http://techdocs.postgresql.org/guides/Windows e http://momjian.postgresql.org/main/writings/pgsql/win32.html. Há também um porte para Novell Netware 6 em O servidor ftp principal do PostgreSQL é
A lista de discussão principal é:
para
Há também uma lista síntese (digest) disponível. Para se inscrever, envie um e-mail para: [email protected] com o seguinte corpo: A lista de discussão sobre bugs está disponível. Para se inscrever, envie um e-mail para [email protected] com o seguinte corpo: Outras listas de discussões e informações sobre o PostgreSQL podem ser encontradas na homepage do PostgreSQL em: Há também um canal de IRC na Freenode e EFNet, canal PostgreSQL. Você pode utilizar o comando Unix Uma lista de empresas que prestam suporte comercial está disponível em
A última versão do PostgreSQL é a versão 7.4.2. Nós planejamos lançar versões novas a cada seis ou oito meses. Vários manuais, páginas de manuais (man pages) e alguns exemplos para teste estão incluídos na distribuição. Veja o diretório /doc. Você pode acessar os manuais online em http://www.PostgreSQL.org/docs. Há dois livros sobre PostgreSQL disponíveis online em
psql tem alguns comandos \d para mostrar informação sobre tipos, operadores, funções, agregações, etc. Nosso web site contém ainda mais documentação. PostgreSQL suporta um subconjunto extendido do SQL-92. O livro "The PostgreSQL book" em
Outro é o "Teach Yourself SQL in 21 Days, Second Edition" Muitos dos nossos usuários gostam do The Practical SQL Handbook, Sim, nós podemos manipular datas após o ano 2000 AD e antes do ano 2000 BC. Primeiramente, faça o download do código-fonte e leia a documentação para Desenvolvedores do PostgreSQL no nosso website ou na distribuição. Depois, se inscreva nas lista de discussão pgsql-hackers e pgsql-patches. Então submeta patches de alta qualidade para pgsql-patches. Há algumas pessoas que tem privilégios para fazer mudanças (commit) na árvore CVS do PostgreSQL. Cada um deles submeteram tantos patches de alta qualidade que foi impossível para os committers continuarem a fazerem as mudanças, e então nós confiamos que os patches que eles submetem são de alta qualidade. Por favor visite a página da ferramenta que reporta bugs em
Verifique também o nosso ftp
Há várias maneiras de se medir um software: características, performance, confiabilidade, suporte e preço. PostgreSQL teve sua primeira infra-estrutura em 1996 quando iniciamos. Somos todos gratos ao Marc Fournier, que criou e gerenciou esta infra-estrutura ao longo dos anos. Infra-estrutura de qualidade é muito importante em um projeto de código aberto. Ela previne descontinuidades que podem facilmente descontinuar o andamento do projeto. É claro, que a infra-estrutura não é barata. Há vários custos iniciais e mensais que são necessários para manté-la. Se você ou sua empresa tem dinheiro que pode ser doado para ajudar a financiar esse esforço, acesse http://store.pgsql.com/shopping/ e faça uma doação. Embora a página mencione PostgreSQL, Inc, a "contribuição" é somente para apoiar o projeto PostgreSQL e não financia nenhuma empresa específica. Se você preferir, você pode enviar um cheque para o endereço de contato. Se você tiver uma história de sucesso sobre o PostgreSQL, envie-a para nosso website em http://advocacy.postgresql.org. Há dois drivers ODBC disponíveis, PsqlODBC e o OpenLink ODBC. Você pode fazer o download do PsqlODBC em http://gborg.postgresql.org/project/psqlodbc/projdisplay.php. OpenLink ODBC pode ser conseguido em http://www.openlinksw.com. Ele trabalha com cliente ODBC padrão, então você poderá ter o ODBC para PostgreSQL disponível em toda plataforma que eles suportam (Win, Mac, Unix, VMS). Eles provavelmente venderão seu produto para pessoas que precisam de um suporte de qualidade, mas uma versão gratuita estará sempre disponível. Por favor envie perguntas para [email protected]. Uma boa introdução para páginas web que utilizam bancos de dados pode ser vista em: Para integração na Web, PHP é uma excelente interface. Ele está em
Para casos complexos, muitos usam a Interface Perl e CGI.pm ou mod_perl. Sim, há várias interfaces gráficas para PostgreSQL disponíveis. Veja http://techdocs.postgresql.org/guides/GUITools para uma lista mais detalhada. Muitas linguagens de programação populares contém uma interface para PostgreSQL. Verifique a lista de extensões (módulos) da sua linguagem de programação. As seguintes interfaces estão incluídas na distribuição do PostgreSQL: Interfaces adicionais estão disponíveis em Especifique a opção --prefix quando executar o configure. Isto pode ser vários problemas, mas primeiro verifique se você tem extensões do System V instaladas no seu kernel. PostgreSQL requer suporte no kernel a memória compartilhada e semáforos. Você não configurou a memória compartilhada corretamente no seu kernel ou você precisa aumentar a memória compartilhada disponível no seu kernel. A quantidade exata que você precisa vai depender da arquitetura e de quantos buffers e processos do servidor você configurou para o postmaster. Muitos sistemas, com o número padrão de buffers e processos, precisam de aproximadamente 1 MB. Veja o Guia do Administrador do PostgreSQL para mais informação sobre memória compartilhada e semáforos. Se a mensagem de erro é IpcSemaphoreCreate: semget failed (No space left on device) então o seu kernel não está configurado com o número de semáforos suficientes. O Postgres precisa de um semáforo por processo do servidor. Uma solução temporária é iniciar o postmaster com um limite pequeno de processos do servidor. Utilize -N com o parâmetro menor do que o padrão (32). Uma solução permanente seria aumentar os parâmetros do kernel SEMMNS e SEMMNI. Semáforos inoperantes podem também causar danos durante intenso acesso ao banco de dados. Se a mensagem é outra coisa, você possivelmente não tem suporte a semáforo configurado no seu kernel. Veja o Guia do Administrador para mais informação sobre memória compartilhada e semáforos. Por padrão, o PostgreSQL só permite conexões da máquina local utilizando soquetes de domínio Unix. Outras máquinas não poderão conectar-se a menos que você habilite tcpip_sockets no postgresql.conf, e habilite a autenticação por máquina modificando o arquivo $PGDATA/pg_hba.conf. Isso irá permitir conexões TCP/IP. Certamente, índices podem acelerar consultas. O comando EXPLAIN ANALYZE permite que você veja como o PostgreSQL está interpretando a consulta, e quais os índices são utilizados. Se você está fazendo muitos INSERTs, considere fazê-los em lote utilizando o comando COPY. Isso é mais rápido do que INSERTs individuais. Segundo, sentenças que não estão em um bloco de transação BEGIN WORK/COMMIT são consideradas com se estivessem em sua própria transação. Considere executar várias sentenças em um mesmo bloco de transação. Isso reduz a quantidade de transações. Também, considere remover e criar índices novamente quando estiver fazendo muitas mudanças nos dados. Há várias opções de ajuste. Você pode desabilitar o fsync() iniciando o postmaster com a opção -o -F. Isso irá impedir que fsync()s enviem os dados para disco após cada transação. Você também pode utilizar a opção -B do postmaster para aumentar o número de buffers de memória compartilhada utilizados pelos processos do servidor. Se você definiu este parâmetro com um valor muito alto, o postmaster pode não iniciar porque você excedeu o limite de espaço de memória compartilhada do kernel. Cada buffer é de 8K e o padrão é de 64 buffers. Você também pode utilizar a opção -S do backend para aumentar a máxima quantidade de memória utilizada pelo processo servidor para ordenações temporárias. O valor de -S é medido em kilobytes e o padrão é de 512 (ou seja 512K). Você também pode utilizar o comando CLUSTER para agrupar dados em tabelas para combinar um índice. Veja o manual sobre CLUSTER para mais informação. PostgreSQL tem várias características que relatam informações que podem ser valiosas para fins de depuração. Primeiro, execute o configure com a opção --enable-cassert, muitos assert()s monitoram o progresso do núcleo (backend) e finalizam o programa quando alguma coisa inesperada acontece. O postmaster e o postgres tem várias opções de depuração disponíveis. Primeiro, quando iniciar o postmaster, tenha certeza que você enviou a saida padrão e a saída de erro padrão para um arquivo de log, como em: Isso irá criar um arquivo server.log no diretório raiz do PostgreSQL. Este arquivo conterá informações úteis sobre problemas ou erros encontrados pelo servidor. O Postmaster tem uma opção -d que permite que informações mais detalhadas sejam relatadas. A opção -d é acompanhada por um número que indica o nível de depuração. Esteja alerta de que alto nível de depuração gera grandes arquivos de log. Se o postmaster não está sendo executado, você pode executar o núcleo do postgres a partir da linha de comando, e digitar a sua sentença SQL diretamente. Isso é recomendado somente para fins de depuração. Note que uma nova linha termina a consulta, e não um ponto-e-vírgula. Se você compilou com símbolos de depuração, você pode utilizar um depurador para ver o que está acontecendo. Como o núcleo (backend) não foi iniciado a partir do postmaster, ele não está executando em um ambiente idêntico e problemas de iteração com o núcleo/travamento não podem ser reproduzidos. O programa postgres possue as opções -s, -A, e -t que podem ser muito úteis para depuração e medidas de performance. Você também pode compilar com perfil para ver que funções estão demandando tempo de execução. Os arquivo de perfil do núcleo (backend) serão colocados no diretório pgsql/data/base/dbname. O arquivo de perfil do cliente será colocado no diretório atual do cliente. O Linux requer uma compilação com -DLINUX_PROFILE para criação dos perfis. Você precisa aumentar o limite do postmaster de quantos processos do servidor concorrentes ele pode iniciar. O limite padrão é de 32 processos. Você pode aumentá-lo reiniciando o postmaster com o valor conveniente de -N ou modificar o postgresql.conf. Note que se você definir o -N com um valor maior do que 32, você também deve aumentar -B cujo padrão é 64; -B deve ser pelo menos duas vezes -N, e provavelmente deve ser mais do que isso para uma melhor performance. Para um grande número de processos do servidor, você também precisa aumentar vários parâmetros de configuração do kernel do Unix. Coisas para serem observadas incluem o tamanho máximo de blocos de memória compartilhada, SHMMAX; o número máximo de semáforos, SEMMNS e SEMMNI; o número máximo de processos, NPROC; o número máximo de processos por usuário, MAXUPRC; e o número máximo de arquivos abertos, NFILE e NINODE. A razão na qual o PostgreSQL tem um limite de número de processos do servidor permitidos é para que o seu sistema não fique sem recursos disponíveis. Este diretório contém arquivos temporários gerados pelo executor de uma consulta. Por exemplo, se uma ordenação é necessária para satisfazer um ORDER BY e a ordenação requer mais espaço do que o parâmetro -S do servidor permite, então arquivos temporários são criados para abrigar os dados extras. Os arquivos temporários geralmente são apagados automaticamente, mas podem persistir caso o servidor termine anormalmente durante a ordenação. Uma parada e um reinício do postmaster removerá os arquivos destes diretórios. O time do PostgreSQL faz somente pequenas mudanças entre versões menores, então atualizar da versão 7.2 para 7.2.1 não requer uma exportação e uma importação. Contudo, versões maiores (i.e. da 7.2 para 7.3) geralmente muda-se o formato interno das tabelas de sistema e dos arquivo de dados. Essas mudanças geralmente são complexas, então nós não mantemos compatibilidade para os arquivos de dados. Uma exportação em um formato genérico que pode ser importada utilizando o novo formato interno. Em versões onde o formato em disco não muda, o script pg_upgrade pode ser utilizado para atualizar sem precisar de um dump/restore. As notas da versão mencionam se pg_upgrade está disponível para a versão. Veja o comando DECLARE no manual para uma descrição. Veja o manual do FETCH, ou utilize Toda a consulta tem que ser avaliada, mesmo se você só quer os primeiros registros. Considere utilizar uma consulta que tenha um ORDER BY. Se há um índice que combina com o ORDER BY, o PostgreSQL pode ser capaz de avaliar somente os primeiros registros requisitados, ou toda consulta tem que ser avaliada até que os registros desejados tenham sido gerados. Para obter um registro randômico, utilize: Utilize o comando \dt para ver tabelas no psql. Para obter uma lista completa de A funcionalidade DROP COLUMN foi adicionada a versão 7.3 com comando Para alterar o tipo de dados de uma coluna, faça isto: Você pode querer executar o comando VACUUM FULL tab para recuperar o espaço em disco utilizado pelos registros expirados. Estes são os limites: 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 e o número máximo de colunas pode ser quadruplicadas aumentando-se o tamanho dos blocos para 32k. 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 6.4 MB: Í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. psql tem uma variadade de comandos com barra invertida que mostram tais informações. Utilize \? para vê-los. Há também tabelas do sistema que começam com pg_ e que os descrevem também. Também, psql -l listará todos os bancos de dados. Veja também o arquivo pgsql/src/tutorial/syscat.source. Ele ilustra muitos SELECTs necessários para obter informação das tabelas do sistema de banco de dados. Para determinar se um índice pode ser utilizado, o PostgreSQL deve ter Índices não são normalmente utilizados para ORDER BY ou Se você acredita que o otimizador está incorreto ao escolher uma Quando é utilizado operadores com curingas tais como LIKE ou Veja o comando EXPLAIN no manual. Um índice de árvore B é utilizado para indexação de dados espaciais. Um índice do tipo hash não pode manipular buscas em intervalos. Um índice de árvore B manipula somente buscas em intervalos em uma dimensão. Um índice de árvore R pode manipular dados multidimensionais. Por exemplo, se um índice de árvore R pode ser contruido em um atributo do tipo point, o sistema pode responder mais eficientemente consultas tais como "busque todos os pontos dentro dos limites do retângulo." A pesquisa canônica que descreve o modelo original da árvore R está em: Guttman, A. "R-trees: A Dynamic Index Structure for Spatial Você também pode encontrar esse documento em "Readings in Database Systems" do Stonebraker Árvores R podem manipular polígonos e caixas. Na teoria, árvores R podem ser extendidos para manipular um grande número de dimensões. Na prática, extendendo árvores R requer um pouco de trabalho e nós não temos atualmente nenhuma documentação de como fazé-lo. O módulo GEQO acelera a otimização de consultas quando se faz uma junção de várias tabelas utilizando o conceito de Algoritmo Genético (AG). Isso permite a manipulação de consultas com muitas junções utilizando buscas não exaustivas. 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: Você pode testar a coluna com IS NULL e IS 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, esses tipos de dados também são sujeitos a compressão ou a serem armazenados fora do padrão utilizando o TOAST, então o espaço em disco pode também ser bem menor do que o esperado. 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. PostgreSQL suporta o tipo de dados SERIAL. Ele cria automaticamente uma sequência. Por exemplo: Uma abordagem é obter o próximo valor SERIAL Alternativamente, você poderia obter o valor SERIAL Não. currval() retorna o valor atual atribuido pelo seu núcleo (backend), e não por todos os usuários. 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. OIDs são a resposta do PostgreSQL a ids únicos de registros. PostgreSQL utiliza OIDs nas tabelas internas do sistema OIDs são atribuídos para todas os registros novos de uma OIDs são armazenados como inteiros de 4 bytes, e TIDs são utilizados para identificar registros físicos O código-fonte e documentação antiga utiliza termos de uso comum. Aqui estão alguns deles: Uma lista de termos gerais de bancos de dados pode ser encontrada em:
Você provavelmente está sem memória virtual no sistema, ou o seu núcleo (kernel) tem um limite baixo para certos recursos. Tente isto antes de iniciar o postmaster: No psql, digite Você precisa colocar Atualmente PostgreSQL obriga o fechamento de manipulação de um objeto grande quando uma transação é submetida (commit). Então a primeira tentativa de fazer qualquer coisa com o manipulador irá retornar invalid large obj descriptor. Então o código que funcionava (ao menos a algum tempo atrás) agora irá retornar uma mensagem de erro se você não utilizar uma transação. Utilize CURRENT_TIMESTAMP: Em versões anteriores a 7.4, subconsultas eram agrupadas em consultas externas utilizando uma busca sequencial no resultado da subconsulta de cada registro da consulta externa. Se uma subconsulta retorna somente alguns registros e a consulta externa retorna muitos registros, A partir da versão 7.4, PostgreSQL suporta junções externas utilizando a sintaxe padrão do SQL. Aqui temos dois exemplos: 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 naturais (INNER). Em versões anteriores, junções externas podiam ser simuladas utilizando UNION e NOT IN. Por exemplo, quando juntar tab1 e tab2, a consulta a seguir faz uma junção externa de duas tabelas: 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. No 7.3, você pode facilmente retornar múltiplos registros ou colunas de uma função, http://techdocs.postgresql.org/guides/SetReturningFunctions. 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. Há várias opções de replicação mestre/escravo disponíveis. Isto permite somente que o mestre faça mudanças no banco de dados e o escravo só pode ler o banco de dados. Abaixo em http://gborg.PostgreSQL.org/genpage?replication_research lista-os. Uma solução de replicação de múltiplos mestres está sendo desenvolvida em http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php. O problema pode ser várias coisas. Tente testar sua função em um programa independente. Envie as suas extensões para a lista de discussão pgsql-hackers, e elas eventualmente serão colocadas no subdiretório contrib/. Em versões do PostgreSQL a partir da 7.3, funções que retornam tuplas são suportadas em C, PL/PgSQL e SQL. Veja o Guia do Programador para mais informação. Um exemplo de uma função escrita em C e que retorna tuplas pode ser encontrada em contrib/tablefunc. Os arquivos Makefiles não tem as dependências corretas para incluir arquivos. Você deve executar um make clean e então o make. Se você está utilizando o GCC você pode utilizar a opção --enable-depend do configure para o compilador computar as dependências automaticamente.Perguntas Gerais
Perguntas sobre Clientes
Perguntas Administrativas
Perguntas Operacionais
Extendendo o PostgreSQL
Perguntas Gerais
1.1) O que é PostgreSQL? Como ele é pronunciado?
1.2) Qual é a licença do PostgreSQL?
1.3) Quais plataformas Unix o PostgreSQL pode ser executado?
1.4) Quais portabilidades não-Unix estão disponíveis?
1.5) Onde eu posso conseguir o PostgreSQL?
1.6) Onde eu posso conseguir suporte?
irc -c '#PostgreSQL' "$USER" irc.phoenix.net.
ou irc -c '#PostgreSQL' "$USER" irc.freenode.net.
1.7) Qual é a última versão?
1.8) Que documentação está disponível?
1.9) Como eu posso saber quais são os bugs conhecidos ou características ausentes?
1.10) Como eu posso aprender SQL?
1.11) O PostgreSQL está livre do Bug do Milênio?
1.12) Como posso me juntar a equipe de desenvolvimento?
1.13) Como eu informo a existência de um bug?
1.14) Como é o PostgreSQL comparado a outros SGBDs?
1.15) Como eu posso ajudar financeiramente o projeto PostgreSQL?
Perguntas sobre Clientes
2.1) Há drivers ODBC 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 iteragir com o usuário?
2.4) Quais linguagens estão disponíveis para comunicar-se com PostgreSQL?
Perguntas Administrativas
3.1) Como eu instalo o PostgreSQL em um local diferente de /usr/local/pgsql?
3.2) Quando eu inicio o postmaster, eu recebo a mensagem
3.3) Quando eu tento iniciar o postmaster, eu recebo erros IpcMemoryCreate. Por que?
3.4) Quando eu tento iniciar o postmaster, eu recebo erros IpcSemaphoreCreate. Por que?
3.5) Como eu controlo conexões de outras máquinas?
3.6) Como eu ajusto o servidor de banco de dados para obter uma performance melhor?
3.7) Quais características de depuração estão disponíveis?
3.8) Por que eu recebo "Sorry, too many clients" quando eu tento conectar?
3.9) O que está no diretório pgsql_tmp?
3.10) O que eu preciso fazer para exportar e importar durante a atualização entre versões do PostgreSQL?
Perguntas Operacionais
4.1) Qual é a diferença entre cursores binários e normais?
4.2) Como eu faço um SELECT somente dos primeiros registros de uma consulta? Um registro randômico?
4.3) Como eu obtenho a lista de tabelas ou outras coisas que eu posso ver no psql?
4.4) Como eu removo uma coluna de uma tabela ou mudo o seu tipo de dados?
4.5) Qual é o tamanho máximo de um registro, uma tabela e um banco de dados?
4.6) Quanto espaço em disco é necessário para armazenar dados de um arquivo texto?
4.7) Como eu descrubo quais tabelas, índices, bancos de dados e usuários estão definidos?
4.8) Minhas consultas estão lentas ou não estão utilizando índices. Por que?
SET enable_seqscan TO 'off'
e4.9) Como eu vejo como o otimizador de consulta está avaliando a minha consulta?
4.10) O que é um índice de árvore R?
4.11) O que é um Otimizador Genético de Consultas?
4.12) Como eu faço buscas com expressões regulares
4.13) Em uma consulta, como eu detecto se um campo é NULL?
4.14) Qual é a difenrença entre os vários tipos de dados de caracteres?
4.15.1) Como eu crio um campo serial/auto incremento?
4.15.2) Como eu consigo o valor de um campo
novo_id
para utilizar em outras consultas (i.e., como uma chavepessoa
). Note que o nome da4.15.3) currval() e nextval() não lidam com condição de corrida com outros usuários?
4.15.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.16) O que é um OID? O que é um TID?
4.17) Qual é o significado de alguns termos utilizados no PostgreSQL?
4.18) Por que eu recebo o erro "ERROR: Memory exhausted in AllocSetAlloc()"?
4.19) Como eu informo qual versão do PostgreSQL eu estou utilizando?
SELECT version();
4.20) Por que minhas operações com objetos grandes retorna "invalid large obj descriptor"?
BEGIN WORK
e COMMIT
ao redor de qualquer uso de operações com objetos grandes, isto é, ao redor de lo_open
... lo_close.
4.21) Como eu crio uma coluna que conterá por padrão a hora atual?
CREATE TABLE teste (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
4.22) Por que as minhas subconsultas que utilizam
IN
estão tão lentas?IN
é mais rápido. Para acelerar consultas externas, substitua IN
por EXISTS
: SELECT *
SELECT *
subcol
deve ser uma coluna indexada. IN
utiliza a mesma técnica de agrupamento do que consultas normais, e é recomendado utilizar EXISTS
.4.23) Como eu faço uma junção externa (outer join)?
4.24) Como eu faço consultas utilizando múltiplos bancos de dados?
4.25) Como eu retorno múltiplos registros ou colunas de uma função?
4.26) Por que eu não posso confiar na criação/remoção de tabelas temporárias em funções PL/PgSQL?
4.27) Que opções para replicação estão disponíveis?
4.28) Que opções para encriptação estão disponíveis?
Extendendo o PostgreSQL
5.1) Eu escrevi uma função. Quando eu executo-a no psql, por que ela finaliza o programa com descarga de memória (core dump)?
5.2) Como eu posso contribuir com alguns tipos e funções novas para o PostgreSQL?
5.3) Como eu escrevo uma função em C que retorna uma tupla?
5.4) Eu alterei um arquivo do código-fonte. Por que a recompilação não surtiu efeito?