文档首页
MySQL 9.0 参考手册
相关文档 下载此手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


29.12.13.2 data_lock_waits 表

The data_lock_waits 表实现了一个多对多关系,显示 data_locks 表中的哪些数据锁请求被 data_locks 表中的哪些已持有的数据锁阻塞。 data_locks 中的已持有锁仅在阻塞某些锁请求时才会出现在 data_lock_waits 中。

此信息使您能够了解会话之间的数据锁依赖关系。 该表不仅公开了会话或事务在等待哪个锁,还公开了当前持有该锁的会话或事务。

示例数据锁等待信息

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

与大多数 Performance Schema 数据收集不同,没有用于控制是否收集数据锁信息的仪器,也没有用于控制数据锁表大小的系统变量。 Performance Schema 收集服务器中已有的信息,因此没有内存或 CPU 开销来生成此信息,也不需要控制其收集的参数。

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

由于 data_lock_waits 表中的列与 data_locks 表中的列类似,因此此处对列描述进行了简化。 有关更详细的列描述,请参阅 第 29.12.13.1 节,“data_locks 表”

The 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

    在请求锁的会话中导致锁请求的 Performance Schema 事件。

  • 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

    在持有阻塞锁的会话中导致阻塞锁的 Performance Schema 事件。

  • BLOCKING_OBJECT_INSTANCE_BEGIN

    阻塞锁在内存中的地址。

The 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 表。