[SP-pm] DBI - Tempo de execução de uma query

Rudolfo Rosa rudolforosa em gmail.com
Quarta Março 5 14:09:07 PST 2008


2008/3/5 Luis Motta Campos <luismottacampos em yahoo.co.uk>:
> Rudolfo Rosa wrote:
> > Caros, quando executo uma query no mysql ele retorna o valor do tempo
> > de execução. Como eu faço pra obter este valor ??
>
> Posso antes perguntar o que você está pensando em fazer com essa informação?
Um check para o Nagios.

>
> Se você quer saber quanto tempo você gastou para fazer um acesso à base
> de dados, para contar para o usuário, pode muito bem usar o Time::HiRes:
Eu olhei o código do módulo que o Brenno passou e ele também utiliza o
Time::HiRes.

>
> #!perl
> use strict;
> use warnings;
>
> die q{ EU NÃO TESTEI ESTA BOMBA! };
>
> use Time::HiRes qw( gettimeofday tv_interval );
>
> # Uma sub que aceita uma sub, roda o
> # código e retorna o tempo de execução
> sub cronometer {
>   my ( $code ) = shift;
>   my $start = [ gettimeofday ];
>   $code->();
>   my $end = [ gettimeofday ];
>   return tv_interval( $start, $end );
> }
>
> # Isto é basicamente o teu código, Rudolfo
> sub database_access{
>   my $dbh = DBI
>     ->connect( $dsn, $user, $pass,
>                { AutoCommit => 1,
>                  RaiseError => 0,
>                  PrintError => 0 }
>   ) or &error($DBI::errstr);
>
>   my $query = "select count(*) from Table;
>
>   my $sth = $dbh->prepare( "$query" ) or &error($dbh->errstr);
>
>   $sth->execute or &error($dbh->errstr);
>
>   my $result = "0";
>   while ( my $row = $sth->fetchrow_array( ) ) {
>       $result = $row;
>   }
>
>   $dbh->disconnect or &error($DBI::errstr);
>   return $result;
> }
>
> my $interval = cronometer( \&database_access );
>
> Espero que isso te dê idéias.

Deu sim, está funcionando =).
Obrigado.

> Putamplexos!
> --
> Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
> Perl fanatic evangelist, and amateur {cook, photographer}
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>


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