[Cascavel-pm] Sugestao - PERL

Solli Honorio shonorio em gmail.com
Terça Outubro 2 05:11:00 PDT 2007


Patty,

você já utilizou alguma ferramenta de 'trace analyser' do seu banco de dados
para saber qual o comportamento destes selects ? Será que a pesquisa não
está fazendo um 'table scan' por algum problema de índice.

Como sou péssimo em algorítimos, conheço alguns malucos que só de ver o
código já sabe o comportamento dele no compilado, utilizo duas abortagem na
codificação. Primeiro atingir o objetivo de resultado (e parece que você já
conseguiu com estas queries), e depois (se o desempenho não for
satisfatório) utilizo as ferramentas que analisam o comportamento daquela
rotina para saber onde está o gargalo.

Para mim é difícil falar no quê melhorar com foco em desempenho sem saber
outras informações, se o teu banco for muito grande isto pode ter
comportamentos diferentes de um banco menor e manutenção de índices são
alguns exemplos que influenciam o desempenho. De qualquer forma eu talvez
faria a pesquisa de modo diferente, primeiro separo o que rolou nas últimas
x horas e depois faria a pesquisa dentro deste universo já com todos o ID's.
Pois assim eu acho que você  diminui  os  universos de pesquisa e o consumo
de I/O. Mas tente utilizar e compreender as ferramentas de 'performance
analyser' do seu banco de dados, você vai ficar surpresa como estas
ferramentas pode te ajudar.

Solli M. Honório


On 10/1/07, Patty Silva <ptfzs em yahoo.com.br> wrote:
>
> Pessoal.. uma sugestao de vcs..
> estou fazendo um programa que recupera o ID e ultima datahora que foi
> inserido no banco..e busco as ultimas 48 horas para aquela ID...
> Estou fazendo:
>
>
> .
> .
> .
>
> my $sql=qq{SELECT id,MAX(datahora) from table1 where datainc>=
> timestamp '$aaaammdd $hour:00:00' - interval '3 hour' GROUP BY id ORDER BY
> id};
>
> $sth = $dbh->prepare($sql) || die $DBI::errstr;
> $sth->execute || die $DBI::errstr;
>
>
> while ( my @row = $sth->fetchrow_array( ) )
> {
>
>
>
> my $sql2=qq{SELECT * from table1 where id='$row[0]' and
> datahora>=timestamp '$row[1]' - interval '48 hour' order by datahora};
>
>                             $sth2 = $dbh->prepare($sql2) || die
> $DBI::errstr;
>                             $sth2->execute || die $DBI::errstr;
>
>                             while ( my @row2 = $sth2->fetchrow_array( ) )
>                            {
>                                .. . ................
>                            }
>                         }
>
>                         warn "Problema ao processar os resultados",
> $sth->errstr( ), "\n" if $sth->err( );
>                         $sth->finish();
>                         $sth2->finish();
>
>
>
> Alguma sugestao:??? um problema eh que a 1 consulta demora d+.. :D
>
> Obrigada
>
> Abra sua conta no Yahoo! Mail<http://br.rd.yahoo.com/mail/taglines/mail/*http://br.mail.yahoo.com/>,
> o único sem limite de espaço para armazenamento!
>
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>



-- 
"o animal satisfeito dorme". - Guimarães Rosa
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/cascavel-pm/attachments/20071002/acfb7b98/attachment.html 


Mais detalhes sobre a lista de discussão Cascavel-pm