本文介绍如何使用DAS锁分析功能对数据库进行元数据锁等待分析和事务阻塞分析。
文中所示图片中的数据为测试用例数据,实际使用过程中,请以实际数据参数为准,包括线程ID、SQL语句等。
前提条件
目标数据库引擎为:
RDS MySQL
PolarDB MySQL版
目标数据库实例已接入DAS,并且接入状态显示为接入正常,接入方法详情请参见接入数据库实例。
已开通DAS经济版或DAS企业版。
重要DAS经济版和DAS企业版目前仅支持部分地域,详情请参见各个版本支持的数据库和地域。
开通DAS经济版或企业版请参见开通经济版和企业版。
锁类型
元数据锁分析
分析数据:根据
information_schema.processlist
等的数据,推导锁等待关系,并生成相应的关系图。
事务阻塞分析
重要事务阻塞分析功能不支持PolarDB MySQL版 5.6实例。
分析数据:根据
information_schema.processlist
,information_schema.innodb_trx
,以及以下表中数据,分析事务阻塞关系,并生成相应的关系图。RDS MySQL 5.6、5.7:
information_schema.innodb_lock_waits
PolarDB MySQL 5.7:
information_schema.innodb_lock_waits
RDS MySQL和PolarDB MySQL 8.0:
performance_schema.data_lock_waits
参数设置:对于RDS MySQL 8.0和PolarDB MySQL版 8.0实例,需要开启
performance_schema
参数。修改数据库实例参数:RDS MySQL请参见设置实例参数。
PolarDB MySQL版请参见设置集群参数和节点参数。
触发方式
锁分析-触发式分析:在锁分析页面,可以手动触发其他锁分析。
实例会话-自动式分析:在刷新实例会话页面时,会自动触发其他锁分析。
锁分析-触发式分析
创建分析
登录DAS控制台。
在左侧导航栏中,单击实例监控。
找到目标实例,单击实例ID,进入目标实例详情页。
在左侧导航栏中,单击锁分析,在锁分析页面中其他锁分析项下,点击创建分析,发起其他锁分析。
查看详情
单击诊断结果前的可以查看元数据锁等待和事务阻塞分析相关信息。
事务锁详情
点击列表中事务锁操作列的查看详情,会显示对应事务锁详细信息的两种查看方式:
列表:在事务锁详情列表可以查看被阻塞事务的详细信息。
视图:以事务等待关系可视化的形式展示锁详情,点击对应的会话图块可以在下方查看对应会话的详细信息。
元数据锁详情
点击列表中元数据锁操作列的查看详情,会显示对应元数据锁详细信息的视图。在视图中,点击对应的会话图块可以在下方查看对应会话的详细信息,同时支持KILL相关会话的操作。
结合SQL洞察和审计分析
可疑会话处于Sleep状态没有SQL信息,可能是该会话开启了事务,相关SQL已经执行结束,但事务未提交或者回滚,此时可以在目标实例左侧导航栏中,单击SQL洞察和审计,在审计页面点击开启高级查询,填入可疑会话的线程ID,查询分析相关会话执行过的SQL情况。如示例中的事务未提交,导致锁等待。
实例会话-自动式分析
操作步骤
登录DAS控制台。
在左侧导航栏中,单击实例监控。
找到目标实例,单击实例ID,进入目标实例详情页。
在左侧导航栏中,单击实例会话,在会话管理页面中会自动触发其他锁分析,分析的结果会显示在页面右上角。
实例会话页面查看详情
在实例会话中,当有锁等待时,点击查看详情,在抽屉页可以分别查看事务锁(如有)、元数据锁(如有)。
事务锁详情
点击事务锁列表中操作列的查看详情,可以查看对应事务锁详细信息的两种查看方式(列表、视图),查看方式与锁分析-触发式分析中一致,请参见触发式分析-事务锁详情。
元数据锁详情
点击元数据锁列表中操作列的查看详情,可以查看对应元数据锁详细信息的视图,查看方式与锁分析-触发式分析中一致,详情请参见触发式分析-元数据锁详情。
锁分析页面查看详情
在锁分析页面,单击诊断结果前的可以查看到历史在实例会话页面自动发起的其他锁分析统计信息。对应的查看方式与锁分析-触发式分析中一致,请参见触发式分析-查看详情。