Fonctionne pour MySql version <5.7.3
SHOW ENGINE INNODB STATUS \G
Recherchez la section -
TRANSACTIONS
Nous pouvons utiliser INFORMATION_SCHEMA Tableaux.
Requêtes utiles
Pour vérifier toutes les transactions de verrous en attente :
USE INFORMATION_SCHEMA;
SELECT * FROM INNODB_LOCK_WAITS;
Une liste des transactions bloquantes :
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 verrous sur une table particulière :
SELECT * FROM INNODB_LOCKS
WHERE LOCK_TABLE = db_name.table_name;
Une liste des transactions en attente de verrouillage :
SELECT TRX_ID, TRX_REQUESTED_LOCK_ID, TRX_MYSQL_THREAD_ID, TRX_QUERY
FROM INNODB_TRX
WHERE TRX_STATE = 'LOCK WAIT';
Référence - Dépannage MySQL :Que faire lorsque les requêtes ne fonctionnent pas , Chapitre 6 - Page 96.