死锁分析

本文介绍如何使用DAS锁分析功能对数据库进行死锁分析,包括最近死锁分析和全量死锁分析。

说明

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

前提条件

  • 目标数据库引擎为:

    • 最近死锁分析

      • RDS MySQL

      • 自建MySQL

      • PolarDB MySQL版

      • PolarDB-X 2.0

    • 全量死锁分析

      • RDS MySQL

      • PolarDB MySQL版

  • 目标数据库实例已接入DAS,并且接入状态显示为接入正常,接入方法详情请参见接入数据库实例

  • 已开通DAS经济版或DAS企业版。

    重要

最近死锁分析

  • 参数设置:实例需开启innodb_deadlock_detect参数。

  • 分析数据:基于SHOW ENGINE INNODB STATUS返回的最近一次死锁日志进行分析。

重要

如果发生过多次死锁,触发分析时只能分析最近一次死锁,然后保留本次分析得到的死锁相关数据。

操作步骤

  1. 登录DAS控制台

  2. 在左侧导航栏中,单击实例监控

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

  4. 在左侧导航栏中,单击锁分析,在锁分析页面中死锁分析项选择最近死锁分析页签。

  5. 点击创建分析,发起最近死锁诊断。

    image.png

查看详情

  1. 选择时间段,查看该时间段内曾经触发过的死锁诊断任务结果。

  2. 点击最近死锁分析中诊断任务列表详情列中的查看详情image.png

  3. 弹出的抽屉页会显示对应死锁详细信息的三种查看方式:

    • 视图:以死锁关系可视化的形式展示死锁详情,点击对应的事务图块可以在下方查看对应事务的详细信息。image.png

    • 列表:以列表的形式,对比持有锁事务的详细信息。image.png

    • 日志:展示SHOW ENGINE INNODB STATUS返回的原始死锁日志(LATEST DETECTED DEADLOCK)内容。image.png

结合SQL洞察和审计分析

  1. 在目标实例左侧导航栏中,单击SQL洞察和审计,在审计页面点击开启高级查询image.png

  2. 选择包含死锁发生时间的一段时间范围,并填入线程ID(最近死锁分析中的Thread id),查询该事务执行过的SQL内容。

    1. 如上述示例中的事务1image.png

    2. 上述示例中的事务2(已回滚)image.png

全量死锁分析

  • 参数设置:实例需开启innodb_deadlock_detectinnodb_print_all_deadlocks参数。RDS MySQL实例需将log_error_verbosity参数值设置为3。

  • 分析数据:每小时解析实例错误日志中打印的死锁信息,统计死锁数量趋势以及各个死锁的详细信息。

  • 冷却时间:当实例开启DAS经济版或DAS企业版,识别到未开启所需参数时,会冷却12小时不进行分析。如果用户在冷却时间内开启了所需参数,也将在冷却时间后再次调度分析任务。例如:

    • 实例11点12分的分析任务检测到参数未开启,将进行12小时的定时任务冷却,23点12分后全量死锁分析将再次调度该实例定时任务,如果实例参数仍未开启,将继续进行12小时的定时任务冷却;如果实例在23点12分之前开启了参数,在23点12分后将解除冷却,定时任务将每小时进行分析,直到实例关闭参数或关闭DAS经济版或DAS企业版。

重要

不支持分析包含“TOO DEEP OR LONG SEARCH IN THE LOCK TABLE WAITS-FOR GRAPH, WE WILL ROLL BACK FOLLOWING TRANSACTION”描述的死锁。

操作步骤

  1. 登录DAS控制台

  2. 在左侧导航栏中,单击实例监控

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

  4. 在左侧导航栏中,单击锁分析,在锁分析页面中死锁分析项选择全量死锁分析页签。

  5. 全量死锁分析每小时自动分析实例错误日志中打印的死锁日志,统计死锁数量并绘制为页面上方的死锁变化趋势图。选择时间段,查看该时间段内的死锁变化趋势。

    image.png

查看详情

  1. 点击全量死锁分析中死锁列表详情列的查看详情

    image.png

  2. 弹出的抽屉页会显示对应死锁详细信息的三种查看方式(视图、列表、日志),其中,日志内容为死锁相关的错误日志。视图、列表展示形式与最近死锁分析一致,此处不再赘述,详情请参见最近死锁分析-查看详情image

结合SQL洞察和审计分析

与最近死锁分析一致,此处不再赘述,详情请参见最近死锁分析-结合SQL洞察和审计分析

相关文档推荐