数据库自治服务DAS(Database Autonomy Service)提供SQL Review功能,本文介绍如何在SQL洞察和审计SQL洞察功能中进行SQL Review

前提条件

  • 已在DAS中接入对应的数据库实例,并且接入状态显示为连接正常
  • 实例已开启DAS专业版,详情请参见DAS专业版
  • 目前支持如下数据库:
    • RDS MySQL高可用版、三节点企业版。
    • PolarDB MySQL单节点、历史库、集群版。
  • 当前支持的地域:华东1(杭州)、华东2(上海)、华北1(青岛)、华北2(北京)、华南1(深圳)、华北3(张家口)、华北5(呼和浩特)、西南1(成都)、华南3(广州)、华南2(河源)、华北6(乌兰察布)、中国(香港)、新加坡、马来西亚(吉隆坡)和印度尼西亚(雅加达)。

功能介绍

SQL Review功能对选定区间与基准区间内的数据库实例进行workload分析,并且对数据库实例中运行的SQL进行深度分析,展示数据库实例的索引优化建议、SQL改写建议、TOP SQL、新增SQL、失败SQL、SQL特征分析、执行变化SQL、性能恶化SQL和TOP流量表。

SQL Review功能提供全局SQL负载分析能力(包括SQL样本、平均执行耗时,耗时比例,执行次数比例,平均扫描行数,总执行次数,首次出现时间等内容的分析),辅助用户快速定位到数据库实例中的可疑SQL(资源消耗过大、趋势变化过大、性能恶化、执行失败、新增SQL等),并对可疑SQL进行分析,给出相应的优化建议。

功能模块介绍:

  • 索引优化建议:以表为单位,展示用户选择时间段内SQL的索引优化建议,包括索引列、DDL语句、预期收益等。
  • SQL改写建议:对执行效率不高效的SQL语句提供相应的改写建议。
  • TOP SQL:分别展示资源消耗TOP 10 SQL、平均扫描行数TOP 10 SQL、执行次数TOP 10 SQL,帮助用户快速定位对数据库影响较大的SQL。
  • 新增SQL:通过对诊断时间和对比时间内SQL的对比,展示新出现的SQL,帮助用户确认变更是否符合业务预期。
  • 失败SQL:执行失败的SQL列表,展示包括SQL ID、SQL样本、数据库、错误码、错误次数。
  • SQL特征分析:根据SQL文本进行特征分析,并按照SQL类型对各个SQL特征进行分类统计。
  • 执行变化SQL:分别按照平均扫描行数、执行次数的变化率对SQL进行统计,展示不同变化率范围内的SQL模板数量、耗时比例、总执行次数、执行次数比例。
  • 性能恶化SQL:基于执行变化SQL,筛选出平均扫描行数、总执行次数或平均耗时超过指定变化率的SQL。
  • TOP流量表:基于数据库中表的流量情况展示相应信息,包括表名、数据库名、相关SQL模板数、总执行次数、Select次数、Insert次数、Update次数、Delete次数和平均执行耗时等信息。

操作步骤

  1. 登录DAS控制台
  2. 在左侧导航栏中,单击实例监控
  3. 找到目标实例,单击实例ID,进入目标实例详情页。
  4. 在左侧导航栏单击请求分析 > SQL洞察和审计,然后在右侧打开的页面单击SQL洞察 > SQL Review
  5. SQL Review页面根据需要选择对应的操作。
    • 新建SQL Review
      单击新建SQL Review,在新建SQL Review窗口配置如下参数后,单击确定,发起SQL Review。
      说明 同一个数据库实例只能有一个正在执行SQL Review任务。
      参数 说明
      SQL Review名称 SQL Review任务的名称。
      选择库 选择数据库实例中需要进行SQL Review的数据库。
      诊断时间范围 进行诊断的时间范围。
      说明
      • 诊断的时间必须是开启DAS专业版后且在SQL洞察存储时长范围内。
      • 为了保证SQL Review的准确率,建议诊断的时间范围大于24小时;最大不能超过8天,最小不能小于1小时。
      • 对同一时间的SQL,不能多次诊断。
      对比时间范围 进行对比的时间范围。
      说明
      • 对比的时间必须是开启DAS专业版后且在SQL洞察存储时长范围内。
      • 诊断时间和对比时间的长度必须一致,且不能重叠。
      • 对比时间要早于诊断时间。
      诊断内容 诊断的内容,根据需要选择一个或者多个项目进行诊断。
      • 索引建议
      • SQL改写建议
      • 新增SQL
      • 失败SQL
      • TOP SQL
      • SQL特征分析
      • 执行变化SQL
      • TOP流量表
    • 查看SQL Review结果
      在页面右上角选择时间范围,单击查看,即可查看指定时间范围内发起的SQL Review任务。
      说明 选择时间范围时,查询结束时间需晚于查询开始时间,且查询开始时间和查询结束时间的间隔最大不能超过7天。您可以查询数据库实例6个月内的SQL Review任务。
      • 单击操作列的详情,可以查看该任务结果的详细信息。具体请参见结果详情介绍
      • 单击操作列的下载,可以将该任务的结果下载到本地。
      • 单击操作列的分享,可以将该任务的结果分享给具有DAS控制台权限的用户。
      • 单击任务名前的加号,可以查看SQL Review任务中包含的子任务,以及每个子任务的状态。

        单击子任务操作列的详情可以查看该子任务结果的详细信息。

