Olá 2009/9/18 MARCIO CASTRO <[email protected]>
> Caros colegas: > > Estou portando uma aplicação do Oracle 10g para o PostgreSQL 8.2.7, mas > estou encontrando alguns problemas relacionados à performance. Para > exemplificar, criei o seguinte: > > > PLPGSQL: > -------------------------------------- > CREATE OR REPLACE FUNCTION function1() > RETURNS numeric AS > $BODY$ > DECLARE > i INTEGER; > s integer; > v_tempo numeric; > BEGIN > SELECT (EXTRACT(minute FROM current_timestamp) * 60) + EXTRACT(second > FROM current_timestamp) into v_tempo; > 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; > RETURN v_tempo; > END; > $BODY$ > LANGUAGE 'plpgsql' VOLATILE; > > > PLPGSQL: > -------------------------------------- > 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; > > > No Oracle, a mesma leva 3.5 s, e no Post, mais de 60s! > O que é que eu estou fazendo de errado? O PostgreSQL/PLPGSQL é realmente > mais lento do que o PL/SQL do Oracle? > > Para te ajudarmos você precisa descrever algumas coisas. 1. Qual teu cenário para cada produto ? são idênticos (memoria, arranjo dos discos, processador, etc...) ? Eu migrei um oracle 10g com tabelas monstruosas (mais de 130 milhões de registros) para PostgreSQL e atualmente uso a versão 8.3.8 (migrei ontem para essa versão pois antes usava a 8.3.7). Uma boa remodelagem das tabelas, técnicas de particionamento de tabelas, índices criados de forma correta implicam muito no tempo de resposta. Meu banco funciona que é um avião e o hardware do Oracle e do PostgreSQL são idênticos. Particularmente os desenvolvedores consideram que os tempos de resposta do banco PostgreSQL ficaram superiores apesar da remodelagem que foi realizada. Isso não é um comparativo apenas estou frisando que a performance não caiu. Pode e deve ser pelo motivo de o banco Oracle precisar de uns tapas(diga-se refatorada) para ficar bom também. -- Marcelo Costa www.marcelocosta.net ------------------------------------------------- “You can't always get what want”, Doctor House in apology to Mike Jagger
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
