Em Ter 03 Out 2006 02:20, você escreveu:
> marlon david de souza escreveu:
> >   Temos um cliente que no servidor atual utiliza nosso sistema rodando
> > sob Firebird. São mais de 150 conexões simultâneas. Visto que o servidor
> > estava ficando sobrecarregado, ele adquiriu um novo servidor e pretendia
> > colocar neste o PostgreSQL. No entanto depois de convertida a base de
> > Firebird para PostgreSQL, ele relatou que a performance geral do sistema
> > rodando em Post é muito inferior a do Firebird. Já ajustei o
> > postgresql.conf ao hardware que ele tem, rodei vacuum analyze, analisei
> > as queryes, no entanto a performance não melhora. O post está, dependendo
> > o processo, de 2 até 7 vezes mais lento que o Firebird.
>
> Vamos tentar analisar algumas coisas...
>
> >   Observações:
> >
> >   - O Post foi compilado no proprio servidor.
> >   - O sistema de arquivos utilizado é o RaiserFS.
> >   - É utilizado Raid 10 de um total de 6 discos (3+3).
> >   - É usado a técnologia SAS de acesso a disco (similar a SCSI).
> >   - O Post está configurado para utilizar 4Gb de shared-memory.
> >   - Grande parte de nosso sistema reside no próprio banco na forma de
> > funções em pg_sql.
> >   - Em nenhum processo está sendo criado o diretório "pgsql_tmp".
>
> A compilação atualmente otimiza pouca coisa dependendo de como foi
> gerado o binário. 
Foi feita a compilação padrão no próprio servidor.

> No sistema de arquivos, sugiro que utilize o ext3 ou 
> xfs (este último tem provado maior eficiência); o reiserfs não tem uma
> performance muito boa com arquivos grandes.
Que tamanho seria esse?

> O RAID 10 é uma boa escolha 
> (ele tem um performance muito boa). A máquina tem 4GB de RAM é isso?
Possui 8Gb, sendo configurado para usar 4Gb de shared-memory.

>
> Em que tipos de comandos o PostgreSQL é mais lento do que o Firebird?
> Pode citar exemplos?
Segue o código de uma função que em Post demora 97s e em Firebird demora 59s:

create type RET_TESTE as (
  Pro numeric(9,0), Cci numeric(18,4)
);
create or replace function PCD_TESTE(
  Prm_Emp varchar(500), Prm_Cdi numeric(9,0), Prm_Cdf numeric(9,0)
) returns setof RET_TESTE as $$
declare
  Dcl_dData date;
  result RET_TESTE;
  MyCur1 refcursor;
begin
  Dcl_dData := 'today';
  open MyCur1 for select COD from GCEPRO02 where COD between Prm_Cdi and 
Prm_Cdf;
  loop
    fetch MyCur1 into result.Pro;
    exit when (not found);
    select sum(CCI) from GCEITM01 where (MOD = 'E') and (PRO = result.Pro) and 
(DTR <= Dcl_dData) into result.Cci;
    if (result.Cci is null) then result.Cci := 0; end if;
    return next result;
  end loop;
  close MyCur1;
  return;
end;
$$ language 'plpgsql';

dados=# explain analyze select sum(cci) from pcd_teste(',1,',5000,5200);
                                                         QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------
 Aggregate  (cost=15.00..15.01 rows=1 width=17) (actual 
time=97612.109..97612.112 rows=1 loops=1)
   ->  Function Scan on pcd_teste  (cost=0.00..12.50 rows=1000 width=17) 
(actual time=97611.252..97611.623 rows=119 loops=1)
 Total runtime: 97618.430 ms
(3 rows)

Observações:
- O servidor foi resetado antes de realizar o teste.
- A tabela GCEITM01 possui o seguinte índice: MOD, PRO, DTR.
- Uma analise das consultas que são feitas pela função mostrou que está sendo 
usado os índices corretos.
- Os dados e o códigio da função em Firebird são idênticos ao do Post.

>
> Sugiro que leia o artigo do Josh Berkus (é meio antigo mais ainda é
> válido) [1]. Quando finalizar minha palestra para III FGSL sobre
> otimização do PostgreSQL, prometo que publico o endereço aqui. :-)
>
> [1] http://www.powerpostgresql.com/PerfList
Eu já tinha usado essas informações para configurar o Post.
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/

Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios

Responder a