Mysql
 sql >> Base de données >  >> RDS >> Mysql

Activer la journalisation des requêtes lentes (journal des requêtes lentes) dans la base de données MySQL

L'une des principales exigences d'un serveur Web rapide est de disposer d'instructions ou de requêtes SQL efficaces et optimisées. Toutes les commandes ou instructions SQL (Structured Query Language) non optimales qui prennent trop de temps à s'exécuter utiliseront beaucoup de ressources système, ce qui ralentira l'exécution de la base de données MySQL, puis de plus en plus de requêtes en file d'attente, et quand la limite de connexion est atteinte, les visiteurs sont refusés ou se voient refuser la connexion. Dans le pire des cas, votre serveur Web tombera également en panne ou sera constamment sous-performant. Le cas est particulièrement vrai lorsque vous utilisez le type de table MyISAM qui utilise le verrouillage au niveau de la table au lieu du verrouillage au niveau de la ligne dans un site Web à fort trafic.

Parfois, une seule requête SQL peut être la cause de tous les problèmes du serveur. MySQL a une fonctionnalité intégrée pour capturer le journal des requêtes lentes ou identifier les requêtes qui ne sont pas optimales et prennent beaucoup de temps à se terminer, ce qui vous permet de consigner toutes les requêtes lentes qui ont pris un nombre défini de secondes pour s'exécuter par le moteur de base de données MySQL dans un dossier. Le journal des requêtes lentes n'est pas activé ou activé par défaut lors de l'installation de MySQL, c'est donc l'un des journaux les moins utilisés.

Pour activer le journal des requêtes lentes, ajoutez simplement la ligne suivante au fichier de configuration MySQL (my.cnf ou my.ini), puis redémarrez le serveur MySQL :

log-slow-queries

Ou,

log-slow-queries = [path to the log file]

Remplacez [chemin vers le fichier journal] avec le chemin réel vers le fichier journal des requêtes lentes dans lequel vous souhaitez que MySQL écrive le journal, qui est la valeur facultative.

Ou vous pouvez démarrer mysqld avec le –log-slow-queries[=file_name] option pour activer le journal des requêtes lentes. Dans les deux syntaxes, si aucun nom de fichier journal n'est spécifié, le nom par défaut est host_name -slow.log, stocké dans le répertoire des fichiers de données MySQL. Si un nom de fichier est donné, mais pas comme un chemin d'accès absolu, le serveur écrit également le fichier dans le répertoire de données.

Après avoir activé le journal des requêtes lentes, MySQL créera, capturera et consignera dans le fichier journal toutes les instructions SQL qui ont pris plus de long_query_time secondes pour exécuter, qui est défini par défaut sur 10 secondes . Le temps d'acquisition des verrous de table initiaux n'est pas compté comme temps d'exécution. mysqld écrit une instruction dans le journal des requêtes lentes après son exécution et après que tous les verrous ont été libérés, l'ordre du journal peut donc être différent de l'ordre d'exécution.

Vous pouvez ensuite examiner toutes les requêtes SQL lentes dans le fichier journal, puis prendre les mesures nécessaires pour optimiser les instructions SQL. Le journal des requêtes lentes vous indiquera à quelle heure la requête s'est terminée, combien de temps la requête a pris pour s'exécuter, combien de temps il a fallu pour sécuriser ses verrous, combien de lignes ont été renvoyées en conséquence, combien de lignes ont été examinées pour déterminer le résultat, quelle base de données a été utilisée et la requête elle-même. Mais gardez à l'esprit qu'une requête SQL contenue dans le journal peut être déjà optimale, mais exécutée lentement en raison des ressources système utilisées par l'instruction lente réelle qui doit être affinée.