Contains information about every transaction currently executing inside InnoDB, including whether the transaction is waiting for a lock, when the transaction started, and the particular SQL statement the transaction is executing.
For the table definition, see Table 21.3, “INNODB_TRX Columns”.
Each transaction in InnoDB that is waiting for another
transaction to release a lock
INNODB_TRX.TRX_STATE='LOCK WAIT') is
blocked by exactly one “blocking lock request”.
That blocking lock request is for a row or table lock held by
another transaction in an incompatible mode. The waiting or
blocked transaction cannot proceed until the other transaction
commits or rolls back, thereby releasing the requested lock.
For every blocked transaction,
INNODB_LOCKS contains one row
that describes each lock the transaction has requested, and
for which it is waiting.
INNODB_LOCKS also contains one
row for each lock that is blocking another transaction,
whatever the state of the transaction that holds the lock
'ROLLING BACK' or
'COMMITTING'). The lock that is blocking a
transaction is always held in a mode (read vs. write, shared
vs. exclusive) incompatible with the mode of requested lock.
For the table definition, see Table 21.4, “INNODB_LOCKS Columns”.
Using this table, you can tell which transactions are waiting
for a given lock, or for which lock a given transaction is
waiting. This table contains one or more rows for each
blocked transaction, indicating the lock
it has requested and any locks that are blocking that request.
REQUESTED_LOCK_ID refers to the lock
that a transaction is requesting, and the
BLOCKING_LOCK_ID refers to the lock (held
by another transaction) that is preventing the first
transaction from proceeding. For any given blocked
transaction, all rows in
INNODB_LOCK_WAITS have the same
REQUESTED_LOCK_ID and different
For the table definition, see Table 21.5, “INNODB_LOCK_WAITS Columns”.