The INNODB_LOCKS table contains 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.
Table 21.13 INNODB_LOCKS Columns
| Column name | Description |
|---|---|
LOCK_ID | Unique lock ID number, internal to InnoDB. Treat it
as an opaque string. Although LOCK_ID
currently contains TRX_ID, the format
of the data in LOCK_ID is subject to
change at any time. Do not write applications that parse
the LOCK_ID value. |
LOCK_TRX_ID | ID of the transaction holding the lock. To obtain details about the
transaction, join this column with the
TRX_ID column of the
INNODB_TRX table. |
LOCK_MODE | How the lock is requested. Permitted values are
S[,GAP], X[,GAP],
IS[,GAP], IX[,GAP],
AUTO_INC, and
UNKNOWN. Lock modes other than
AUTO_INC and UNKNOWN
indicate gap locks, if present. For information about
S, X,
IS, IX, and gap
locks, refer to Section 14.5.1, “InnoDB Locking”. |
LOCK_TYPE | The type of lock. Permitted values are RECORD for a
row-level lock, TABLE for a table-level
lock. |
LOCK_TABLE | Name of the table that has been locked or contains locked records. |
LOCK_INDEX | Name of the index, if LOCK_TYPE is
RECORD; otherwise
NULL. |
LOCK_SPACE | Tablespace ID of the locked record, if LOCK_TYPE is
RECORD; otherwise
NULL. |
LOCK_PAGE | Page number of the locked record, if LOCK_TYPE is
RECORD; otherwise
NULL. |
LOCK_REC | Heap number of the locked record within the page, if
LOCK_TYPE is RECORD;
otherwise NULL. |
LOCK_DATA | The data associated with the lock, if any. Values are primary key values
of the locked record if LOCK_TYPE is
RECORD, otherwise
NULL. This column contains the values
of the primary key columns in the locked row, formatted as
a valid SQL string (ready to be copied to SQL statements).
If there is no primary key, LOCK_DATA
is the unique InnoDB internal row ID
number. If a gap lock is taken for key values or ranges
above the largest value in the index,
LOCK_DATA reports supremum
pseudo-record. When the page containing the
locked record is not in the buffer pool (in the case that
it was paged out to disk while the lock was held),
InnoDB does not fetch the page from
disk, to avoid unnecessary disk operations. Instead,
LOCK_DATA is set to
NULL. |
Example:
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS\G
*************************** 1. row ***************************
lock_id: 3723:72:3:2
lock_trx_id: 3723
lock_mode: X
lock_type: RECORD
lock_table: `mysql`.`t`
lock_index: PRIMARY
lock_space: 72
lock_page: 3
lock_rec: 2
lock_data: 1, 9
*************************** 2. row ***************************
lock_id: 3722:72:3:2
lock_trx_id: 3722
lock_mode: S
lock_type: RECORD
lock_table: `mysql`.`t`
lock_index: PRIMARY
lock_space: 72
lock_page: 3
lock_rec: 2
lock_data: 1, 9
Notes:
Use this table to help diagnose performance problems that occur during times of heavy concurrent load. Its contents are updated as described in Section 14.15.2.3, “Persistence and Consistency of InnoDB Transaction and Locking Information”.
Use DESCRIBE or
SHOW COLUMNS to view additional
information about the columns of this table including data
types and default values.
You must have the PROCESS
privilege to query this table.
For usage information, see Section 14.15.2.1, “Using InnoDB Transaction and Locking Information”.