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

Comment identifier les problèmes de performances de MySQL avec des requêtes lentes

Les problèmes de performances sont des problèmes courants lors de l'administration des bases de données MySQL. Parfois, ces problèmes sont en fait dus à des requêtes lentes. Dans ce blog, nous traiterons des requêtes lentes et comment les identifier.

Vérification de vos journaux de requêtes lentes

MySQL a la capacité de filtrer et de consigner les requêtes lentes. Il existe différentes manières d'enquêter sur celles-ci, mais la manière la plus courante et la plus efficace consiste à utiliser les journaux de requêtes lentes.

Vous devez d'abord déterminer si vos journaux de requêtes lentes sont activés. Pour faire face à cela, vous pouvez vous rendre sur votre serveur et interroger la variable suivante :

MariaDB [(none)]> show global variables like 'slow%log%';

+---------------------+-------------------------------+

| Variable_name       | Value           |

+---------------------+-------------------------------+

| slow_query_log      | ON           |

| slow_query_log_file | /var/log/mysql/mysql-slow.log |

+---------------------+-------------------------------+

2 rows in set (0.001 sec)

Vous devez vous assurer que la variable slow_query_log est définie sur ON, tandis que slow_query_log_file détermine le chemin où vous devez placer vos journaux de requêtes lentes. Si cette variable n'est pas définie, elle utilisera le DATA_DIR de votre répertoire de données MySQL.

Avec la variable slow_query_log se trouvent long_query_time et min_examined_row_limit qui ont un impact sur le fonctionnement de la journalisation des requêtes lentes. Fondamentalement, les journaux de requêtes lentes fonctionnent comme des instructions SQL qui prennent plus de long_query_time secondes pour s'exécuter et nécessitent également l'examen d'au moins min_examined_row_limit lignes. Il peut être utilisé pour trouver des requêtes qui prennent beaucoup de temps à s'exécuter et sont donc candidates à l'optimisation et vous pouvez ensuite utiliser des outils externes pour apporter le rapport pour vous, qui parlera plus tard.

Par défaut, les instructions administratives (ALTER TABLE, ANALYZE TABLE, CHECK TABLE, CREATE INDEX, DROP INDEX, OPTIMIZE TABLE et REPAIR TABLE) ne tombent pas dans les journaux de requêtes lentes. Pour ce faire, vous devez activer la variable log_slow_admin_statements.

Interroger la liste des processus et le moniteur d'état InnoDB

Dans une routine DBA normale, cette étape est le moyen le plus courant de déterminer les requêtes de longue durée ou les requêtes en cours d'exécution actives qui entraînent une dégradation des performances. Cela pourrait même entraîner le blocage de votre serveur, suivi de files d'attente empilées qui augmentent lentement en raison d'un verrou couvert par une requête en cours d'exécution. Vous pouvez simplement courir,

SHOW [FULL] PROCESSLIST;

ou

SHOW ENGINE INNODB STATUS \G

Si vous utilisez ClusterControl, vous pouvez le trouver en utilisant