Maison >base de données >tutoriel mysql >Comment identifier la transaction coupable à l'origine de « l'attente du verrouillage des métadonnées de table » dans MySQL ?

Comment identifier la transaction coupable à l'origine de « l'attente du verrouillage des métadonnées de table » dans MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-30 17:23:25970parcourir

How to Identify the Culprit Transaction Causing

Enquête sur la source du message "En attente du verrouillage des métadonnées de la table"

Dans MySQL, rencontre d'un message "En attente du verrouillage des métadonnées de la table" pendant DDL les requêtes peuvent être frustrantes. Cet état indique souvent qu'une autre transaction détient un verrou sur la table affectée, empêchant la transaction en cours de se poursuivre.

Identifier la transaction coupable

Pour identifier quelle transaction est responsable de cette retenue, pensez à utiliser les approches suivantes :

1. MySQL v5.5.24 et versions antérieures

Pour les versions MySQL antérieures à 5.7.3, exécutez la commande suivante :

SHOW ENGINE INNODB STATUS \G

Inspectez la section "TRANSACTIONS" pour identifier la transaction incriminée.

2. Tableaux de schéma d'information

Tous les verrous en attente :

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;

Transactions bloquantes :

SELECT *
FROM INFORMATION_SCHEMA.INNODB_LOCKS
WHERE LOCK_TRX_ID IN (SELECT BLOCKING_TRX_ID FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS);

Verrous sur une table spécifique :

SELECT *
FROM INFORMATION_SCHEMA.INNODB_LOCKS
WHERE LOCK_TABLE = db_name.table_name;

Transactions en attente de verrous :

SELECT TRX_ID, TRX_MYSQL_THREAD_ID, TRX_QUERY
FROM INFORMATION_SCHEMA.INNODB_TRX
WHERE TRX_STATE = 'LOCK WAIT';

Référence supplémentaire :

Pour un guide complet sur la résolution de ce problème, reportez-vous à « Dépannage MySQL : que faire lorsque les requêtes ne fonctionnent pas », chapitre 6, page 96.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn