Question

Je me demande s'il existe un autre moyen de vérifier nos requêtes lentes sans enregistrer les requêtes lentes.Supposons que j'ai un serveur très occupé et que je ne puisse pas me permettre d'enregistrer beaucoup de choses pour économiser de la mémoire et des E/S.Alors, existe-t-il un autre moyen de vérifier si ma requête est lente ?Je sais, nous pouvons faire le profilage de la requête, mais nous ne savons toujours pas exactement quoi faire pour identifier quelle requête prend le plus de temps et de mémoire.

Je viens de démarrer l'administration MySQL et je ne sais pas comment gérer cela.Tout conseil sera très apprécié.

Était-ce utile?

La solution

Si vous ne souhaitez pas du tout activer le journal des requêtes lentes, j'ai une suggestion

Vous pouvez utiliser pt-requête-digest sur un intervalle de temps.

Je l'ai suggéré à plusieurs reprises dans DBA StackExchange

Si tu regardes mon Nov 24, 2011 lien, j'ai fourni un script shell que vous pouvez lancer par crontab pt-requête-digest.

ESSAIE !!!

Autres conseils

Vous pouvez exécuter l'instruction suivante en boucle dans un script qui déclenche l'instruction toutes les 10 secondes par exemple.

mysql -e 'SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST where time>10 and command<>"Sleep"'

Vous pouvez le personnaliser pour vous donner plus ou moins d'informations en fonction de la requête que vous émettez.

mysql> desc INFORMATION_SCHEMA.PROCESSLIST;
+---------------+---------------------+------+-----+---------+-------+
| Field         | Type                | Null | Key | Default | Extra |
+---------------+---------------------+------+-----+---------+-------+
| ID            | bigint(21) unsigned | NO   |     | 0       |       |
| USER          | varchar(16)         | NO   |     |         |       |
| HOST          | varchar(64)         | NO   |     |         |       |
| DB            | varchar(64)         | YES  |     | NULL    |       |
| COMMAND       | varchar(16)         | NO   |     |         |       |
| TIME          | int(7)              | NO   |     | 0       |       |
| STATE         | varchar(64)         | YES  |     | NULL    |       |
| INFO          | longtext            | YES  |     | NULL    |       |
| TIME_MS       | bigint(21)          | NO   |     | 0       |       |
| ROWS_SENT     | bigint(21) unsigned | NO   |     | 0       |       |
| ROWS_EXAMINED | bigint(21) unsigned | NO   |     | 0       |       |
+---------------+---------------------+------+-----+---------+-------+
11 rows in set (0.00 sec)

Afin de ne pas enregistrer plusieurs fois la même requête, vous pouvez utiliser le hachage de la requête comme clé unique.

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top