文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


29.12.13.2 data_lock_waits 表

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 表”

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

    内存中阻塞锁的地址。

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