ブロックしているロックを表示(data_lock_waits)
MySQLセッションコマンド
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;概要
どのトランザクションがどのトランザクションにブロックされているかを、関連するクエリとスレッドIDとともに表示する。
使用する場面
ロック待機とデッドロックによる性能低下を診断するため。
注意
performance_schema.data_lock_waitsはMySQL 8.0で導入された。古いバージョンではinformation_schema.innodb_lock_waitsを使用する。ブロックしているスレッドを停止するにはKILL blocking_thread;を使用する。