Activer les slow logs MySQL
Dans la vie d'un site web en production, le temps de réponse à la base peut augmenter pour divers raisons.
Pour identifier les requêtes il existe deux méthodes.
Méthode à chaud
Connectez vous à votre base de donnée avec des droits avancé (si possible root).
Activez les slow logs
SET GLOBAL slow_query_log = 'ON';
Definissez le temps d'execution qu'une requête peut avoir avant d'être considéré comme lente
SET GLOBAL long_query_time = 5;
En remplaçant 5 par la valeur que vous souhaitez en seconde.
Choississez dans quel dossier doit être écrit ces logs
SET GLOBAL slow_query_log_file = '/var/log/mysql/mysql-slow.log';
Puis testez
SELECT SLEEP(10);
Vous devriez avoir le résultat dans le fichier /var/log/mysql/mysql-slow.log
.
Pour le désactivez passer la variable slow_query_log
à OFF
SET GLOBAL slow_query_log = 'OFF';
Méthode à froid
Éditez le fichier /etc/mysql/my.cnf
Ajoutez les lignes ci dessous :
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 5
slow_query_log
Active les slow query
slow_query_log_file
Définie le chemin dans lequel MySQL va écrire ces logs
long_query_time
Définie le temps d'execution qu'une requête peut avoir avant d'être considéré comme lente
Relancez MySQL
systemctl restart mysql
Pour testez, connectez vous sur votre base de données puis tapez la commande suivante
SELECT SLEEP(10);
Vous devriez voir une occurence appraitre dans le fichier /var/log/mysql/mysql-slow.log
Pour désactivez ça, retirez les directives ajoputé dans /etc/mysql/my.cnf
et redémarrez MySQL.