Maison  >  Article  >  base de données  >  Que dois-je faire si la procédure stockée MySQL est trop lente ?

Que dois-je faire si la procédure stockée MySQL est trop lente ?

王林
王林original
2020-09-27 14:48:323441parcourir

Solution au problème selon lequel la procédure stockée mysql est trop lente : ouvrez d'abord le fichier de configuration my.cnf ; puis ajoutez la configuration [long_query_time=1] puis surveillez SQL via le [tail -f /tmp/logs" /mysqld.log] commande ; Enfin, une optimisation ciblée peut être effectuée.

Que dois-je faire si la procédure stockée MySQL est trop lente ?

Solution :

(Tutoriel recommandé : Tutoriel vidéo mysql)

Étape 1 : Modifier le fichier /etc/my.cnf, recherchez [mysqld] et ajoutez-y

#执行的sql
log=/tmp/logs/mysqld.log 
#记录sql执行超过下面设置时间的sql
log-slow-queries = /tmp/mysqlslowquery.log
#执行时间大于等于1秒
long_query_time = 1

Ensuite, vous pouvez tail -f /tmp/logs/mysqld.log pour surveiller tous les SQL exécutés. mysqlslowquery.log est une instruction SQL dont le temps d'exécution dépasse long_query_time = 1 (seconde)

Par exemple, lors de la première étape, nous avons constaté qu'une certaine fonction personnalisée MySQL s'exécutait lentement func_getDevice(); je ne connaissais pas cette méthode. Quelle instruction SQL affecte les performances ? Ensuite, il y a la deuxième étape.

Étape 2 : Entrez la ligne de commande mysql et entrez

mysql> set profiling=1;
mysql> select func_getDevice(1);
mysql> show profiles;
+----------+------------+-----------------------+
| Query_ID | Duration   | Query                 |
+----------+------------+-----------------------+
|        1 | 0.00250400 | select * from TDevice |
+----------+------------+-----------------------+
1 row in set (0.00 sec)

À ce moment, vous verrez une liste détaillée d'exécution SQL, mais seuls 15 enregistrements SQL sont enregistrés par défaut si le SQL est dans le fichier. méthode Plus, vous pouvez définir

mysql> set profiling_history_size=20;
mysql> show variables like 'profiling%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| profiling              | ON    |
| profiling_history_size | 15    |
+------------------------+-------+
2 rows in set (0.00 sec)
mysql> select func_getDevice(1);
mysql> show profiles;

À ce stade, vous pouvez voir avec précision quelle instruction SQL affecte les performances. Par exemple, Query_ID=1 select * from TDevice affecte les performances ; >Vérifiez si les index du tableau sont raisonnables et améliorez l'efficacité grâce à une optimisation ciblée.

Recommandations associées :

formation php

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn