Dans MySQL, les requêtes lentes sont des instructions SQL enregistrées dans le journal et exécutées lentement. Elles font référence à l'exécution de requêtes d'instructions SQL qui dépassent le seuil de temps défini par le paramètre "long_query_time". Les requêtes lentes sont enregistrées dans le journal des requêtes lentes. Grâce au journal des requêtes lentes, vous pouvez découvrir quelles instructions de requête ont une faible efficacité d'exécution pour l'optimisation.
L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.
Une requête lente, comme son nom l'indique, enregistre les instructions SQL qui s'exécutent lentement dans le journal. Cela signifie que MySQL enregistre toutes les requêtes d'instructions SQL qui dépassent le seuil de temps défini par le paramètre long_query_time.
Les requêtes lentes sont enregistrées dans le journal des requêtes lentes, vous pouvez découvrir quelles instructions de requête ont une faible efficacité d'exécution pour l'optimisation. Ce journal peut apporter une aide précieuse à l'optimisation des instructions SQL.
Par défaut, le journal des requêtes lentes est désactivé. Pour utiliser la fonction de journal des requêtes lentes, vous devez d'abord activer la fonction de journal des requêtes lentes.
Après avoir configuré une requête lente, il enregistrera du SQL qualifié
y compris :
Affichez via la commande suivante Ensuite, configurez la configuration ci-dessus :
show VARIABLES like '%slow_query_log%' show VARIABLES like '%slow_query_log_file%' show VARIABLES like '%long_query_time%' show VARIABLES like '%log_queries_not_using_indexes%' show VARIABLES like 'log_output'
Définissez les paramètres de requête lente :
set global long_query_time=0; ---默认10秒,这里为了演示方便设置为0 set GLOBAL slow_query_log = 1; --开启慢查询日志 set global log_output='FILE,TABLE' --项目开发中日志只能记录在日志文件中,不能记表中
Une fois les paramètres terminés, interrogez certaines listes et vous constaterez qu'il y a des données dans le fichier journal des requêtes lentes.
Mais sur mon ordinateur, je ne sais pas pourquoi, mais les résultats SQL ne peuvent pas être exécutés normalement pour le moment. Ne peut pas être mis à jour ;
Nous pouvons donc utiliser cette méthode :
Trouvez my.cnf et ajoutez le contenu suivant
# 添加慢查询日志 log_output=file slow_query_log=on slow_query_log_file = /tmp/mysql-slow.log log_queries_not_using_indexes=on long_query_time = 1
Si vous voulez voir quelles instructions de requête ont une faible efficacité d'exécution. , vous pouvez Les informations sont obtenues à partir du journal des requêtes lentes. Comme les journaux d'erreurs et les journaux de requêtes, les journaux de requêtes lentes sont également stockés sous forme de fichiers texte et peuvent être consultés à l'aide d'outils de visualisation de fichiers texte ordinaires.
Exemple 1
Activez la fonction de journal des requêtes lentes MySQL et définissez l'heure. La commande et le processus d'exécution sont les suivants :
mysql> SET GLOBAL slow_query_log=ON; Query OK, 0 rows affected (0.05 sec) mysql> SET GLOBAL long_query_time=0.001; Query OK, 0 rows affected (0.00 sec)
En raison de la nécessité d'une démonstration, nous définissons l'heure sur 0,001 seconde pour les instructions SQL qui prennent plus. plus de 0,001 seconde d’exécution sera enregistrée dans le journal.
Pour interroger les données de la table tb_student, l'instruction SQL et le processus d'exécution sont les suivants :
mysql> USE test; Database changed mysql> SELECT * FROM tb_student; +----+--------+ | id | name | +----+--------+ | 1 | Java | | 2 | MySQL | | 3 | Python | +----+--------+ 3 rows in set (0.08 sec)
En conséquence, une partie du contenu du journal des requêtes lentes est la suivante :
# Time: 2020-06-01T01:59:18.368780Z # User@Host: root[root] @ localhost [::1] Id: 3 # Query_time: 0.006281 Lock_time: 0.000755 Rows_sent: 2 Rows_examined: 1034 use test; SET timestamp=1590976758; SHOW VARIABLES LIKE 'slow_query%';
mysqladmin -uroot -p flush-logs
Remarque : le journal des requêtes générales et le journal des requêtes lentes utilisent cette commande. Lorsque vous l'utilisez, assurez-vous de noter qu'une fois cette commande exécutée, le journal des requêtes générales et le journal des requêtes lentes n'existeront que dans les nouveaux fichiers journaux. . Si vous devez sauvegarder d'anciens fichiers journaux de requêtes lentes, vous devez d'abord renommer les anciens journaux, puis redémarrer le service MySQL ou exécuter la commande mysqladmin.【Recommandations associées :
tutoriel vidéo mysql】
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!