2009/9/21 MARCIO CASTRO <[email protected]>

> Caro Rafael:
>
>   Obrigado pela resposta.
>
>   A "select fib(35);" retorna 9227465, e select fnc_fibonacci(35) retorna
> 14930352. Não sei qual está certa ou errada.
>
>   Estou utilizando a 8.2.7 por a mesma já estar instalada aquí e no
> cliente. A versão 8.4 tem "WITH RECURSIVE", mas tal não seria compatível com
> o mesmo código escrito no Oracle.
>
>   A minha intenção ao usar o fibonacci foi para mensurar performance. Eu
> não sabia que o Postgres não trata a recursividade corretamente, portanto,
> vou desconsiderá-la.
>   De qualquer forma, também utilizei um outro exemplo com um simples LOOP
> (function1), e a diferença também foi absurda.
>

     Não conheço o Oracle, mas sei que o Portgresql usa parâmetros de
configuração bem modestos e que a versão 8.4 possui inúmeros incrementos de
performance em relação à 8.2.

    Além disso, TODO procedimento PLPGSQL roda com isolamento de transação.
Assim sendo, a resposta do seu procedimento sempre será 0. Para pegar o
instantâneo do tempo dentro da função, use "timeofday()".



>   Baseado nestes, entendí que o PL/pgSQL é muito inferior em termos de
> performance do que o PL/SQL no Oracle.
>

    Na minha opinião, um entendimento precipitado. A alguns anos atrás, na
versão 8.1 do Postgresql, criei procedimentos que trabalhavam na migração de
dados cujo tipo principal das chaves era NUMERIC. Bastou trocar o tipo para
INTEGER e tive ganhos "obcenos" de tempo (6 horas para 6 minutos, + ou - )



> Por favor, me desculpe se escreví alguma bobagem, ou não fui claro o
> suficiente. Ficarei muito agradecido se você ou os demais membros postarem
> mais dicas de performance ou outros exemplos que eu possa utilizar. Entenda
> também que a diferença de performance foi tão grande à ponto de eu
> desconfiar de um problema no servidor Linux.
>
>
> Atenciosamente,
>
> Márcio de Figueiredo Moura e Castro
>

-- 
William Leite Araújo
Mobile Solution Manager       - QualiConsult
Analista de Banco de Dados
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a