Boa tarde companheiro.... 2010/1/22 MARCIO CASTRO <marciomouracas...@yahoo.com.br>
> 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 <eu...@timbira.com> > *Para:* Comunidade PostgreSQL Brasileira < > pgbr-geral@listas.postgresql.org.br> > *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 > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > ------------------------------ > Veja quais são os assuntos do momento no Yahoo! + Buscados: Top > 10<http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/>- > Celebridades<http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/celebridades/>- > Música<http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/m%C3%BAsica/>- > Esportes<http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/esportes/> > > _______________________________________________ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > Eu juro que queria entender: O QUE ESSE FAZ AQUI ? #SET MODE DESABAFO ON Euler não perde teu tempo. #SET MODE DESABAFO OFF -- Marcelo Costa
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral