[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