The INNODB_LOCKS
table provides information about each lock that an InnoDB
transaction has requested but not yet acquired, and each lock that a transaction holds that is blocking another transaction.
This table is deprecated and is removed as of MySQL 8.0.1. Use the Performance Schema data_locks
table instead. See Section 27.12.13.1, “The data_locks Table”.
Differences between INNODB_LOCKS
and data_locks
:
If a transaction holds a lock, INNODB_LOCKS
displays the lock only if another transaction is waiting for it. data_locks
displays the lock regardless of whether any transaction is waiting for it.
The data_locks
table has no columns corresponding to LOCK_SPACE
, LOCK_PAGE
, or LOCK_REC
.
The INNODB_LOCKS
table requires the global PROCESS
privilege. The data_locks
table requires the usual Performance Schema privilege of SELECT
on the table to be selected from.
The following table shows the mapping from INNODB_LOCKS
columns to data_locks
columns. Use this information to migrate applications from one table to the other.
Table 26.7 Mapping from INNODB_LOCKS to data_locks Columns
INNODB_LOCKS Column | data_locks Column |
---|---|
LOCK_ID | ENGINE_LOCK_ID |
LOCK_TRX_ID | ENGINE_TRANSACTION_ID |
LOCK_MODE | LOCK_MODE |
LOCK_TYPE | LOCK_TYPE |
LOCK_TABLE (combined schema/table names) | OBJECT_SCHEMA (schema name),
OBJECT_NAME (table name) |
LOCK_INDEX | INDEX_NAME |
LOCK_SPACE | None |
LOCK_PAGE | None |
LOCK_REC | None |
LOCK_DATA | LOCK_DATA |