MySQL est un système de gestion de base de données relationnelle couramment utilisé avec de bonnes performances et une évolutivité dans le traitement de données à grande échelle. La requête est l'une des opérations les plus fréquemment utilisées. Cependant, lors du traitement de grandes quantités de données, les requêtes peuvent s'exécuter lentement pour diverses raisons, affectant les performances du système. Dans ce cas, vous devez utiliser le journal des requêtes lentes de MySQL pour identifier et optimiser les problèmes de performances des requêtes. Cet article présentera en détail les connaissances de base et l'application de la requête de journal lente MySQL.
1. Qu'est-ce que MySQL Query Slow Log ?
MySQL Query Slow Log est le propre outil d'analyse des performances de MySQL, utilisé pour enregistrer les requêtes de requête qui dépassent le seuil de temps spécifié. Le journal lent des requêtes enregistre divers indicateurs de performances de chaque requête, notamment le temps requis, le nombre d'exécutions, le plan d'exécution, etc. Grâce à ces métriques, les développeurs peuvent identifier les requêtes qui doivent être optimisées pour plus d'efficacité et prendre les mesures appropriées.
En général, le journal lent des requêtes MySQL n'est pas activé par défaut et doit être configuré manuellement pour l'activer. Dans le fichier de configuration MySQL (my.cnf), vous pouvez définir les paramètres du fichier de configuration pour activer le journal lent des requêtes. Voici un exemple de configuration pour interroger les journaux lents :
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
log_queries_not_using_indexes = 1
long_query_time = 2
où le paramètre slow_query_log est utilisé activer Pour interroger le journal lent, le paramètre slow_query_log_file spécifie l'emplacement du fichier journal des requêtes lentes. Le paramètre log_queries_not_using_indexes est utilisé pour enregistrer les informations inutilisées de l'index de requête lente. Le paramètre long_query_time est utilisé pour spécifier le délai d'expiration de la requête en secondes.
2. Comment activer le journal lent des requêtes MySQL
Dans MySQL 5.7 et les versions supérieures, le journal lent des requêtes MySQL est activé par défaut. Pour les anciennes versions de MySQL, telles que MySQL 5.6 ou 5.5, une configuration manuelle est requise pour activer la fonction de journalisation lente des requêtes. Voici les étapes détaillées pour activer le journal lent des requêtes MySQL :
Dans les systèmes Linux, le fichier de configuration par défaut pour MySQL se trouve dans /etc/my.cnf. Dans les systèmes Windows, le fichier de configuration se trouve généralement dans C:Program FilesMySQLMySQL Servermy.ini ou C:ProgramDataMySQLMySQL Servermy.ini. Ouvrez le fichier avec votre éditeur préféré.
Recherchez la ligne suivante dans le fichier de configuration :
Supprimez le symbole de commentaire # sur cette ligne et modifiez la valeur à 1.
slow_query_log = 1
Trouvez la ligne suivante :
Supprimez le symbole de commentaire # sur cette ligne et supprimez le fichier Modifiez le chemin vers le chemin souhaité.
slow_query_log_file = /var/log/mysql/mysql-slow.log
Retrouvez la ligne suivante :
Supprimez le symbole de commentaire # sur cette ligne et modifiez la valeur Give le seuil d'expiration de votre requête souhaité (en secondes).
long_query_time = 2
Trouvez la ligne suivante :
Supprimez le symbole de commentaire # sur cette ligne et remplacez la valeur par 1 pour permettre index de requêtes lentes inutilisées dans les opérations de journalisation.
log_queries_not_using_indexes = 1
Vérifiez si le fichier de configuration a été enregistré et fermez le fichier.
Utilisez la commande suivante pour redémarrer le service MySQL :
sudo systemctl restart mysqld
3 Comment afficher le journal des requêtes lentes MySQL
Une fois que vous avez activé le journal des requêtes lentes MySQL, le journal des requêtes lentes enregistrera automatiquement les informations de requête et les stockera dans le fichier journal lent des requêtes spécifié. Vous pouvez utiliser la commande suivante pour afficher le journal des requêtes lentes :
sudo tail -n 100 /var/log/mysql/mysql-slow.log
Utilisez cette commande pour afficher les 100 derniers enregistrements du journal des requêtes lentes. Vous pouvez également modifier le nombre de lignes affichées à votre guise. Dans le résultat, le temps nécessaire à l'exécution de la requête lente est affiché, ainsi que toutes les tables et sous-requêtes impliquées dans la requête.
Si vous devez interroger les journaux lents par filtrage par date, vous pouvez utiliser grep et awk pour filtrer les journaux sous Linux, comme indiqué ci-dessous :
grep "21-Jun-2022" /var/log/mysql/mysql-slow .log | awk '{print substr($2,0,length($2)-1)" "$3$4" "$5}' | less
Cette commande affichera tous les horodatages contenant des journaux de requêtes lentes le 21 juin 2022.
4. Comment analyser et optimiser les journaux de requêtes lentes MySQL
Une fois que vous avez collecté suffisamment de journaux de requêtes lentes MySQL, vous pouvez les analyser et découvrir les requêtes qui doivent être optimisées. Voici quelques bonnes pratiques pour analyser et optimiser les performances des requêtes :
pt-query-digest est un logiciel open source qui peut vous aider à analyser les journaux de requêtes lentes de MySQL, et optimiser les problèmes qui se posent. Voici les étapes pour installer et utiliser pt-query-digest :
Sur CentOS 7, vous pouvez l'installer à l'aide de la commande suivante.
yum installez https://repo.percona.com/yum/percona-release-latest.noarch.rpm
yum installez percona-toolkit
Vous pouvez utiliser la commande suivante pour utiliser pt-query-digest pour analyser le journal des requêtes lentes.
pt-query-digest /var/log/mysql/mysql-slow.log > slow-query-analysis.out
pt-query-digest vous fournira un rapport d'analyse complet sur les journaux lents des requêtes. Vous pouvez rechercher les requêtes les plus fréquentes et celles dont les délais d'attente sont les plus longs, et identifier les requêtes qui nécessitent une optimisation.
Le journal lent des requêtes MySQL enregistre toutes les requêtes qui n'ont pas utilisé l'index avec succès. Vous pouvez utiliser ces informations pour déterminer. quelles requêtes ne l'ont pas fait. Utilisez des index de champ appropriés pour accélérer les requêtes. L'ajout d'index dans MySQL peut considérablement optimiser les performances des requêtes. Cependant, il convient de noter que l'ajout d'un trop grand nombre d'index peut entraîner une diminution des performances des requêtes, car cela peut augmenter la surcharge des requêtes de requête et des opérations de mise à jour.
Le journal lent des requêtes peut vous indiquer quelles requêtes doivent être optimisées. Si le temps d'exécution dépasse le seuil défini, la requête sera enregistrée dans le fichier journal. Vous pouvez vérifier l'instruction de requête et essayer d'utiliser différentes instructions de requête pour optimiser la vitesse d'exécution.
Le mécanisme de mise en cache peut grandement améliorer la vitesse des requêtes. Si les résultats de la requête existent déjà dans le cache, ils peuvent être renvoyés directement depuis le cache, évitant ainsi la surcharge liée à l'exécution de la requête. Les mécanismes de mise en cache peuvent être implémentés à l'aide de fournisseurs de cache tels que Redis et Memcached.
Dans le serveur MySQL, vous pouvez optimiser les performances de l'ensemble de la base de données en ajustant divers paramètres. Ces paramètres incluent la taille du cache MySQL, la limite de connexion, le délai d'expiration des requêtes, etc. En ajustant ces paramètres, les performances du service de base de données peuvent être optimisées pour des requêtes spécifiques.
Summary
MySQL Query Slow Log est un outil très utile pour vous aider à identifier et résoudre les problèmes de performances lentes des requêtes. Cet outil est facile à démarrer et à personnaliser, et les informations qu'il enregistre peuvent vous aider à analyser les performances des requêtes et à déterminer quelles requêtes nécessitent une optimisation. Suivre les meilleures pratiques et effectuer les optimisations appropriées peut améliorer les performances globales de votre serveur MySQL et vous aider à mieux gérer et maintenir des bases de données volumineuses.
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!