24.32.13 INFORMATION_SCHEMA INNODB_LOCKStable

INNODB_LOCKStable 提供有关InnoDB事务已请求但尚未获取的每个锁的信息,以及事务持有的阻止另一个事务的每个锁的信息。

Note

自 MySQL 5.7.14 起不推荐使用此 table,并已在 MySQL 8.0 中删除。

INNODB_LOCKStable 具有以下列:

  • LOCK_ID

InnoDB内部的唯一锁 ID 号。将其视为不透明的字符串。尽管LOCK_ID当前包含TRX_ID,但是LOCK_ID中的数据格式随时可能更改。不要编写解析LOCK_ID值的应用程序。

  • LOCK_TRX_ID

持有锁的事务的 ID。要获取有关 Transaction 的详细信息,请将此列与INNODB_TRXtable 的TRX_ID列连接在一起。

  • LOCK_MODE

如何请求锁定。允许的锁定模式 Descriptors 为SXISIXGAPAUTO_INCUNKNOWN。锁定模式 Descriptors 可以组合使用以标识特定的锁定模式。有关InnoDB锁定模式的信息,请参见第 14.7.1 节“ InnoDB 锁定”

  • LOCK_TYPE

锁的类型。行级锁的允许值为RECORD,table 级锁的允许值为TABLE

  • LOCK_TABLE

已锁定或包含锁定记录的 table 的名称。

  • LOCK_INDEX

索引的名称(如果LOCK_TYPERECORD);否则NULL

  • LOCK_SPACE

锁定记录的 table 空间 ID(如果LOCK_TYPERECORD);否则NULL

  • LOCK_PAGE

锁定记录的页码(如果LOCK_TYPERECORD);否则NULL

  • LOCK_REC

页面中锁定记录的堆号(如果LOCK_TYPERECORD);否则NULL

  • LOCK_DATA

与锁关联的数据(如果有)。如果LOCK_TYPERECORD,则显示一个值,否则为NULL。显示锁定记录的主键值,以 table 示放置在主键索引上的锁。显示了锁定记录的二级索引值,用于放置在唯一二级索引上的锁。如果辅助索引不是唯一的,则显示辅助索引值并附加主键值。如果没有主键,则根据控制InnoDB聚集索引使用的规则(请参见第 14.6.2.1 节“群集索引和二级索引”),LOCK_DATA将显示所选唯一索引的键值或唯一InnoDB内部行 ID 号。 LOCK_DATA报告“最高伪记录”,以获取对最高伪记录的锁定。如果包含锁定记录的页面不在缓冲池中,因为它是在持有锁定时被写入磁盘的,则InnoDB不会从磁盘获取页面。而是LOCK_DATA报告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