Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


29.12.13.2 数据锁等待表

The data_lock_waits table implements a many-到-多关系,显示哪些数据锁请求在 data_locks 表中被哪些持有数据锁的会话阻塞。表中显示在 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节,“The data_locks Table”

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

    在请求锁定的事务中引发性能方案事件的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

    在持有阻塞锁定的事务中引发性能方案事件的ID。

  • BLOCKING_OBJECT_INSTANCE_BEGIN

    内存中的阻塞锁定的地址开始处。

data_lock_waits 表具有以下索引:

  • 在 (REQUESTING_ENGINE_LOCK_ID, ENGINE) 上的索引

  • 在 (BLOCKING_ENGINE_LOCK_ID, ENGINE) 上的索引

  • 在表上创建索引(请求事务ID引擎

  • 在表上创建索引(阻塞事务ID引擎

  • 在表上创建索引(请求线程ID请求事件ID

  • 在表上创建索引(阻塞线程ID阻塞事件ID

TRUNCATE TABLEdata_lock_waits 表不允许。