MySQL 8.4 Reference Manual Including MySQL NDB Cluster 8.4
One INFORMATION_SCHEMA
table and two
Performance Schema tables enable you to monitor
InnoDB
transactions and diagnose potential
locking problems:
INNODB_TRX
: This
INFORMATION_SCHEMA
table provides
information about every transaction currently executing inside
InnoDB
, including the transaction state
(for example, whether it is running or waiting for a lock),
when the transaction started, and the particular SQL statement
the transaction is executing.
data_locks
: This Performance
Schema table contains a row for each hold lock and each lock
request that is blocked waiting for a held lock to be
released:
There is one row for each held lock, whatever the state of
the transaction that holds the lock
(INNODB_TRX.TRX_STATE
is
RUNNING
, LOCK WAIT
,
ROLLING BACK
or
COMMITTING
).
Each transaction in InnoDB that is waiting for another
transaction to release a lock
(INNODB_TRX.TRX_STATE
is 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.
A lock request always has a mode that is incompatible with
the mode of the held lock that blocks the request (read
vs. write, shared vs. exclusive).
The blocked transaction cannot proceed until the other
transaction commits or rolls back, thereby releasing the
requested lock. For every blocked transaction,
data_locks
contains one row
that describes each lock the transaction has requested,
and for which it is waiting.
data_lock_waits
: This Performance
Schema table indicates 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. The
REQUESTING_ENGINE_LOCK_ID
value refers to
the lock requested by a transaction, and the
BLOCKING_ENGINE_LOCK_ID
value refers to the
lock (held by another transaction) that prevents the first
transaction from proceeding. For any given blocked
transaction, all rows in
data_lock_waits
have the same
value for REQUESTING_ENGINE_LOCK_ID
and
different values for
BLOCKING_ENGINE_LOCK_ID
.
For more information about the preceding tables, see Section 28.4.28, “The INFORMATION_SCHEMA INNODB_TRX Table”, Section 29.12.13.1, “The data_locks Table”, and Section 29.12.13.2, “The data_lock_waits Table”.