Afficher les verrous bloquants (data_lock_waits)
MySQLSessionCommande
SELECT r.trx_id AS waiting_trx, r.trx_mysql_thread_id AS waiting_thread, LEFT(r.trx_query,80) AS waiting_query, b.trx_id AS blocking_trx, b.trx_mysql_thread_id AS blocking_thread, LEFT(b.trx_query,80) AS blocking_query FROM performance_schema.data_lock_waits w JOIN information_schema.innodb_trx r ON r.trx_id = w.requesting_engine_transaction_id JOIN information_schema.innodb_trx b ON b.trx_id = w.blocking_engine_transaction_id;Ce que fait la commande
Indique quelle transaction est bloquée par laquelle, avec les requêtes et identifiants de threads associés.
Quand l'utiliser
Pour diagnostiquer les attentes de verrous et les ralentissements causés par des interblocages (deadlocks).
Attention
performance_schema.data_lock_waits est arrivé dans MySQL 8.0 ; les versions plus anciennes utilisent information_schema.innodb_lock_waits. Pour arrêter le thread bloquant, utilisez KILL blocking_thread;.