Caro Euler:

a - 
"Discordo. Não *generalize* as coisas; já vi várias instalações PostgreSQL com
performance superior a anterior (aka Or*cle)."

  Não estou generalizando; é verdade mesmo. Por favor; não vamos começar uma 
discussão infundada, que de nada acrescentará à lista. Mas você pode nos enviar 
a estrutura deste "eu já ví", e então poderemos repetir os mesmos testes, ok?


b - 
"Você _não_ mostrou a função em PL/SQL e nem a equivalente em PL/pgSQL."

  Se você procurar o histórico da lista, verificará as duas funções utilizadas 
como exemplo, que são muito simples. E irá verificar também que um outro membro 
desta compilou e rodou a rotina do Post em seu próprio servidor. Mas se estas 
não se adequam, por favor, envie suas próprias funções, tabelas ou demais 
objetos; acaso cometido algum erro, pedirei desculpas a todos.


c - 
"Oracle mais rápido? Eu *não* vi esses resultados em [1][2]. Você só mostrou os
resultados do Oracle e _não_ do PostgreSQL com a função em C"

  Como explicado, tentamos migrar uma aplicação com milhares de linhas de 
código em PL/SQL (Oracle) para o Postgres (PG/plSQL). Quem efetuou este pedido 
foi O PRÓPRIO CLIENTE, que, com certeza, estava querendo diminuir os custos 
portando a sua aplicação para o PostgreSQL. O cliente NÃO QUERIA REESCREVER 
TUDO EM C ou em qualquer outra linguagem, mas aproveitar ao máximo o código 
existente!


d - 
"A conclusão daquela discussão foi que você estava "batendo em espantalho"; use
os métodos adequados para obter melhor desempenho."

  Continuo sem saber o que significa "batendo em espantalho" (nem me interessa 
saber), e se você não for capaz de dar maiores explicações sobre o que você 
chama de "métodos adequados", ninguém irá entender.


e - 
"Para isso precisamos pagar um bom $$$ para associarmos e termos direito de
fazer tais testes. E, é claro, termos hardwares disponíveis para realizar os
testes. (Sem uma grande empresa com acesso aos vendedores de hardware, fica
difícil realizarmos tal tarefa)."

  Sim, é verdade. Mas que empresa de hardware irá recomendar um produto sem 
ganhar nada em cima? A mesma pode até "vender o peixe" com o Postgres, mas será 
que a mesma declararia que tal produto é mais rápido do que o banco A ou B, sem 
possuir nenhuma comprovação de tal fato?
  Mas se você GARANTE, ótimo, é só comprovar, ok? Aliás, na semana passada eu 
conhecí um cara que GARANTE que "o Caché é o banco mais rápido do mundo". 
Perguntado sobre como comprovar esta declaração, este respondeu que a mesma "é 
baseada em vivência e experiância profissional". Perguntado se o mesmo já havia 
trabalhado com outros bancos, o mesmo respondeu "nenhum"...

  Termino esta repetindo que você, ou qualquer outro membro da lista, pode 
escrever as rotinas que julgar mais adequadas ("métodos adequados", tabelas, ou 
seja o que for), que irei testá-las com o maior prazer. Aliás, se mais alguém 
quiser acompanhar estes testes in loco, é só chegar aquí na empresa - estou em 
BH, na Floresta. Os servidores serão os mesmos dos testes anteriores, e a única 
exigência é que tudo possa rodar com um mínimo de alterações.
  E se alguém quiser verificar por sí só no Oracle, é só baixar gratuitamente o 
software no site da mesma - não são necessárias licenças para estudar, efetuar 
testes ou criação de protótipo.
  Abaixo as rotinas utilizadas, no Postgres e no Oracle.


Atenciosamente,

Márcio de Figueiredo Moura e Castro


--------------------------------------------------
-- FIB
--------------------------------------------------

-- FIB NO ORACLE
create or replace
FUNCTION fib(fib_for integer)
  RETURN integer AS
BEGIN
  IF fib_for < 2 THEN
      RETURN fib_for;
  END IF;
  RETURN fib(fib_for - 2) + fib(fib_for - 1);
