Documentation Home
MySQL 8.0 参考手册  / 第 26 章 INFORMATION_SCHEMA 表  / 26.4 INFORMATION_SCHEMA InnoDB 表  /  24.4.14 INFORMATION_SCHEMA INNODB_LOCKS 表

24.4.14 INFORMATION_SCHEMA INNODB_LOCKS 表

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

笔记

从 MySQL 5.7.14 开始不推荐使用此表,并在 MySQL 8.0 中删除。

INNODB_LOCKS表有以下列:

  • LOCK_ID

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

  • LOCK_TRX_ID

    持有锁的事务的 ID。要获取有关交易的详细信息,请将此列与表的列连接 TRX_ID起来 INNODB_TRX

  • LOCK_MODE

    如何请求锁。允许的锁定模式描述符是 SXISIXGAPAUTO_INCUNKNOWN。锁定模式描述符可以结合使用来标识特定的锁定模式。有关InnoDB锁定模式的信息,请参阅 第 14.7.1 节,“InnoDB 锁定”

  • LOCK_TYPE

    锁的类型。允许的值 RECORD用于行级锁, TABLE用于表级锁。

  • LOCK_TABLE

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

  • LOCK_INDEX

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

  • LOCK_SPACE

    锁定记录的表空间 ID,如果 LOCK_TYPERECORD; 否则NULL

  • LOCK_PAGE

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

  • LOCK_REC

    页面内锁定记录的堆号,如果 LOCK_TYPERECORD; 否则NULL

  • LOCK_DATA

    与锁关联的数据(如果有)。如果 是 则显示一个值LOCK_TYPERECORD否则该值为NULL。对于放置在主键索引上的锁,显示锁定记录的主键值。对于放置在唯一二级索引上的锁,显示锁定记录的二级索引值。如果二级索引不唯一,二级索引值将附加主键值显示。如果没有主键,则根据聚簇索引使用规则LOCK_DATA显示选定唯一索引的键值或唯一 内部行 ID 号(请参阅InnoDBInnoDB第 14.6.2.1 节,“聚簇索引和二级索引”)。 LOCK_DATA报告在 supremum 伪记录上获取的锁的supremum pseudo-record。如果包含锁定记录的页面不在缓冲池中,因为它是在持有锁时写入磁盘的,InnoDB则不会从磁盘中获取该页面。相反,LOCK_DATA报告 NULL

例子

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

笔记