8
votes

Comment puis-je montrer le temps de requête à Perl, DBI?

J'utilise Perl et DBI pour gérer mes tables MySQL, mes requêtes, etc. Comment puis-je montrer l'heure d'exécution d'une requête?

Si je sélectionne dans la console, le résultat sera comme ceci: xxx

J'ai besoin d'afficher 0,17 sec . Il y a quelque chose dans DBI pour montrer l'heure de fonctionnement à Perl, quelque chose comme ça? xxx


0 commentaires

5 Réponses :


6
votes

Vous prenez un horodatage avant de lancer la requête et un horodatage après. La différence est votre heure d'exécution de la requête. Pour obtenir des horodatages à haute résolution, voir TIME :: Embauche


2 commentaires

N'y a-t-il pas de moyen sous DBI?


J'ai été vérifié avant de poser la question.



3
votes

Je ne trouve rien dans DBI. Je pense qu'il n'y a rien de déjà implémenté de la boîte, bien que cela puisse être des informations intéressantes.

L'autre moyen de le faire serait d'obtenir le temps avant et après l'exécution, puis de faire une différence simple. Vous pouvez le faire à partir de votre script Perl, simplement obtenir l'horodatage avant l'exécution de la requête et, après, puis soustrayez les deux pour trouver l'heure d'exécution. P>

my $start = DateTime->now;
my $dbh = $db->prepare("SELECT id, name FROM names ORDER BY id;");
$dbh->execute;
my $end = DateTime->now;


my $elapsedtime = ($end->subtract_datetime($start))->seconds;
print "Execution time(seconds) : $elapsedtime \n";


2 commentaires

Utilisation de Benchmark avec : Hireswallclock au lieu de DateTime fonctionnerait également bien.


Cela ne sera pas très utile pour les temps de requête sous-seconde qui sont assez communs



6
votes

1 commentaires

Plutôt que de fournir une série de liens, veuillez fournir des extraits montrant pourquoi ceux-ci sont utiles. Cela aide à résumer le contenu, plus fournit des informations utiles au cas où les liens pourrissent et rompent.



1
votes

LIALE sur les liens de Daxim vers la documentation, il existe un moyen simple d'y parvenir en exécutant votre script avec dbi_profile = 2 code> qui provient de DBI :: profil

Exemple Sortie: P>

DBI::Profile: 53.203692s 50.67% (6725 calls) script.pl @ 2016-01-21 11:51:49
'INSERT INTO FOO ("BAR") VALUES (?)' =>
    0.057596s / 2 = 0.028798s avg (first 0.051621s, min 0.005975s, max 0.051621s)
'INSERT INTO BAZ ("QUX") VALUES (?)' =>
    0.367184s / 44 = 0.008345s avg (first 0.039410s, min 0.002445s, max 0.039410s)


0 commentaires

1
votes

Utiliser le temps :: Les employés pourraient également être un moyen facile de trouver la durée de la requête. Voici un exemple qui utilise le temps :: Embauche:

use Time::HiRes;

$start_time = Time::HiRes::gettimeofday();

my $dbh = $db->prepare("SELECT id, name FROM names ORDER BY id;");
$dbh->execute;

$end_time = Time::HiRes::gettimeofday();

my $elapsedtime = sprintf("%.6f", $end_time - $start_time);
print "Execution time(seconds) : $elapsedtime \n";


0 commentaires