127 votes

Comment trouver la transaction à l'origine de l'état "En attente du verrouillage des métadonnées de la table"?

J'essaie d'exécuter des DDL sur une table et SHOW PROCESSLIST génère un message "En attente du verrouillage des métadonnées de la table".

Comment savoir quelle transaction n'est pas encore clôturée?

J'utilise MySQL v5.5.24.

174voto

Joddy Points 820
SHOW ENGINE INNODB STATUS \G

Recherchez la Section -

 TRANSACTIONS

Nous pouvons utiliser INFORMATION_SCHEMA Tables.

Requêtes Utiles -

De vérifier toutes les serrures les transactions sont en attente pour -

 SELECT * FROM INNODB_LOCK_WAITS

Une liste de bloquer les transactions

SELECT * 
FROM INNODB_LOCKS 
WHERE LOCK_TRX_ID IN (SELECT BLOCKING_TRX_ID FROM INNODB_LOCK_WAITS)

OU

SELECT INNODB_LOCKS.* 
FROM INNODB_LOCKS
JOIN INNODB_LOCK_WAITS
  ON (INNODB_LOCKS.LOCK_TRX_ID = INNODB_LOCK_WAITS.BLOCKING_TRX_ID)

Une Liste de serrures sur perticular table:

SELECT * FROM INNODB_LOCKS 
WHERE LOCK_TABLE = db_name.table_name

Une liste des opérations en attente pour les serrures:

SELECT TRX_ID, TRX_REQUESTED_LOCK_ID, TRX_MYSQL_THREAD_ID, TRX_QUERY
FROM INNODB_TRX
WHERE TRX_STATE = 'LOCK WAIT'

De référence - MySQL Dépannage: Que Faire Lorsque les Requêtes Ne fonctionnent pas, le Chapitre 6 - Page 96.

65voto

Si vous ne trouvez pas le processus de verrouillage de la table (cause, il est alreay morts), il peut être un fil toujours le nettoyage comme ceci

la section de la TRANSACTION de

show engine innodb status

à la fin

---TRANSACTION 1135701157, ACTIVE 6768 sec
MySQL thread id 5208136, OS thread handle 0x7f2982e91700, query id 882213399 xxxIPxxx 82.235.36.49 my_user cleaning up

comme mentionné dans un commentaire dans Claire de blocage de transaction?

vous pouvez essayer de tuer le thread de transaction directement, ici avec

 KILL 5208136

a travaillé pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X