Maison  >  Article  >  base de données  >  qu'est-ce que la requête lente de MySQL

qu'est-ce que la requête lente de MySQL

青灯夜游
青灯夜游original
2022-02-17 16:37:107216parcourir

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.

qu'est-ce que la requête lente de MySQL

L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.

Qu'est-ce qu'une requête lente ?

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.

Configuration du journal des requêtes lentes

1. Configuration de base des requêtes lentes

  • slow_query_log Démarrer et arrêter la technologie du journal des requêtes lentes
  • slow_query_log_file Spécifiez le chemin de stockage et le fichier du journal des requêtes lentes (la valeur par défaut est associée au fichier de données )
  • long_query_time Spécifiez Enregistrer le score de temps d'exécution SQL du journal des requêtes lentes (unité : secondes, 10 secondes par défaut)
  • log_queries_not_using_indexes S'il faut enregistrer du SQL qui n'utilise pas d'index
  • log_output Où le journal est stocké [TABLE] [FILE] [ FILE, TABLE]

Après avoir configuré une requête lente, il enregistrera du SQL qualifié

y compris :

  • instruction de requête
  • instruction de modification de données
  • SQL qui a été annulé

2.Opération pratique :

.

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

3 Vérifiez le journal des requêtes lentes

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%';

4.

Comment supprimer le journal des requêtes lentes et le journal général La méthode de suppression est la même. Peut être supprimé à l'aide de la commande mysqladmin. Il peut également être supprimé manuellement. La syntaxe de la commande mysqladmin est la suivante :

mysqladmin -uroot -p flush-logs

Après avoir exécuté la commande, la ligne de commande vous demandera de saisir le mot de passe. Après avoir entré le mot de passe correct, la suppression sera effectuée. Le nouveau journal des requêtes lentes écrasera directement l'ancien journal des requêtes et il n'est pas nécessaire de le supprimer manuellement.

L'administrateur de la base de données peut également supprimer manuellement le journal des requêtes lentes. Après la suppression, le service MySQL doit être redémarré.

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!

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