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

Luis Motta Campos luismottacampos em yahoo.co.uk
Quarta Março 5 13:51:32 PST 2008


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?

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:

#!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.
Putamplexos!
-- 
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}


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