END;


-- FIB NO POSGRES
CREATE OR REPLACE FUNCTION fib(fib_for integer)
  RETURNS integer AS
$BODY$
    BEGIN
        IF fib_for < 2 THEN
            RETURN fib_for;
        END IF;
        RETURN fib(fib_for - 2) + fib(fib_for - 1);
    END;
$BODY$
  LANGUAGE 'plpgsql' IMMUTABLE;
ALTER FUNCTION fib(integer) OWNER TO postgres;


--------------------------------------------------
-- FUNCTION1
--------------------------------------------------


-- FUNCTION1 NO ORACLE
create or replace
FUNCTION FUNCTION1 return number AS
  i INTEGER;
  s integer;
  v_tempo number;
BEGIN
  SELECT (EXTRACT(minute FROM current_timestamp) * 60) + EXTRACT(second FROM 
current_timestamp) into v_tempo FROM dual;
  FOR i IN 1 .. power(10,8) LOOP
     s := s + 1;
  END LOOP;
  SELECT ((EXTRACT(minute FROM current_timestamp) * 60) + EXTRACT(second FROM 
current_timestamp)) - v_tempo into v_tempo FROM dual;
  RETURN v_tempo;
END FUNCTION1;


-- FUNCTION1 NO POSTGRES
CREATE OR REPLACE FUNCTION function1()
  RETURNS integer AS
$BODY$
DECLARE
  i INTEGER;
  s integer;
BEGIN
  FOR i IN 1 .. power(10, 8) LOOP
     s := s + 1;
  END LOOP;
RETURN 0;
END;
$BODY$
  LANGUAGE 'plpgsql' IMMUTABLE;
ALTER FUNCTION function1() OWNER TO postgres;






________________________________
De: Euler Taveira de Oliveira <[email protected]>
Para: Comunidade PostgreSQL Brasileira <[email protected]>
Enviadas: Sexta-feira, 22 de Janeiro de 2010 13:07:27
Assunto: Re: [pgbr-geral] Res:  Digest pgbr-geral, volume 35, assunto 94

MARCIO CASTRO escreveu:
>   Trabalho com o Postgres e com o Oracle, e relato que a diferença entre
> os mesmos é abismal.
Discordo. Não *generalize* as coisas; já vi várias instalações PostgreSQL com
performance superior a anterior (aka Or*cle).

>   Tentamos inclusive importar um sistema com milhares de funções e
> procedimentos em PL/SQL (Oracle 10g) para o PL/pgSQL, mas os primeiros
> testes nos revelaram que a performance cairia demais, tornando o projeto
> inviável.
Você _não_ mostrou a função em PL/SQL e nem a equivalente em PL/pgSQL.

>   Na época, cheguei até a buscar auxílio na lista, escrevendo dois
> pequenos exemplos para isto. Alguns até me auxiliaram, propondo que as
> rotinas fossem reescritas em C, mas mesmo assim o Oracle foi mais rápido.
Oracle mais rápido? Eu *não* vi esses resultados em [1][2]. Você só mostrou os
resultados do Oracle e _não_ do PostgreSQL com a função em C.

A conclusão daquela discussão foi que você estava "batendo em espantalho"; use
os métodos adequados para obter melhor desempenho.

> PS: http://www.tpc.org/tpcc/results/tpcc_perf_results.asp
> Continuo torcendo para que um dia vejamos o Post nesta lista!
> 
Para isso precisamos pagar um bom $$$ para associarmos e termos direito de
fazer tais testes. E, é claro, termos hardwares disponíveis para realizar os
testes. (Sem uma grande empresa com acesso aos vendedores de hardware, fica
difícil realizarmos tal tarefa).


[1]
http://listas.postgresql.org.br/pipermail/pgbr-geral/2009-September/017497.html
[2]
http://listas.postgresql.org.br/pipermail/pgbr-geral/2009-September/017498.html


-- 
  Euler Taveira de Oliveira
  http://www.timbira.com/
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



      
____________________________________________________________________________________
Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a