Maison  >  Article  >  base de données  >  La différence entre les journaux de requêtes normaux et lents dans MySQL

La différence entre les journaux de requêtes normaux et lents dans MySQL

一个新手
一个新手original
2017-09-08 10:12:491456parcourir


Intro

<br/>


Un partage précédent a mentionné que le type de journal de MySQL peut Il est divisé en trois types, journal des erreurs (error_log), journal des requêtes (query_log) et journal binaire (binary_log). Pour l'introduction et l'utilisation de error_log, voir error_log dans le journal MySQL. Cet article présente principalement les principes et l'utilisation de general_log et slow_query_log.

Journal des requêtes générales

Journal des requêtes générales (general_log) est principalement utilisé pour interroger les informations pertinentes lorsque chaque client se connecte à la base de données et les instructions SQL exécutées sur la configuration de la base de données. méthode Pour :

1. Vérifiez si le journal des requêtes générales est activé et son chemin de stockage :

mysql> show variables like "general_log%";
+------------------+------------------------------+| Variable_name    | Value                        |
+------------------+------------------------------+| general_log      | OFF                           |
| general_log_file | /var/lib/mysql/localhost.log |
+------------------+------------------------------+
2 rows in set (0.00 sec)

Dans la sortie de l'écran, general_log et general_log_file enregistrez la requête générale actuelle. L'état du commutateur et le chemin du journal.

2. Activez le journal général des requêtes

    set global general_log = ON

Si la requête réussit :

mysql> show variables like "general_log%";
+------------------+------------------------------+| Variable_name    | Value                        |
+------------------+------------------------------+| general_log      | ON                           |
| general_log_file | /var/lib/mysql/localhost.log |
+------------------+------------------------------+
2 rows in set (0.00 sec)

Succès.

Sortez et voyez s'il est généré et enregistré correctement :

[root@localhost ~]# cat /var/lib/mysql/localhost.log
/usr/sbin/mysqld, Version: 5.7.19 (MySQL Community Server (GPL)). started with:
Tcp port: 3306  Unix socket: /var/lib/mysql/mysql.sock
Time                 Id Command    Argument
2017-08-14T09:33:11.364650Z     5 Quit  
2017-08-14T09:33:20.671113Z     6 Connect   root@localhost on  using Socket
2017-08-14T09:33:20.671323Z     6 Query select @@version_comment limit 1
2017-08-14T09:33:22.964610Z     6 Query show variables like &#39;%log%&#39;
2017-08-14T09:33:24.574224Z     6 Quit

Succès, et nous pouvons voir que le journal enregistre non seulement la commande SQL, mais inclut également le temps d'exécution, l'ID , et le type de commande et d'autres données associées

Journal des requêtes lentes

Le journal des requêtes lentes enregistre les instructions dont la durée de l'instruction SQL dépasse le long_query_time prédéfini lorsque la quantité de données est. grand, , vous pouvez voir quelles instructions du journal des requêtes lentes doivent être optimisées.

1. Configuration du journal des requêtes lentes

La configuration du journal des requêtes lentes se trouve dans le fichier de configuration de la base de données my.cnf :

[root@localhost ~]# cat /etc/my.cnf | grep -E &#39;long|slow|not_using_indexes&#39;long_query_time = 1#log-slow-queries = /var/log/mysql/slow.loglog_queries_not_using_indexes

Vous pouvez voir :

long_query_time = 1 signifie que si le temps d'exécution de l'instruction SQL dépasse 1 s, elle sera enregistrée
log-slow-queries = /var/log/mysql/slow.log est le paramètre du chemin lent du journal des requêtes
Cela signifie que les instructions qui n'utilisent pas d'index peuvent réduire la cible d'enregistrementlog_queries_not_using_indexes

La configuration réelle est la même que celle du journal de requête général. Entrez la commande dans l'interface interactive mysql pour activer la requête lente. log :

    set slow_query_log = ON

2. Vérifiez si la requête a réussi

[root@localhost ~]# cat /var/lib/mysql/localhost-slow.log
/usr/sbin/mysqld, Version: 5.7.19 (MySQL Community Server (GPL)). started with:
Tcp port: 3306  Unix socket: /var/lib/mysql/mysql.sock
Time                 Id Command    Argument
Succès.

Mais notez que slow_query_log peut enregistrer des déclarations liées aux autorisations des utilisateurs et aux mots de passe, veuillez donc faire attention au stockage sécurisé des journaux lorsque vous utilisez des fichiers journaux de requêtes lentes.

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