2017-06-29 1 views
0

Je viens de découvrir une fonctionnalité très utile qui est slow_query_log qui vérifie les requêtes qui s'exécutent lentement. J'ai réussi à exécuter les commandes dans le CMD suivant ce lien:Comment vérifier slow_query pour un projet?

https://www.a2hosting.com/kb/developer-corner/mysql/enabling-the-slow-query-log-in-mysql

le fichier journal est créé dans un dossier de projet, et aucune requête trouvé en elle, donc il ne devrait pas être requêtes lentes .

Cependant, je suis en train de comprendre comment cette slow_query_log vérifie, par base de données, par projet?

Si je veux vérifier les requêtes lentes pour un projet spécifique quelle commande dois-je taper? Comment la machine slow_query va-t-elle savoir où toutes les requêtes sont listées dans mon myproject, quelles sont donc les requêtes lancées?

Veuillez m'expliquer cette partie.

Voilà comment j'exécuté les commandes CMD:

cd C:/wamp/bin/mysql/mysql5.7.14/bin 
mysql -u myusername-p 
enter password: mypassword 
SET GLOBAL slow_query_log = 'ON'; 
SET GLOBAL long_query_time = 5; 
SET GLOBAL slow_query_log_file = 'C:/wamp/www/myproject/slow_query/log.php'; 

Puis je quitter le CMD et en restituant tapées, mysql SELECT SLEEP(6);

Je trouve ce qui suit dans le fichier slow_query/log.php

wampmysqld, Version: 5.7.14 (Serveur de communauté MySQL (GPL)). commencé avec: TCP Port: 3306, canal nommé: /tmp/mysql.sock temps
Id Commande Argument

+1

Le journal est global, mais vous pouvez filtrer avec quelque chose comme 'grep'. Par curiosité, pourquoi se connecter. ** php **? –

+0

@AlexBlex J'ai simplement nommé en extension php. Aucune idée si je devrais enregistrer dans toute autre extension. S'il vous plaît conseiller. – 112233

+0

https://en.wikipedia.org/wiki/Filename_extension –

Répondre

1

La meilleure façon serait d'utiliser un analyseur de requêtes lentes.

Celui que je trouve le mieux c'est le pt-query-digest de Percona qui vous permet de filtrer et d'analyser le journal lent de différentes façons. Cet outil est inclus dans Percona's Toolkit qui a de nombreux outils utiles pour les DBA MySQL

Maintenant, je suppose que vous voulez filtrer les logs par schéma/base de données (Projet c'est un concept alien dans MySQL), si c'est le cas, vous utiliseriez pt- query-digest utilisant l'option --filter '($event->{db} || "") =~ m/mydb/' où mydb est la base de données que vous souhaitez filtrer.

Vous pouvez lire plus d'informations utiles sur le journal des requêtes lentes dans les blogs de Percona comme this one

+0

merci pour expliquer en détail. Veuillez aider à m'éclaircir un peu plus dessus. Donc, pour vérifier quelle requête ralentit, je dois exécuter une requête après l'autre? La – 112233

+0

-requête lente journaux écrit à son fichier une requête qui prend plus de long_query_time secondes ainsi que des informations utiles, il ne se soucie pas de bases de données ou des projets. Vous ne pouvez le filtrer que lorsque vous analysez le fichier écrit. Si vous voulez comprendre pourquoi une requête s'exécute lentement, vous devez regarder la commande EXPLAIN. – Jimmy