Fabricio Veiga wrote:
> Boa tarde senhores!
>
> Tenho um servidor Linux, mas precisamente um Suse, com versão do
> PostgreSQL 8.3.1. <http://8.3.1.>
> Eu tenho na base de dados, uma tabela com + / - 420 mil registros. Ao
> executar a consulta (select * from tabela),
> o tempo de execução é em torno de 7 segundos. O servidor é um Celeron
> 2.66 com 1 Gbytes de RAM.
> Estou ciente das configurações do servidor, porém as fazer o mesmo teste
> em um banco de dados Interbase 6.5,
> em outra máquina com as mesmas configurações, o tempo da consulta foi em
> torno de 211 milisegundos.
> Realizei a instalação padrao do PostgreSQL, sem mudanças no arquivo de
> configurações.
> Que parametros seriam necessário modificar para obter um desempenho
> melhor nessa consulta ?
>
Acredito que você não vai obter desempenho melhor. O que acontece é que
alguns SGDB's, e neste caso particular o Firebird, já começam a retornar
os registros para a aplicação cliente 'a medida que são encontrados. O
PostGreSql trabalha de forma diferente, os dados são retornados apenas
após a consulta ser totalmente realizada. Ou seja, primeiro o PostGreSql
encontra os 420 mil registros para depois retorná-los de uma vez,
enquanto o Firebird vai enviando de partes em partes os registros
encontrados. Salvo engano, o Sql Server permite configurar isto também,
podendo trabalhar de uma forma ou de outra, mas desconheço forma de
fazer o PostGreSql operar assim, talvez algum colega da lista já o saiba
que queira compartilhar, alguém??
Ou seja, o PostGreSql não está preparado para usuários que não sabem o
que querem e enviam consultas do tipo "select * from tabela" com
relações deste tamanho.
É claro que existe o lado negro das história. Em especial full text
search em tabelas muito grandes. Se eu fizer um limit 10 por exemplo
para pegar os primeiros 10 registros de uma seleção, ele vai primeiro,
selecionar todos os registros que satisfaçam à minha instrução SQL para
somente depois limitar os 10 registros pedidos, enquanto o esperado
seria que, assim que ele encontrasse o décimo registro ele já me
retornar o resultado, por isso é importante sempre registringir o máximo
os registros que quer buscar em sua SQL.
É uma limitação do PostGreSql (dentro dos meus conhecimentos),
facilmente compensada com suas inúmeras outras facilidades.
--
Shander Lyrio
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral