Cette rubrique explique comment utiliser la fonctionnalité d'analyse des verrous de DAS pour analyser les attentes de verrous de métadonnées (MDL) et les blocages transactionnels sur votre base de données.
Les données présentées dans les images de ce document proviennent de cas de test. En production, fiez-vous à vos paramètres réels, tels que l'ID de thread et les instructions SQL.
Prérequis
-
Moteur de base de données cible :
RDS MySQL
PolarDB for MySQL
L'instance de base de données cible est connectée à DAS et son état d'accès est indiqué comme Normal Access. Pour savoir comment connecter une instance de base de données, consultez la section Connecter une instance de base de données.
-
Vous avez activé Alibaba Cloud Managed Services (anciennement DAS Economy Edition).
ImportantAlibaba Cloud Managed Services (anciennement DAS Economy Edition) n'est disponible que dans certaines régions. Pour plus de détails, consultez la section Bases de données et régions prises en charge par édition.
Pour activer Alibaba Cloud Managed Services (anciennement DAS Economy Edition), consultez la section Gérer Alibaba Cloud Managed Services (anciennement DAS Economy Edition).
Types de verrous
-
Analyse des verrous de métadonnées (MDL)
Données analysées : utilise les données de tables telles que
information_schema.processlistpour déduire les relations d'attente de verrous et générer un graphique relationnel.
-
Analyse des blocages transactionnels
ImportantL'analyse des blocages transactionnels n'est pas prise en charge pour les instances PolarDB for MySQL 5.6.
-
Données analysées : utilise les données issues de
information_schema.processlist,information_schema.innodb_trxet des tables suivantes pour analyser les relations de blocage transactionnel et générer un graphique relationnel.RDS MySQL 5.6 et 5.7 :
information_schema.innodb_lock_waitsPolarDB for MySQL 5.7 :
information_schema.innodb_lock_waitsRDS MySQL et PolarDB for MySQL 8.0 :
performance_schema.data_lock_waits
-
Paramètres : pour les instances RDS MySQL 8.0 et PolarDB for MySQL 8.0, vous devez activer le paramètre
performance_schema. Pour modifier les paramètres de l'instance :Pour RDS MySQL, consultez la section Définir les paramètres de l'instance.
Pour PolarDB for MySQL, consultez la section Définir les paramètres du cluster et des nœuds.
-
Méthodes de déclenchement
Analyse des verrous – Analyse à la demande : sur la page Lock Analysis, déclenchez manuellement une autre analyse de verrous.
Sessions d'instance – Analyse automatique : l'autre analyse de verrous s'exécute automatiquement lorsque vous actualisez la page Instance Sessions.
Analyse des verrous – Analyse à la demande
Créer une analyse
Connectez-vous à la console DAS.
Dans le volet de navigation de gauche, cliquez sur .
Recherchez l'instance cible et cliquez sur son ID pour ouvrir la page des détails de l'instance.
Dans le volet de navigation de gauche, cliquez sur Lock Analysis. Sur la page Lock Analysis, sous Other Lock Analysis, cliquez sur Create Analysis pour lancer une analyse.
Afficher les détails
Cliquez sur l'icône de flèche (
) située à côté d'un résultat de diagnostic pour afficher les détails des attentes de verrous de métadonnées et des blocages transactionnels. Sur la page Other Lock Analysis, après avoir développé un enregistrement de diagnostic, vous pouvez voir les détails des types de verrous, notamment Metadata Lock (2 sessions bloquées) et Transaction Lock (2 sessions bloquées). Cliquez sur View Details à côté d'un type de verrou pour afficher les informations de blocage spécifiques.
Détails des verrous transactionnels
Cliquez sur View Details dans la colonne Actions pour un verrou transactionnel de la liste afin d'afficher deux méthodes de consultation des informations détaillées sur les verrous transactionnels :
Liste : la liste des détails des verrous transactionnels présente les informations sur les transactions bloquées sous forme de tableau, avec des colonnes pour l'ID, l'utilisateur, l'hôte, le nom de la base de données, la commande et la transaction bloquée. Cliquez sur le lien View Details dans la colonne Blocked Transaction pour ouvrir une fenêtre contextuelle affichant les informations détaillées sur la transaction bloquée, y compris l'ID, l'utilisateur, l'hôte, le nom de la base de données, la commande, le temps d'exécution (en secondes), l'état et l'instruction SQL.
Vue : l'onglet View affiche les dépendances des verrous transactionnels sous forme de graphique visuel. Les sessions détenant les verrous apparaissent en haut, avec des connecteurs LOCK WAIT pointant vers les sessions en attente de verrous. Cliquez sur un nœud de session pour développer un panneau de détails affichant ID, Transaction Resolution, Rows Locked by Transaction, Tables Locked by Transaction et Rows Updated by Transaction.
Détails des verrous de métadonnées
Cliquez sur View Details dans la colonne Actions pour un verrou de métadonnées de la liste afin d'afficher une représentation visuelle des détails du verrou de métadonnées. Dans la vue, cliquez sur un bloc de session pour afficher ses informations détaillées ci-dessous. Vous pouvez également tuer les sessions associées depuis cette page. La page de diagnostic des verrous de métadonnées affiche un graphique des relations de verrous avec trois nœuds : Suspicious Session (1) Metadata Lock, Table students DDL Session (1) et Table students Other Session (1). Les flèches étiquetées « Waiting for table metadata lock » indiquent les relations d'attente. Le développement de la session suspecte révèle : ID 197889, utilisateur das, adresse d'hôte partiellement masquée, base de données das, commande Sleep et temps d'exécution de 176 secondes. En bas, trois boutons d'action permettent de résoudre les problèmes de verrous de métadonnées : Kill Selected Session, Kill All Suspicious Sessions et Kill All DDL Statements.
Combiner avec SQL Explorer et l'analyse d'audit
Une session suspecte en état Sleep peut ne pas afficher d'informations SQL car elle a démarré une transaction et exécuté des instructions SQL, mais n'a pas encore effectué de commit ou de rollback. Dans ce cas, cliquez sur SQL Explorer and Audit dans le volet de navigation de gauche de l'instance cible. Sur la page Audit, cliquez sur Enable Advanced Query, saisissez l'ID de thread de la session suspecte et interrogez les instructions SQL exécutées par cette session. Par exemple, une transaction non validée a provoqué des attentes de verrous. Sous l'onglet Audit, développez le formulaire de requête avancée Set Query Conditions, définissez la plage de temps du 4 novembre 2024 14:34:49 au 4 novembre 2024 16:49:49, saisissez 197889 dans Thread ID et cliquez sur Query. La Log List ci-dessous affiche les enregistrements SQL exécutés par ce thread pendant la période spécifiée, y compris update students set name=UUID() where id = 3 (exécuté le 2024-11-04 16:27:22.426) et begin (exécuté le 2024-11-04 16:27:21.322).
Sessions d'instance – Analyse automatique
Procédure
Connectez-vous à la console DAS.
Dans le volet de navigation de gauche, cliquez sur .
Recherchez l'instance cible et cliquez sur son ID pour ouvrir la page des détails de l'instance.
Dans le volet de navigation de gauche, cliquez sur Instance Sessions. Sur la page Session Management, l'autre analyse de verrous s'exécute automatiquement et les résultats apparaissent dans le coin supérieur droit. Sur la page Sessions des détails de l'instance, vérifiez l'état Lock Wait Exists dans la zone de métriques supérieure. S'il indique No, aucune attente de verrou n'existe. Cliquez sur View Details pour analyser davantage les attentes de verrous.
Afficher les détails sur la page Instance Sessions
Sur la page Instance Sessions, si des attentes de verrous existent, cliquez sur View Details pour voir les verrous transactionnels (le cas échéant) et les verrous de métadonnées (le cas échéant) dans un tiroir. Sur la page Sessions de l'instance DAS, la zone de métriques supérieure affiche 6 sessions actives, 0,3 % d'utilisation du CPU, 0,1 % d'utilisation des connexions, 4 sessions anormales et Lock Wait Exists défini sur Yes. Dans la liste des sessions ci-dessous, certaines sessions affichent l'état « Waiting for table metadata lock », indiquant un blocage dû à une attente de verrou. Cliquez sur View Details pour analyser plus avant les relations d'attente de verrous.
Détails des verrous transactionnels
Cliquez sur View Details dans la colonne Actions pour un verrou transactionnel de la liste afin d'afficher deux options de visualisation (Liste et Vue), qui fonctionnent de la même manière que lors de l'analyse à la demande. Pour plus de détails, consultez la section Analyse à la demande – Détails des verrous transactionnels.
Dans la fenêtre contextuelle Lock Wait, l'onglet Transaction Lock affiche un tableau montrant Lock Type et Blocked Sessions.
Détails des verrous de métadonnées
Cliquez sur View Details dans la colonne Actions pour un verrou de métadonnées de la liste afin d'afficher une représentation visuelle des détails du verrou de métadonnées, en utilisant la même méthode que lors de l'analyse à la demande. Pour plus de détails, consultez la section Analyse à la demande – Détails des verrous de métadonnées.
Dans la fenêtre contextuelle Lock Wait, l'onglet Metadata Lock affiche un graphique visuel des relations de détention et d'attente de verrous.
Afficher les détails sur la page Lock Analysis
Sur la page Lock Analysis, cliquez sur l'icône de flèche (
) située à côté d'un résultat de diagnostic pour afficher les statistiques historiques des autres analyses de verrous déclenchées automatiquement sur la page Instance Sessions. La méthode de visualisation correspond à celle de l'analyse à la demande. Pour plus de détails, consultez la section Analyse à la demande – Afficher les détails. Sur la page Other Lock Analysis, sélectionnez une plage de temps, cliquez sur View, recherchez un enregistrement de diagnostic où Lock Found est défini sur Yes, développez-le et affichez les types de verrous (verrou de métadonnées, verrou transactionnel) ainsi que leurs nombres de sessions bloquées. Cliquez sur View Details pour accéder à la page des détails des verrous.