Examiner les requêtes MySQL lentes
Vous avez activé la consignation des requêtes lentes et ont maintenant un journal à examiner. Si vous n'avez pas activé la journalisation, vous pouvez trouver les étapes ici .Analyse du journal
Emplacement du journal:/var/log/slow-queries.log
# Heure: 210905 6:33:11 # User @ Host: dbuser [dbname] @ hostname [1.2.3.4] # Query_time: 12.116250 Lock_time: 0.000035 Rows_sent: 0 Rows_examined: 201565 use dbname; SET horodatage = 1409898791; ... UNE DEMANDE LENTE ICI ...
Le journal peut être accablant lorsque vous avez des dizaines, voire des centaines d’entrées dans le format ci-dessus. Pour rendre le journal plus lisible, utilisez mysqldumpslow pour analyser le journal.
mysqldumpslow -r -a /var/log/mysql/mysqld.slow.logLa sortie contiendra des informations importantes comme l' heure , les lignes et la requête .
Nombre: 2 Temps = 20.54s (41s) Verrouiller = 0.02s (0s) Lignes = 12547802 (0), dbuser [dbuser] @localhost SELECT * FROM db_exp_table WHERE site_user_id = '214380' ORDER BY site_id DESC LIMIT 0,2 Nombre: 1 Heure = 21,74s (21s) Verrouiller = 0,01s (0s) Lignes = 12547802 (0), dbuser [dbuser] @localhost SELECT * FROM db_exp_table WHERE site_user_id = '214380' ORDER BY site_id DESC LIMIT 0,2 Nombre: 1 Heure = 23.86s (23s) Lock = 0.20s (0s) Rows = 12547802 (0), dbuser [dbuser] @localhost SELECT * FROM db_exp_table WHERE site_user_id = '214380' ORDER BY site_id DESC LIMIT 0,2
En examinant l'exemple ci-dessus, nous avons 1 requête qui a pris 20-24 secondes pour s'exécuter. Cela provoque des problèmes avec votre site, allant de temps de chargement lents à des erreurs de temporisation (rotation sans fin). La requête examine 12 547 802 lignes. Une requête volumineuse (par exemple, select *) exécutée sur une table de plus de 12 millions de lignes entraînera probablement une mauvaise expérience utilisateur. Optimiser la requête (par exemple, sélectionner des «tables basses») ou réduire le nombre de lignes examinées (par exemple archiver les anciennes données) accélérera la requête.
Si le fichier journal est volumineux, exécutez mysqldumpslow et enregistrez la sortie dans un fichier. Cela facilitera la vérification avec d'autres outils de manipulation de fichiers tels que grep ou find .
mysqldumpslow -r -a /var/log/slow-queries.log > slow.log.parsed
Étapes suivantes
Après avoir examiné le journal des requêtes lentes, vous devriez avoir une bonne idée des requêtes problématiques qui doivent être corrigées. Si votre site fonctionne toujours lentement avec MySQL et utilise des ressources importantes, vous devrez peut-être optimiser MySQL pour mieux utiliser les ressources de votre serveur.
Une fois que vous avez terminé avec le journal, veillez à désactiver la journalisation des requêtes lentes MySQL . Laisser la journalisation activée épuisera les ressources MySQL inutilement et remplira potentiellement votre disque (avec de mauvaises requêtes).
Services d'hébergement GoDaddy
Nos experts en serveurs peuvent activer / désactiver la journalisation lente des requêtes MySQL et optimiser MySQL. Pour en savoir plus sur ce service, un guide GoDaddy est là pour vous aider.