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数据收集不同,没有用于控制是否收集数据锁定信息或用于控制数据锁定表大小的系统变量的工具。性能架构收集服务器中已经可用的信息,因此没有内存或CPU开销来生成此信息,也不需要控制其收集的参数。
使用该data_lock_waits
表可帮助诊断在高并行负载下发生的性能问题。对于InnoDB
,请参见“ InnoDB INFORMATION_SCHEMA事务和锁定信息”中有关此主题的讨论。
由于表中的列与data_lock_waits
表中的列相似data_locks
,因此此处的列描述被缩写。有关更详细的列描述,请参见“ data_locks表”。
该data_lock_waits
表包含以下列:
ENGINE
请求锁定的存储引擎。
REQUESTING_ENGINE_LOCK_ID
存储引擎请求的锁的ID。要获取有关锁的详细信息,请将此列与表的
ENGINE_LOCK_ID
列连接在一起data_locks
。REQUESTING_ENGINE_TRANSACTION_ID
请求锁定的事务的存储引擎内部ID。
REQUESTING_THREAD_ID
请求锁定的会话的线程ID。
REQUESTING_EVENT_ID
在请求锁定的会话中导致锁定请求的Performance Schema事件。
REQUESTING_OBJECT_INSTANCE_BEGIN
请求的锁在内存中的地址。
BLOCKING_ENGINE_LOCK_ID
阻止锁的ID。要获取有关锁的详细信息,请将此列与表的
ENGINE_LOCK_ID
列连接在一起data_locks
。BLOCKING_ENGINE_TRANSACTION_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
表。