Maison >base de données >tutoriel mysql >Explication détaillée de la façon d'activer le journal des requêtes lentes dans MySQL

Explication détaillée de la façon d'activer le journal des requêtes lentes dans MySQL

小云云
小云云original
2018-01-17 09:40:451551parcourir

Cet article présente principalement la méthode d'activation du journal des requêtes lentes dans MySQL. L'éditeur pense que c'est assez bon, je vais donc le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur et jetons un œil. J'espère que cela pourra aider tout le monde.

1.1 Introduction

L'activation du journal des requêtes lentes permet à MySQL d'enregistrer les requêtes qui dépassent le temps spécifié. En localisant et en analysant les goulots d'étranglement des performances, la base de données peut être mieux optimisée. . performances du système.

1.2 Connectez-vous à la base de données pour afficher


[root@localhost lib]# mysql –uroot

Parce qu'aucun mot de passe n'est défini, si vous avez un mot de passe , accédez à mysql –uroot –p pour vous connecter Mot de passe

1.2.1 Entrez MySql pour vérifier si la requête lente est activée


mysql> show variables like 'slow_query%';

+---------------------+--------------------------------------------+

| Variable_name    | Value                   |

+---------------------+--------------------------------------------+

| slow_query_log   | OFF                    |

| slow_query_log_file | /application/mysql/data/localhost-slow.log |

+---------------------+--------------------------------------------+

2 rows in set (0.00 sec)

Description du paramètre :

  1. slow_query_log état d'activation des requêtes lentes OFF non activé ON est activé

  2. slow_query_log_file L'emplacement où se trouve le journal des requêtes lentes stocké (ce répertoire nécessite les autorisations d'écriture du compte MySQL en cours d'exécution. Généralement défini sur le répertoire de stockage de données de MySQL)

1.2.2 Vérifiez le délai d'expiration lent des requêtes


mysql> show variables like 'long%';

+-----------------+-----------+

| Variable_name  | Value   |

+-----------------+-----------+

| long_query_time | 10.000000 |

+-----------------+-----------+

1 row in set (0.00 sec)

long_query_time Requête combien de secondes il faut pour enregistrer Par défaut 10 secondes changées en 1 seconde

1.3 Méthode de modification 1 : (non recommandé)

Méthode 1 : Activer temporairement les avantages Requête lente, pas besoin de redémarrer la base de données Inconvénients : La requête lente MySql échoue au redémarrage

Recommandation : Selon les besoins de l'entreprise, il est Il est recommandé d'utiliser le second, le premier peut être utilisé temporairement

La valeur de slow_query_log par défaut est OFF, indiquant que le journal des requêtes lentes est désactivé et peut être activé en définissant la valeur de slow_query_log, comme indiqué ci-dessous : s'il faut activer le journal des requêtes lentes, 1 signifie activé, 0 signifie désactivé.

1.3.1 Vérifiez si la requête lente est activée


mysql> show variables like '%slow_query_log%';

+---------------------+--------------------------------------------+

| Variable_name    | Value                   |

+---------------------+--------------------------------------------+

| slow_query_log   | OFF                    |

| slow_query_log_file | /application/mysql/data/localhost-slow.log |

+---------------------+--------------------------------------------+

2 rows in set (0.01 sec)

Modifiez l'instruction d'entrée (cela ne fonctionnera pas après le redémarrage , il est recommandé de le modifier dans /etc /my.cnf (les modifications prennent effet définitivement)


mysql> set global slow_query_log=1;

Query OK, 0 rows affected (0.11 sec)

1.3.2 Vérifiez à nouveau


mysql> show variables like '%slow_query_log%';

+---------------------+--------------------------------------------+

| Variable_name    | Value                   |

+---------------------+--------------------------------------------+

| slow_query_log   | ON                     |

| slow_query_log_file | /application/mysql/data/localhost-slow.log |

+---------------------+--------------------------------------------+

2 rows in set (0.00 sec)

1.4 Méthode de modification 2 : (recommandée)

Modifier la requête lente MySql Beaucoup de gens ne connaissent pas la requête my. chemin cnf. Vous pouvez utiliser find pour trouver

Remarque : Mon MySQL est compilé dans /etc/my.cnf (généralement ici)


[root@localhost log]# find / -type f -name "my.cnf"

/application/mysql-5.5.51/mysql-test/suite/rpl/my.cnf

/application/mysql-5.5.51/mysql-test/suite/federated/my.cnf

/application/mysql-5.5.51/mysql-5.5.51-linux2.6-x86_64/mysql-test/suite/rpl/my.cnf

/application/mysql-5.5.51/mysql-5.5.51-linux2.6-x86_64/mysql-test/suite/federated/my.cnf

/etc/my.cnf  ###(一般都是这里)

1.4.1.1 Modification


[root@localhost log]# vim /etc/my.cnf

Trouvez [mysqld] et ajoutez


slow_query_log =1

slow_query_log_file=/application/mysql/data/localhost-slow.log

long_query_time = 1

Description du paramètre :

  1. slow_query_log l'état d'ouverture de requête lente 1 est activé

  2. slow_query_log_file L'emplacement où le journal des requêtes lentes est stocké

  3. La requête long_query_time dépasse la durée d'enregistrement en secondes. Par défaut, 10 secondes ont été modifiées en 1 seconde

Redémarrer MySQL après modification

1.5 Afficher et tester

1.5.1.1 Insérer une requête lente de test


mysql> select sleep(2);

+----------+

| sleep(2) |

+----------+

|    0 |

+----------+

1 row in set (2.00 sec)

1.5.1.2 Afficher le journal des requêtes lentes


[root@localhost data]# cat /application/mysql/data/localhost-slow.log

/application/mysql/bin/mysqld, Version: 5.5.51-log (MySQL Community Server (GPL)). started with:

Tcp port: 3306 Unix socket: /tmp/mysql.sock

Time         Id Command  Argument

/application/mysql/bin/mysqld, Version: 5.5.51-log (MySQL Community Server (GPL)). started with:

Tcp port: 3306 Unix socket: /tmp/mysql.sock

Time         Id Command  Argument

/application/mysql/bin/mysqld, Version: 5.5.51-log (MySQL Community Server (GPL)). started with:

Tcp port: 3306 Unix socket: /tmp/mysql.sock

Time         Id Command  Argument

# Time: 170605 6:37:00

# User@Host: root[root] @ localhost []

# Query_time: 2.000835 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0

SET timestamp=1496615820;

select sleep(2);

1.5.1.3 Vérifiez le nombre de requêtes lentes via les commandes MySQL


mysql> show global status like '%Slow_queries%';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| Slow_queries | 1   |

+---------------+-------+

1 row in set (0.00 sec)

1.6 Outil d'analyse des journaux mysqldumpslow

Dans un environnement de production, si vous souhaitez analyser manuellement les journaux, rechercher et analyser SQL, c'est évidemment une tâche laborieuse. MySQL fournit l'outil d'analyse des journaux mysqldumpslow

Recommandations associées :

Configuration et utilisation liées au journal des requêtes lentes MySQL

La différence entre les journaux de requêtes normales et lentes dans MySQL

Introduction au fonctionnement des requêtes lentes MySQL pour l'optimisation 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