Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

29.12.13.2 数据锁等待表

data_lock_waits 表实现了数据锁请求在 data_locks 表中的多对多关系,显示哪些数据锁请求被哪些持有的数据锁阻塞。

这些信息使您能够理解会话之间的数据锁依赖关系。该表不仅显示哪个锁一个会话或事务正在等待,还显示哪个会话或事务当前持有该锁。

示例数据锁等待信息:

mysql> SELECT * FROM performance_schema.data_lock_waits\G
*************************** 1. row ***************************
                          ENGINE: INNODB
       REQUESTING_ENGINE_LOCK_ID: 140211201964816:2:4:2:140211086465800
REQUESTING_ENGINE_TRANSACTION_ID: 1555
            REQUESTING_THREAD_ID: 47
             REQUESTING_EVENT_ID: 5
REQUESTING_OBJECT_INSTANCE_BEGIN: 140211086465800
         BLOCKING_ENGINE_LOCK_ID: 140211201963888:2:4:2:140211086459880
  BLOCKING_ENGINE_TRANSACTION_ID: 1554
              BLOCKING_THREAD_ID: 46
               BLOCKING_EVENT_ID: 12
  BLOCKING_OBJECT_INSTANCE_BEGIN: 140211086459880

与大多数性能模式数据收集不同,没有仪器来控制数据锁信息的收集或系统变量来控制数据锁表的大小。性能模式收集已经在服务器中可用的信息,因此不需要控制其收集的内存或 CPU 开销或需要参数来控制其收集。

使用 data_lock_waits 表来帮助诊断在高并发负载期间出现的性能问题。对于 InnoDB,请参阅 第 17.15.2 节,“InnoDB INFORMATION_SCHEMA 事务和锁定信息” 中的讨论。

因为 data_lock_waits 表的列与 data_locks 表的列相似,因此这里的列描述被缩短。有关详细的列描述,请参阅 第 29.12.13.1 节,“数据锁表”

data_lock_waits 表具有以下列:

  • ENGINE

    请求锁的存储引擎。

  • REQUESTING_ENGINE_LOCK_ID

    存储引擎请求的锁 ID。要获取锁的详细信息,请将该列与 data_locks 表的 ENGINE_LOCK_ID 列连接。

  • REQUESTING_ENGINE_TRANSACTION_ID

    请求锁的事务的存储引擎内部 ID。

  • REQUESTING_THREAD_ID

    请求锁的会话的线程 ID。

  • REQUESTING_EVENT_ID

    在请求锁的会话中引起锁请求的性能模式事件。

  • REQUESTING_OBJECT_INSTANCE_BEGIN

    请求锁的内存地址。

  • BLOCKING_ENGINE_LOCK_ID

    阻塞锁的 ID。要获取锁的详细信息,请将该列与 data_locks 表的 ENGINE_LOCK_ID 列连接。

  • BLOCKING_ENGINE_TRANSACTION_ID

    持有阻塞锁的事务的存储引擎内部 ID。

  • BLOCKING_THREAD_ID

    持有阻塞锁的会话的线程 ID。

  • BLOCKING_EVENT_ID

    在持有阻塞锁的会话中引起阻塞锁的性能模式事件。

  • BLOCKING_OBJECT_INSTANCE_BEGIN

    阻塞锁的内存地址。

data_lock_waits 表具有以下索引:

  • 在 (REQUESTING_ENGINE_LOCK_ID, ENGINE) 上的索引

  • 在 (BLOCKING_ENGINE_LOCK_ID, ENGINE) 上的索引

  • 在 (REQUESTING_ENGINE_TRANSACTION_ID, ENGINE) 上的索引

  • 在 (BLOCKING_ENGINE_TRANSACTION_ID, ENGINE) 上的索引

  • 在 (REQUESTING_THREAD_ID, REQUESTING_EVENT_ID) 上的索引

  • 在 (BLOCKING_THREAD_ID, BLOCKING_EVENT_ID) 上的索引

TRUNCATE TABLE 不允许用于 data_lock_waits 表。