结果详情介绍

  • 详情概览详情概览
  • 索引优化建议:单击表名前的加号,查看建议详情DDL语句预期收益索引优化建议
    • 单击详情,查看该索引建议的详细信息。
    • 单击执行DDL,执行优化后的DDL语句。
    • 单击验证优化效果,可以创建验证优化效果任务,对索引优化建议进行验证。
      说明
      • 该功能利用实例的备份恢复,将用户选定的备份集克隆到系统创建的新实例中,验证优化效果,对原业务实例无影响。
      • 费用与实例恢复功能创建的新实例收费一致,无额外费用。
      • 完成验证之后,您需要手动释放系统创建的新实例。
      创建验证任务
  • SQL改写建议:查看对执行效率不高效的SQL语句提供的改写建议。

    单击操作列的优化,进入SQL诊断优化页,查看优化后的SQL执行计划诊断结果

    若您采纳诊断建议,单击SQL诊断优化页右上角的复制,并将优化后的SQL粘贴到数据库客户端或DMS上执行,若不采纳诊断建议,可直接单击确认结束诊断。

    SQL改写建议
  • TOP SQL:展示资源消耗TOP 10 SQL平均扫描行数TOP 10 SQL执行次数TOP 10 SQL
    • 单击SQL ID,查看该SQL的详情。
    • 单击操作列的优化,进入SQL诊断优化页,查看优化后的SQL执行计划诊断结果

      若您采纳诊断建议,单击SQL诊断优化页右上角的复制,并将优化后的SQL粘贴到数据库客户端或DMS上执行,若不采纳诊断建议,可直接单击确认结束诊断。

    TOP SQL
  • 新增SQL:通过对诊断时间和对比时间内SQL的对比,查看新出现的SQL。
    • 单击SQL ID,查看该SQL的详情。
    • 单击操作列的优化,进入SQL诊断优化页,查看优化后的SQL执行计划诊断结果

      若您采纳诊断建议,单击SQL诊断优化页右上角的复制,并将优化后的SQL粘贴到数据库客户端或DMS上执行,若不采纳诊断建议,可直接单击确认结束诊断。

    新增SQL
  • 失败SQL:查看执行失败的SQL。

    单击SQL ID,查看该SQL的详情。

    失败SQL
  • SQL特征分析:查看SQL特征分析,单击SQL模板数量,可以查看该SQL特征的SQL模板数量详情

    SQL模板数量详情页,单击SQL ID,查看该SQL的详情。

    SQL特征分析
  • 执行变化SQL:按照平均扫描行数、执行次数,查看不同变化区间的SQL。
    单击详情,查看执行变化趋势详情。在执行变化趋势详情页:
    • 单击SQL ID,查看该SQL的详情。
    • 单击操作列的优化,进入SQL诊断优化页,查看优化后的SQL执行计划诊断结果

      若您采纳诊断建议,单击SQL诊断优化页右上角的复制,并将优化后的SQL粘贴到数据库客户端或DMS上执行,若不采纳诊断建议,可直接单击确认结束诊断。

    执行变化SQL
  • 性能恶化SQL:查看对比后性能恶化的SQL。
    • 单击SQL ID,查看该SQL的详情。
    • 单击操作列的优化,进入SQL诊断优化页,查看优化后的SQL执行计划诊断结果

      若您采纳诊断建议,单击SQL诊断优化页右上角的复制,并将优化后的SQL粘贴到数据库客户端或DMS上执行,若不采纳诊断建议,可直接单击确认结束诊断。

    性能恶化SQL
  • TOP流量表:查看数据库中流量TOP 100表的详细信息。
    • 单击表名,查看该表的字段索引
    • 单击相关SQL,查看该表相关SQL的详细信息。
    TOP流量表