SQL请求行为识别

更新时间:
复制为 MD 格式

随着业务量的增长,SQL请求数量也相应增加,从而导致数据库监控指标上升。一些SQL请求具有相似的特征,通过全量SQL功能很难逐条定位问题SQL。数据库自治服务DAS(Database Autonomy Service)的SQL请求行为识别功能利用机器学习对SQL进行聚类筛选,使您能够快速、高效、准确地定位异常SQL。

前提条件

  • 实例版本为:

    • RDS MySQL 5.6、5.7、8.0

    • MyBase MySQL 5.6、5.7、8.0

  • 目标实例已开启DAS自治服务,详情请参见自治中心

  • 目标实例已开通DAS企业版,详情请参见开通企业版

场景示例

场景:当您的业务请求有大量SQL模板,不管通过哪种排序,都很难快速定位到异常SQL请求。这些SQL请求可分为不同类别。在SQL性能分析页面的慢查询列表中,可查看各SQL模板的平均执行时间占比执行次数平均扫描行数平均返回行数等指标及执行趋势图。重点关注趋势图中执行时间突然升高的异常SQL(如平均执行时间超过 4 秒的慢查询),单击对应行右侧的优化按钮进行诊断优化。

解决方案:使用SQL请求行为识别功能通过以下两个方案帮助您快速定位性能相关的问题:

  • 方案一:当业务存在大量请求时,DAS能够按照SQL请求行为对SQL模板进行分类。例如面对上百页的SQL模板,如果通过排序很难一个个去筛选问题SQL,此时可以使用SQL请求行为识别,通过DAS后端算法找出相似的行为图像,帮助您将大量的SQL模板聚类,由此提高问题定位的效率。SQL 请求分析页面展示按 cpu_usage相关度 排序的数据表格,包含 聚合图像(趋势图)、SQL模板数平均耗时执行次数比例扫描行数耗时比例 等列,共6行记录,每行右侧有 查看 操作链接。

  • 方案二:SQL请求行为识别功能根据指标的异常时间段来排查与异常指标相关的问题。下图显示了异常指标的趋势,在该图中,CPU使用率、活动会话的峰值时间与SQL模板类别的请求突然减少的时间相同,这表明当活动会话激增时,这些类别的SQL请求会被阻塞。277

操作步骤

  1. 登录DAS控制台

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

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

  4. 在左侧导航栏中,单击自治中心

  5. 选择时间范围,查看选定时间范围内发生过的各类事件。

    监控指标时序异常检测(时序异常检测)事件为例,单击详情,查看该事件的详细情况。

    1. 单击异常快照页签,在异常指标分析区域,查看异常原因及相关的指标变化情况。

      image

    2. 性能指标区域,选择不同异常指标类别,查看该类指标的异常分布情况。

    3. SQL请求行为分析区域,选择需要分析的监控指标和其关联指标进行分析。

      DAS将使用耗时排名前1000SQL模板进行数据分析。由于此功能依赖DAS企业版的全量SQL数据,根据数据量和不同用户的计算时间差异,分析时间通常需要1~5分钟。

    4. 查看分析结果。

      通过指标相关度,可以查看与异常指标关联度最高的SQL指标,以及相关SQL模板及其统计信息。

      说明

      指标相关度取值越接近1.00,表示与异常指标的关联度越高。

相关说明

通过SQL请求行为识别,您可以观察到相似的SQL模板的波动趋势。

  • 尽管此SQL请求出现了短暂的突增,但突增波动的时间点和指标的突增并不相符,因此这类模板并不是与指标最相关的,如下图所示。SQL请求行为识别结果以表格形式展示,包含执行次数扫描行数两个Tab页签。表格按聚合类别(如count_type_1count_type_4)列出各类SQL模板的SQL模板数平均耗时执行次数比例CPU用法相似度IOPS用法相似性扫描行数耗时比例等指标,可单击查看进入详情。s

  • 下图表展示了异常指标的趋势。在图中可以看到,CPU使用率和活跃会话的峰值时间与SQL模板类别的请求突然减少的时间相同。这表明在活跃会话激增时,此类SQL请求可能会受到阻塞。a