L'utilisation du processeur dans MySQL fait référence à la proportion des ressources du processeur d'un ordinateur que le serveur MySQL utilise pour exécuter des opérations, notamment le traitement des requêtes, la gestion des transactions de base de données et la maintenance du système de base de données. Essentiellement, il mesure la part de la capacité de calcul du processeur dédiée à l'exécution de tâches MySQL à un moment donné.
Lorsque l'utilisation du processeur MySQL est très élevée, cela peut indiquer que votre base de données traite activement un grand nombre de requêtes ou de requêtes complexes. D’un autre côté, une utilisation constamment faible du processeur peut suggérer que vous sous-utilisez les ressources. Cela peut signifier qu'il existe des inefficacités ou des goulots d'étranglement ailleurs dans le système.
La commande top est un outil générique disponible sous Linux et d'autres systèmes d'exploitation de type Unix (comme CentOS). Il fournit une vue dynamique en temps réel de l'état actuel de votre système, y compris l'utilisation du processeur par tous les processus.
Recherchez le processus mysql dans la liste. La colonne %CPU affichera l'utilisation actuelle du processeur de votre instance de MySQL.
La commande SHOW STATUS de MySQL est un outil puissant pour récupérer un large éventail d'informations sur l'état du serveur. Bien qu'il n'affiche pas directement l'utilisation du processeur, il vous permet de déduire la charge du processeur via divers compteurs et indicateurs d'état.
Accédez à votre serveur MySQL via la CLI ou un client MySQL.
Exécutez la commande AFFICHER LE STATUT : comme 'Threads_%'.
Dans la liste des statuts et des variables du serveur, threads_running et threads_connected sont les deux indicateurs les plus importants pour évaluer l'utilisation du processeur :
La commande SHOW PROCESSLIST fournit un instantané en temps réel de tous les threads actifs au sein de votre serveur MySQL.
La sortie comprend plusieurs colonnes de données pour chaque fil. Portez une attention particulière aux éléments suivants :
Pour une analyse plus approfondie, le schéma de performances de MySQL peut être utilisé. Il fournit des informations détaillées sur les événements du serveur et peut être interrogé pour analyser l'utilisation du processeur par thread ou par requête.
Pour activer le schéma de performances (s'il n'est pas déjà activé) :
Exécutez une requête qui joint la table performance_schema.threads à la table performance_schema.events_statements_summary_by_thread_by_event_name. Cette requête fournira des informations détaillées sur l'utilisation du processeur associée aux différents threads et requêtes exécutés par le serveur.
Une gamme de solutions de surveillance externes, notamment Percona Monitoring and Management (PMM) et Releem, offrent une analyse approfondie des mesures de performances de MySQL, telles que l'utilisation du processeur.
Ces outils fournissent un aperçu complet du processeur et des mesures associées via une interface intuitive, ce qui facilite grandement la détection des tendances et des problèmes.
Une utilisation élevée du processeur dans les bases de données MySQL a un impact sur les performances et la fiabilité de vos applications dépendantes. Pour diagnostiquer efficacement ce problème, il est essentiel d'examiner en profondeur les mécanismes opérationnels de MySQL, les processus d'exécution des requêtes et l'environnement système plus large.
L'une des causes les plus courantes d'une utilisation élevée du processeur est l'inefficacité ou la complexité des requêtes SQL. Les requêtes qui ne disposent pas d'une indexation appropriée ou qui impliquent des analyses de table complètes peuvent entraîner une consommation excessive de cycles CPU par le moteur de base de données. Cette inefficacité est due au fait que la base de données doit lire plus de données que nécessaire, traiter chaque ligne individuellement et effectuer des calculs complexes sans l'aide d'index.
Vous pouvez configurer le journal des requêtes lentes (activer puis définir votre seuil de requêtes longues préféré) ou utiliser Releem Query Analytics pour identifier les requêtes spécifiques qui mettent trop de temps à s'exécuter. Ce sont les requêtes qui nécessitent votre attention.
MySQL est conçu pour gérer plusieurs connexions et transactions simultanément. Cependant, à mesure que le niveau de concurrence augmente, la complexité de la gestion de ces connexions simultanées augmente également. Un thread distinct gère chaque connexion active. La gestion d'un grand nombre de threads nécessite plus de ressources CPU, non seulement pour l'exécution des requêtes mais également pour la surcharge de changement de contexte entre les threads.
Un conflit de verrouillage se produit lorsque plusieurs transactions tentent d'accéder aux mêmes données en même temps, ce qui conduit à un scénario dans lequel elles doivent attendre que l'autre libère les verrous avant de continuer. Lorsque les transactions sont en concurrence pour les verrous sur les lignes ou les tables, le moteur de base de données consacre des cycles CPU supplémentaires à la gestion de ces verrous.
Vous pouvez déterminer si un conflit de verrouillage se produit en consultant la table information_schema.innodb_lock_waits. Utilisez la requête suivante pour identifier les transactions verrouillées :
SELECT t.trx_id, t.trx_state, t.trx_started, COUNT(distinct w.requesting_trx_id) AS blocked_trxs FROM information_schema.innodb_lock_waits w INNER JOIN information_schema.innodb_trx t ON t.trx_id = w.blocking_trx_id GROUP BY t.trx_id,t.trx_state, t.trx_started ORDER BY t.trx_id;
Les transactions de longue durée peuvent également fournir des informations sur le niveau de conflit au sein de votre base de données. Utilisez la commande SHOW ENGINE INNODB STATUS pour afficher une liste de toutes les transactions ouvertes, de la plus récente à la plus ancienne. Inspectez les transactions les plus anciennes pour avoir une idée de la durée de leur exécution, des tables et des lignes impliquées et des instructions impliquées.
Les performances de MySQL dépendent fortement de sa configuration. Les paramètres qui ne sont pas optimisés pour votre charge de travail ou votre matériel peuvent entraîner une utilisation inefficace du processeur. Certains paramètres clés incluent :
La conception physique de la base de données, y compris les structures des tables et les types de données, peut également affecter l'efficacité du processeur. Si vous utilisez des types de données plus volumineux que nécessaire (comme BIGINT sur INT), MySQL traite plus de données que nécessaire, consommant plus de ressources CPU.
La normalisation est une technique de conception de base de données utilisée pour organiser les tables de manière à réduire la redondance des données et à améliorer l'intégrité des données. Le processus consiste à diviser une base de données en deux ou plusieurs tables et à définir les relations entre les tables. Alors qu'une surnormalisation peut conduire à des jointures complexes, une sous-normalisation peut entraîner un traitement de données redondant et des analyses plus volumineuses, qui augmentent toutes deux l'utilisation du processeur.
Releem offers a range of capabilities to help you monitor and manage your CPU usage:
If you'd like to check out these capabilities, you can sign up for free to get started!
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!