Maison > Article > base de données > Que dois-je faire si la procédure stockée MySQL est trop lente ?
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.
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 phpCe 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!