Select
' Blocker ' role,
P.id,
P.user,
Left (P.host, locate (': ', P.host)-1) host,
TX.TRX_ID,
Tx.trx_state,
Tx.trx_started,
Timestampdiff (second, tx.trx_started, Now ()) duration,
Lo.lock_mode,
Lo.lock_type,
Lo.lock_table,
Lo.lock_index,
Tx.trx_query,
Tx.trx_tables_in_use,
Tx.trx_tables_locked,
Tx.trx_rows_locked
From
Information_schema.innodb_trx TX,
Information_schema.innodb_lock_waits LW,
Information_schema.innodb_locks Lo,
Information_schema.processlist P
where
lw.blocking_trx_id = tx.trx_id
and p.id = tx.trx_mysql_thread_id
and lo.lock_trx_id = tx.trx_id
UNION ALL
Select
' Blockee ' role,
P.id,
P.user,
Left (P.host, locate (': ', P.host)-1) host,
TX.TRX_ID,
Tx.trx_state,
Tx.trx_started,
Timestampdiff (second, tx.trx_started, Now ()) duration,
Lo.lock_mode,
Lo.lock_type,
Lo.lock_table,
Lo.lock_index,
Tx.trx_query,
Tx.trx_tables_in_use,
Tx.trx_tables_locked,
Tx.trx_rows_locked
From
Information_schema.innodb_trx TX,
Information_schema.innodb_lock_waits LW,
Information_schema.innodb_locks Lo,
Information_schema.processlist P
where
lw.requesting_trx_id = tx.trx_id
and p.id = tx.trx_mysql_thread_id
and lo.lock_trx_id = tx.trx_id \g
Querying MySQL Lock-pending statements