DBAtlas · Atlas d'exploitation des bases de données

Afficher les verrous bloquants (data_lock_waits)

MySQLSession

Commande

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;.

Ouvrir dans DBAtlas →

Voir aussi