10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册 本手册摘录

27.19.2获取父事件信息

data_locks.表显示了持有和请求的数据锁。这个表的行有THREAD_ID列表示拥有锁的会话的线程ID,以及event_id.列,指示导致锁的Performance Schema事件。元组(THREAD_IDevent_id.)在其他性能架构表中隐式标识父事件的值:

  • 中的父等待事件events_waits_xxx

  • 中的父阶段事件events_stages_xxx

  • 中的父语句事件events_statements_xxx

  • 父事务事件中events_transactions_current.表格

要获取有关父事件的详细信息,请加入THREAD_IDevent_id.在相应的父事件表中具有类似名称的列。该关系基于嵌套的集数据模型,因此联接有几个子句。给定父表和子表由父母孩子,连接是这样的:

where parent.thread_id = child.thread_id / * 1 * / event_id 

加入的应付是:

  1. 父事件在同一主题中。

  2. 子事件在父事件之后开始,因此event_id.值大于父节点的值。

  3. 父事件已完成或仍在运行。

要查找锁信息,data_locks.是包含子事件的表。

data_locks.表只显示了现有的锁,所以这些注意事项适用于包含父事件的表:

等待、阶段和语句事件很快从历史中消失。如果一个很久以前执行的语句获得了一个锁,但它仍然处于一个打开的事务中,那么可能无法找到该语句,但可以找到该事务。

这就是为什么嵌套集数据模型更好地用于定位父事件的原因。在父/子关系中的链接之后(数据锁定 - >父等候 - >父阶段 - >父事务)在从历史表中已消失中间节点时不起作用。

以下方案说明了如何查找拍摄锁定的语句的父事务:

会话:

[1]开始交易;[2] SELECT * FROM t1 WHERE pk = 1;[3] SELECT 'Hello, world';

会议B:

从performence_schema.events_transactions_current选择...作为父inner joints_current作为parent.thread_id = child.thread_id和parent.event_id 

会话B的查询应该将语句[2]显示为在记录上拥有数据锁定pk = 1

如果会话A执行更多语句,[2]将淡出历史表。

无论执行了多少语句、阶段或等待,查询都应该显示在[1]中开始的事务。

要查看更多数据,还可以使用events_xxx_history_long.表(事务除外),假设没有其他查询在服务器中运行(以便保存历史)。