其他锁分析

更新时间:
复制 MD 格式

本文介绍如何使用DAS锁分析功能对数据库进行元数据锁等待分析和事务阻塞分析。

说明

文中所示图片中的数据为测试用例数据,实际使用过程中,请以实际数据参数为准,包括线程ID、SQL语句等。

前提条件

锁类型

  • 元数据锁分析

    • 分析数据:根据information_schema.processlist等的数据,推导锁等待关系,并生成相应的关系图。

  • 事务阻塞分析

    重要

    事务阻塞分析功能不支持PolarDB MySQL版 5.6实例。

    • 分析数据:根据information_schema.processlistinformation_schema.innodb_trx,以及以下表中数据,分析事务阻塞关系,并生成相应的关系图。

      • RDS MySQL 5.6、5.7:information_schema.innodb_lock_waits

      • PolarDB MySQL 5.7:information_schema.innodb_lock_waits

      • RDS MySQLPolarDB MySQL 8.0:performance_schema.data_lock_waits

    • 参数设置:对于RDS MySQL 8.0PolarDB MySQL版 8.0实例,需要开启performance_schema参数。修改数据库实例参数:

触发方式

锁分析-触发式分析

创建分析

  1. 登录DAS控制台

  2. 在左侧导航栏中,单击智能运维中心 > 实例监控

  3. 找到目标实例,单击实例ID,进入目标实例详情页。

  4. 在左侧导航栏中,单击锁分析,在锁分析页面中其他锁分析项下,点击创建分析,发起其他锁分析。

查看详情

单击诊断结果前的image可以查看元数据锁等待和事务阻塞分析相关信息。在其他锁分析页面,展开一条诊断记录后,可查看锁类型详情,包括元数据锁(被阻塞会话数 2)和事务锁(被阻塞会话数 2)。单击对应锁类型右侧的查看详情可查看具体阻塞信息。

事务锁详情

点击列表中事务锁操作列的查看详情,会显示对应事务锁详细信息的两种查看方式:

  • 列表:在事务锁详情列表可以查看被阻塞事务的详细信息。列表:以表格形式展示事务锁详情,包含ID、用户、主机、数据库名、命令、被阻塞的事务等列。单击被阻塞的事务列的查看详情链接,弹窗展示被阻塞事务的详细信息,包含ID、用户、主机、数据库名、命令、执行时间(秒)、状态和SQL等字段。

  • 视图:以事务等待关系可视化的形式展示锁详情,点击对应的会话图块可以在下方查看对应会话的详细信息。视图:在视图页签中以图形方式展示事务锁依赖关系,持有锁的会话节点位于顶部,通过LOCK WAIT连线指向等待锁的会话。单击会话节点可展开详情面板,查看ID事务状态事务锁定行数事务锁定表数量事务更新行数等信息。

元数据锁详情

点击列表中元数据锁操作列的查看详情,会显示对应元数据锁详细信息的视图。在视图中,点击对应的会话图块可以在下方查看对应会话的详细信息,同时支持KILL相关会话的操作。元数据锁诊断页面展示锁关系图,包含可疑会话(1) Metadata Lockstudents DDL会话(1)students 其他会话(1)三个节点,箭头标注"Waiting for table metadata lock"表示等待关系。展开可疑会话详情:ID197889,用户为das,主机地址部分脱敏,数据库为das,命令为Sleep,执行时间176秒。底部提供结束选中会话结束全部可疑会话结束全部DDL语句三个操作按钮用于处理元数据锁问题。

结合SQL洞察和审计分析

可疑会话处于Sleep状态没有SQL信息,可能是该会话开启了事务,相关SQL已经执行结束,但事务未提交或者回滚,此时可以在目标实例左侧导航栏中,单击SQL洞察和审计,在审计页面点击开启高级查询,填入可疑会话的线程ID,查询分析相关会话执行过的SQL情况。如示例中的事务未提交,导致锁等待。在审计页签下,展开设置查询条件高级查询表单,设置时间范围为 2024114日 14:34:49 至 2024114日 16:49:49,在线程ID中填入 197889,单击查询按钮。下方日志列表中展示该线程在指定时间段内执行的SQL记录,包括 update students set name=UUID() where id = 3(执行时间 2024-11-04 16:27:22.426)和 begin(执行时间 2024-11-04 16:27:21.322)。

实例会话-自动式分析

操作步骤

  1. 登录DAS控制台

  2. 在左侧导航栏中,单击智能运维中心 > 实例监控

  3. 找到目标实例,单击实例ID,进入目标实例详情页。

  4. 在左侧导航栏中,单击实例会话,在会话管理页面中会自动触发其他锁分析,分析的结果会显示在页面右上角。在实例详情页的会话页面,查看顶部指标区中的是否存在锁等待状态,当前显示为,表示不存在锁等待。可单击查看详情进一步分析锁等待情况。

实例会话页面查看详情

实例会话中,当有锁等待时,点击查看详情,在抽屉页可以分别查看事务锁(如有)、元数据锁(如有)。在DAS实例会话页面,顶部指标区显示活跃会话6、CPU使用率0.3%、连接使用率0.1%、异常4,是否存在锁等待显示为。下方会话列表中可见部分会话状态为Waiting for table metadata lock,表明存在锁等待阻塞。单击查看详情可进一步分析锁等待关系。

事务锁详情

点击事务锁列表中操作列的查看详情,可以查看对应事务锁详细信息的两种查看方式(列表、视图),查看方式与锁分析-触发式分析中一致,请参见触发式分析-事务锁详情

锁等待 弹窗的 事务锁 页签中,表格展示 锁类型被阻塞会话数 信息。

元数据锁详情

点击元数据锁列表中操作列的查看详情,可以查看对应元数据锁详细信息的视图,查看方式与锁分析-触发式分析中一致,详情请参见触发式分析-元数据锁详情

锁等待 弹窗的 元数据锁 页签中,视图展示锁持有与等待关系。

锁分析页面查看详情

在锁分析页面,单击诊断结果前的image可以查看到历史在实例会话页面自动发起的其他锁分析统计信息。对应的查看方式与锁分析-触发式分析中一致,请参见触发式分析-查看详情。在其他锁分析页面,选择时间范围后单击查看,在诊断列表中找到发现锁的记录并展开,可查看锁类型(元数据锁、事务锁)及对应的被阻塞会话数,单击查看详情进入锁详情页面。

相关文档