数据库自治服务DAS(Database Autonomy Service)通过离线数据分析技术,在每天凌晨1点将全部实例在昨天产生的慢SQL进行统计分析和自动打标,帮助您更好的分类,按优先级进行治理,同时提供治理建议和数据导出功能。

前提条件

数据库需满足如下条件:

视频教程

限制约束

  • 由于是T+1离线分析,如您当天对SQL打标了无需优化,第二天才能看到推荐优化SQL数值的变化。
  • DAS预定义的SQL标签暂不支持关闭。
    说明 如果发现标签不准确,请提工单进行反馈。

名词解释

名词 解释
推荐优化SQL 从总体的慢SQL中,排除无需优化SQL,剩下的就是推荐优化SQL
无需优化SQL 包含DAS自动标记为DAS忽略的SQL,以及用户人工标记为无需优化的SQL。
DAS忽略 DAS自动打标无需优化,例如以showcreatexacommitrollbackselect sleepexplain开头的SQL。

操作步骤

  1. 登录DAS控制台
  2. 在左侧导航栏中,单击查询治理
    ss
  3. 查询治理详情页,您可分别查看SQL标签TOP数据SQL明细数据导出等具体信息。
    说明 关于各个页签的具体信息,请参见最佳实践

最佳实践

  • 使用标签区分是否需要优化SQL:

    治理核心逻辑是将总体慢SQL分为无需优化的慢SQL和推荐优化SQL两类,您可根据如下SQL标签,快速筛选并按优先级治理。

    ID 标签名称 级别 推荐重点关注 描述
    NEW_SQL 新增慢SQL 警告 ✔️ 相比最近一周新增的慢SQL。
    DAS_IGNORE DAS忽略 提示 DAS自动打标无需优化,例如以showcreatexacommitrollbackselect sleepexplain开头的SQL。
    FUZZY_LIKE LIKE模糊查询 提示 like模糊匹配,无法利用索引。
    HAS_EXPR 包含表达式 提示 包含表达式计算,参与计算的列无法使用索引。
    LARGE_IN_LIST 大列表查询 提示 in包含超过200个元素,很可能是程序生成,字段无法使用索引。
    SELECT_STAR SELECT全列 提示 select指定业务需要的字段,避免返回多余字段造成性能下降和资源浪费。
    INDEX_ADVISOR 索引建议 提示 ✔️ 新建索引建议,加速SQL执行 。
    COMPLEX_JOIN 复杂JOIN 提示 超过三个表禁止join。需要join的字段,数据类型必须绝对一致;多表关联查询时,保证被关联的字段需要有索引。
    CROSS_DB 跨库查询 提示 跨实例迁移库表的时候,会产生跨库查询不可用的风险。
    SUBQUERY 包含子查询 提示 包含子查询,可以考虑采用join改写效率更高。
    DEEP_PAGING 深度翻页 警告 使用limit的深度翻页,建议采用join改写。
    WITHOUT_PREDICATE 无谓词 警告 ✔️ 包含无谓词的语句,请检查是否涉及全表扫描。
    NULL_COMPARE NULL匹配错误 警告 使用ISNULL()来判断是否为NULL值,因为NULL与任何值的直接比较都为NULL
    COUNT_NOT_STAR COUNT不规范 警告 请使用COUNT(*)替代count(列名)或count(常量),count(*)是SQL92定义的标准统计行数的语法,跟数据库无关,跟NULL和非NULL无关。count(列名)不会统计此列为NULL值的行。
    LARGE_ROWS_EXAMINED 扫描行多 提示 平均扫描行超过50000,扫描行数越大,越消耗数据库资源,不仅本身的SQL慢,还可能影响其他SQL执行。
    说明 请考虑增加更好的SQL过滤条件。
    LARGE_ROWS_SENT 返回行多 提示 平均返回行超过5000,一次返回太多数据,请考虑减少返回行数。
    NO_ADVICE 无建议 提示 暂无分析建议。

    DAS推荐您重点关注推荐优化SQL,您可配合下表,打标无需优化的SQL,持续降低推荐优化SQL数量,如下SQL标签支持用户打标。

    ID 标签名称 级别 描述
    USER_IGNORE 无需优化 提示 打标无需优化,第二天就不会被统计到推荐优化SQL中。
    DAS_IMPORTANT 重要SQL 提示 打标重要SQL。
    DAS_NOT_IMPORTANT 不重要SQL 提示 打标不重要SQL。
    DAS_IN_PLAN 排期优化 提示 打标排期优化。
  • TOP数据:
    • 实例黑榜:慢SQL执行次数从高到低排序,帮助您快速定位问题最严重的实例。
    • 实例红榜:慢SQL执行次数变化量从低到高排序,负数表示慢SQL执行次数减少量(优化效果好),正数表示慢SQL执行次数增加量,帮助您快递定位治理效果最好的实例。
    • DAS推荐您重点关注推荐优化SQL的红黑榜。
  • SQL明细:

    支持通过DB名称筛选、SQL关键字筛选、规则标签筛选,三者是逻辑与的关系。

    • 多个DB名称可用逗号分隔,多个DB名称之间是逻辑或的关系。
    • SQL关键字支持多个(空格分隔),多个关键字之间是逻辑与的关系。
    • 规则标签支持多选,多个规则之间是逻辑或的关系。
  • 数据导出:
    • 您可通过新建导出任务,将当前看到的SQL明细的全部数据导出下载。
      说明 导出任务的数据可保存3天,您可用于随时下载。
    • 您可以通过设置不同的筛选条件(不同的实例、不同的规则等),新建不同的下载任务,安排不同的负责人分别优化。
    • 您也可以选中多个SQL记录,导出任务将只导出被选中的SQL。
  • 数据分享:

    为方便您快速把经过条件筛选后的慢SQL分享给对应的负责人,DAS提供两种分享功能:

    • 您可以选中多个SQL记录,点击批量分享按钮,系统生成短链接,有DAS控制台权限的用户点击访问后,将只会看到您选中的SQL记录。
    • 您也可以单击导出旁边的分享按钮,系统生成短链接,有DAS控制台权限的用户单击访问后,将会看到您当前看到的全部明细数据(无需您再次设置筛选条件)。