SQL请求行为识别是数据库自治服务DAS的一个功能,它可以帮助您在业务量多的情况下识别异常请求的SQL,提高问题定位的效率。本文将为您介绍SQL请求行为识别的使用场景及设置方法。

前提条件

  • 实例版本为RDS MySQL 5.6、5.7、8.0。
  • 实例开启自治服务。如您未启动自治服务现需开启,请参见自治中心
  • 购买DAS专业版

背景信息

随着您业务量增长,数据库的监控指标的复杂度也会上升,从而出现很多的SQL请求。而且某些SQL请求特征相似,通过全量SQL很难逐条去定位问题SQL。数据库自治服务DAS(Database Autonomy Service)的SQL请求行为识别能够通过机器学习方法进行聚类筛选,为您提供更快速、高效、精准的异常SQL定位服务。

场景示例

场景:当您的业务请求有大量SQL模板,不管通过哪种排序,都很难快速定位到异常SQL请求。如下图所示红框部分和蓝框部分各属于一类问题SQL请求。275

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

  • 方案一:当业务存在大量请求的时候,DAS能够按照SQL请求行为对SQL模板进行分类。例如面对上百页的SQL模板,如果通过排序很难一个个去筛选问题SQL,此时可以使用SQL请求行为识别,通过DAS后端算法找出相似的行为图像,帮助您将大量的SQL模板聚类,由此提高问题定位的效率。222
  • 方案二:SQL请求行为识别功能能根据指标的异常时间段来排查与异常指标相关的问题。CPU指标出现如下图红圈所示的尖刺之后,DAS后端算法会根据SQL请求行为计算和CPU指标的关联度,推荐出与问题指标最相关的SQL请求类别。277

操作步骤

  1. 登录DAS控制台
  2. 单击左侧实例监控
    实例监控
  3. 在实例监控页,单击对应实例名称进入实例控制台,在左侧导航栏单击自治中心。选择时间范围,您可看到该范围内的异常事件优化事件弹性伸缩事件其他
  4. 如下图展示的是IOPS利用率CPU利用率活跃会话三种监控指标。单击序列1标记的黄色区域,然后在下方查看监控指标时序异常检测动态。
    异常事件
    说明 如上图所示,序列2标记区域内各个行所代表的含义如下:
    • 第一行代表时序异常指标的异常程度,异常程度不同颜色也不同,红色、黄色、蓝色根据事件的异常程度依次递减。
    • 第二行代表时序异常检测对应的动态,慢SQL优化事件。
  5. 单击异常检测区域,弹出异常检测下拉列表,单击异常发现页签,通过查询异常分析部分内容获取异常原因。通过异常指标部分选择具体类别指标,查看该类指标的异常指标时间分布情况。
    异常
    说明 如上图所示,自动锚点后小红点代表异常程度的最高级别,红色、黄色、蓝色三种颜色根据指标的异常程度依次递减。
  6. 异常分析部分,单击对应异常原因右侧相关指标列的查看相关SQL,跳转至SQL请求行为分析页面,选择监控指标被关联的SQL指标的参数,单击分析
    15
    说明 后台会分析耗时占比排名前1000的SQL模板作为分析数据,由于此功能依赖DAS专业版的全量SQL数据,拉取全量SQL数据比较耗时,且不同用户的计算时间略有差异,一般等待1-5分钟左右。
  7. 查看SQL请求行为分析图像和分析表。
    sa
    说明 第一列显示cpu_usage相关度接近1.0, 说明SQL模板所在的类别与cpu_usage关联度最高,即该SQL指标异常指标的关联度最高。

    下表是SQL监控指标的参数说明表。

    监控指标参数 参数说明
    聚合图像 每一个聚类图像下的指标会做聚合。
    cpu_usage相关度 越接近1.00的监控指标类别与异常指标的关联度越高。
    SQL模板数 SQL模板的数量,SQL模板定义请参见使用方法
    平均耗时 SQL模板在异常事件时间段内的平均耗时(秒)。
    执行次数比例 SQL模板执行次数占总次数的占比。
    扫描行数 SQL模板rows_examined对数据库表扫描的总行数。
    耗时比例 SQL模板执行时间占总执行次数的比例。
  8. 单击查看即可获取各个SQL模板的关联性结果。

    如下图所示,黄色区域的SQL模板和 mysql.cpu_usagemysql.innodb_rows_readmysql.active_session的关联性较强,由此定位到此SQL模板是导致cpu突增的SQL请求的主要原因。

    3

其他说明

DAS帮助聚类海量的SQL请求,您会发现相似的SQL模板的波动趋势相似。

  • 虽然此SQL请求有一个短暂的突增,但是突增波动的时间点和指标的突增并不同,所以此类模板并不是与指标最关联的,如下图所示。as
  • 通过异常指标,可以看到CPU和活跃会话的尖刺时间,恰好是下面SQL模板类别突降的时刻,说明活跃会话影响了SQL模板类,导致此类SQL请求都被阻塞。a