Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Q] DBI: Mesure du temps d'une requete sql

4 réponses
Avatar
Christophe CLEMENT
Bonjour,

Le temps qu'a mis la dernière requète sql à s'exécuter via DBI peut-il être
récupéré ??
Si oui, comment ?

--
Christophe CLEMENT
http://www.75018.org

4 réponses

Avatar
Emmanuel Florac
Dans article <bjevag$apv$,
disait...

Le temps qu'a mis la dernière requète sql à s'exécuter via DBI peut-il être
récupéré ??
Si oui, comment ?



En enregistrant l'heure avant et après la requête, et en faisant la
différence? Genre

$currenttime=time();
# là tu fais ta requête
my $sth=$dbh->do("SELECT * FROM toto WHERE tata=1");
#là tu prends l'heure en cours et tu retranches la dernière valeur
$reqtime=time()-$currenttime;

--
Quis, quid, ubi, quibus auxiliis, cur, quomodo, quando?

Avatar
Christophe CLEMENT
Bonjour Emmanuel Florac,

Dans article <bjevag$apv$,
disait...

Le temps qu'a mis la dernière requète sql à s'exécuter via DBI peut-il être
récupéré ??
Si oui, comment ?



En enregistrant l'heure avant et après la requête, et en faisant la
différence? Genre

$currenttime=time();
# là tu fais ta requête
my $sth=$dbh->do("SELECT * FROM toto WHERE tata=1");
#là tu prends l'heure en cours et tu retranches la dernière valeur
$reqtime=time()-$currenttime;


Bien sûr, mais je voulais avoir la mesure précise, au centième de seconde
près... mysql le fait automatiquement dans le terminal, mais je voulais savoir
comment récupérer la valeur _avec dbi_ .

--
Christophe CLEMENT
http://www.75018.org


Avatar
Jedaï
Christophe CLEMENT wrote:
Bonjour Emmanuel Florac,


Dans article <bjevag$apv$,
disait...

Le temps qu'a mis la dernière requète sql à s'exécuter via DBI peut-il être
récupéré ??
Si oui, comment ?





En enregistrant l'heure avant et après la requête, et en faisant la
différence? Genre



$currenttime=time();
# là tu fais ta requête
my $sth=$dbh->do("SELECT * FROM toto WHERE tata=1");
#là tu prends l'heure en cours et tu retranches la dernière valeur
$reqtime=time()-$currenttime;



Bien sûr, mais je voulais avoir la mesure précise, au centième de seconde
près... mysql le fait automatiquement dans le terminal, mais je voulais savoir
comment récupérer la valeur _avec dbi_ .



Je ne sais pas si on peut avec DBI, mais comme solution de fortune, il
existe un module dans la distribution standard qui offre une bien
meilleure précision pour la mesure du temps : Time::HiRes permet d'être
précis jusqu'à la microseconde :)

--
Jedaï



Avatar
Jérémy JUST
On 7 Sep 2003 13:08:53 GMT
"Christophe CLEMENT" wrote:

En enregistrant l'heure avant et après la requête, et en faisant la
différence?


Bien sûr, mais je voulais avoir la mesure précise, au centième de
seconde près...


Le module Benchmark permet de mesurer le temps d'exécution de
n'importe quel code Perl de façon très pratique.

Ce n'est pas la durée d'exécution de la requête au sens strict (il y a
le temps d'exécution du code Perl autour, et le temps de compilation de
la requête par le moteur SQL), mais c'est une bonne approximation.
Tu as intérêt à faire quelques dizaines de milliers de requêtes dans
une boucle pour plus de précision (sauf requête compliquée!).


mysql le fait automatiquement dans le terminal, mais je voulais savoir
comment récupérer la valeur _avec dbi_ .


Je ne sais pas si c'est possible de récupérer cette valeur.
J'ai toujours fait avec Benchmark, et j'en suis assez content (en
plus, ça permet de comparer à d'autres méthodes d'accès aux données, de
comparer à d'autres portions du programme...)

--
Jérémy JUST