web-dev-qa-db-fra.com

temps d'exécution des requêtes dans mysql

J'ai exécuté la requête dans mysql qui se compose d'environ 33 millions d'enregistrements lorsque j'ai exécuté la requête

  • sélectionner la population1 <200 000 de la ville; il montre comme ça après l'exécution

34459393 lignes dans l'ensemble (16,04 s)

Ma question est de savoir ce qui est de 16,04 secondes, car en temps normal, cela a pris plus de 30 minutes, mais cela indique 16,04 secondes. Comment puis-je calculer l'heure réelle.

5
user41498

Les 16.04 secondes sont un minuteur sur le client qui mesure le temps qui s'est écoulé entre l'appel et l'exécution de la requête (si vous voulez être plus précis que cela, le temps de l'horloge murale entre l'appel start_timer () et mysql_end_timer () , quelque chose qui peut conduire à des résultats hilarants comme celui-ci que j'ai obten ).

La raison pour laquelle vous pensez que cela vous a pris plus de 30 minutes à exécuter est probablement parce qu'elle n'a pas pris en compte la sortie vers la sortie standard. Vous pouvez vérifier que cela prend vraiment 16 secondes en faisant:

mysql> pager cat > /dev/null 
mysql> <your query here>
mysql> nopager

Si vous souhaitez mesurer le temps nécessaire pour écrire sur la sortie standard, vous pouvez faire:

$ time mysql -u <your user> -p<your password> <your database> \
  -e "select population1 < 200000 from city"

Remarque : Êtes-vous sûr de vouloir imprimer un 0 ou un 1 pour [~ # ~] tous [~ # ~] lignes de cette table? Peut-être que l'option --safe-updates et/ou l'utilisation d'une interface graphique peut vous aider un peu avec vos requêtes?

4
jynus

Lorsque vous exécutez une requête dans MySQL Workbench, vous obtenez en réalité 2 fois dans la fenêtre de sortie d'action. La rubrique montre également à quoi ils servent:

enter image description here

Il y a le temps d'exécution sur le serveur (qui est probablement votre ~ 16s) et le temps de récupération, généralement beaucoup plus long, pour transporter les données du serveur vers le client. Avec des millions d'enregistrements qui peuvent facilement prendre des minutes ou plus.

0
Mike Lischke