数据库自治服务DAS(Database Autonomy Service)为RDS MySQL提供查询治理功能,通过离线数据分析技术,在每天凌晨1点将全部实例在前一天产生的慢SQL进行统计分析和自动打标,帮助您对慢SQL进行自动分类和划分治理优先级。同时提供治理建议和数据导出功能。
前提条件
实例为如下版本:
RDS MySQL 8.4高可用系列或集群系列
RDS MySQL 8.0 高可用系列或集群系列
RDS MySQL 5.7 高可用系列或集群系列
RDS MySQL 5.6 高可用系列
RDS MySQL 5.5 高可用系列
当前支持中国内地、中国香港和新加坡地域的数据库实例。
说明中国香港和新加坡地域的数据库实例于2023年04月01日起支持查询治理功能。
限制约束
由于是T+1离线分析,当天打标无需优化,第二天才能看到推荐优化SQL数值变化。
DAS预定义的SQL标签暂不支持关闭。
每个数据库实例只统计分析执行次数前200的慢SQL,慢SQL模板数最大为200。
名词解释
|
名词 |
解释 |
|
推荐优化SQL |
从总体的慢SQL中,排除无需优化SQL,剩下的就是推荐优化SQL。 |
|
无需优化SQL |
包含DAS自动标记为DAS忽略的SQL,以及用户人工标记为无需优化的SQL。 |
|
DAS忽略 |
DAS自动打标无需优化,例如以 |
操作步骤
访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏中,选择自治服务 > 慢SQL。
单击查询治理页签。
在查询治理页,查看查询治理结果。
您可以通过设置时间、地域、数据库引擎,输入目标实例ID,查看指定实例的查询治理结果。
-
查询治理结果概览:查看系统打标分类后的结果数据。
说明只统计开启DAS企业版实例的执行失败SQL次数。
-
查询治理趋势:查看所选时间范围内查询治理结果的变化趋势。
-
TOP数据:查看实例红榜和实例黑榜。
-
实例黑榜:慢SQL执行次数从高到低排序,帮助您快速定位问题最严重的实例。
-
实例红榜:慢SQL执行次数变化量从低到高排序,负数表示慢SQL执行次数减少量(优化效果好),正数表示慢SQL执行次数增加量,帮助您快速定位治理效果最好的实例。
DAS推荐您重点关注推荐优化SQL的红黑榜。
-
-
待优化SQL:您可以设置筛选条件,过滤出需要治理的SQL语句。
说明支持通过DB名称、SQL关键字、规则标签和数据库用户名进行筛选,四者之间是逻辑与的关系。
-
多个DB名称之间使用英文逗号(,)分隔,逻辑关系为或。
-
多个SQL关键字之间使用空格分隔,逻辑关系为与。
-
多个数据库用户名之间使用英文逗号(,)分隔,逻辑关系为或。
-
规则标签支持多选,多个规则之间逻辑关系为或。
-
单击目标SQL样本操作列的建议,查看详细的治理建议。
-
单击目标SQL样本操作列的打标,对此SQL进行手动打标。标签的具体含义请参见手动打标标签。
您也可以勾选需要手动打标的SQL,进行批量打标。
-
单击目标SQL样本操作列的样本,查看此SQL的慢日志样本详情。
-
单击目标SQL样本操作列的趋势,查看此SQL的慢日志分析详情。详细的慢日志分析介绍及操作请参见慢日志。
您可以根据需要导出和分享待优化的SQL数据,具体操作请参见最佳实践。
-
-
失败SQL:您可以设置筛选条件,过滤出需要查看的SQL语句。
说明-
只统计开启DAS企业版实例的失败SQL。
-
支持通过DB名称和SQL关键字进行筛选,两者是逻辑与的关系。
-
多个DB名称之间使用英文逗号(,)分隔,逻辑关系为或。
-
多个SQL关键字之间使用空格分隔,逻辑关系为与。
-
单击目标SQL样本操作列的样本,查看此SQL的样本详情。
-
-
最佳实践
使用标签区分是否需要优化SQL
治理核心逻辑是将总体慢SQL分为无需优化的慢SQL和推荐优化SQL两类,您可根据如下SQL标签,快速筛选并按优先级治理。
|
ID |
标签名称 |
级别 |
推荐重点关注 |
描述 |
|
NEW_SQL |
新增慢SQL |
警告 |
✔️ |
相比最近一周新增的慢SQL。 |
|
DAS_IGNORE |
DAS忽略 |
提示 |
➖ |
DAS自动打标无需优化,例如以 |
|
FUZZY_LIKE |
LIKE模糊查询 |
提示 |
➖ |
|
|
HAS_EXPR |
包含表达式 |
提示 |
➖ |
包含表达式计算,参与计算的列无法使用索引。 |
|
LARGE_IN_LIST |
大列表查询 |
提示 |
➖ |
|
|
SELECT_STAR |
SELECT全列查询 |
提示 |
➖ |
|
|
INDEX_ADVISOR |
索引建议 |
提示 |
✔️ |
新建索引建议,加速SQL执行 。 |
|
COMPLEX_JOIN |
复杂JOIN |
提示 |
➖ |
超过三个表禁止 |
|
CROSS_DB |
跨库查询 |
提示 |
➖ |
跨实例迁移库表的时候,会产生跨库查询不可用的风险。 |
|
SUBQUERY |
包含子查询 |
提示 |
➖ |
包含子查询,可以考虑采用 |
|
DEEP_PAGING |
深度翻页 |
警告 |
➖ |
使用 |
|
WITHOUT_PREDICATE |
无谓词 |
警告 |
✔️ |
包含无谓词的语句,请检查是否涉及全表扫描。 |
|
NULL_COMPARE |
NULL匹配错误 |
警告 |
➖ |
使用 |
|
COUNT_NOT_STAR |
COUNT不规范 |
警告 |
➖ |
请使用 |
|
LARGE_ROWS_EXAMINED |
扫描行多 |
提示 |
➖ |
平均扫描行超过50000,扫描行数越大,越消耗数据库资源,不仅本身的SQL慢,还可能影响其他SQL执行。 说明
请考虑增加更好的SQL过滤条件。 |
|
LARGE_ROWS_SENT |
返回行多 |
提示 |
➖ |
平均返回行超过5000,一次返回太多数据,请考虑减少返回行数。 |
|
NO_ADVICE |
无建议 |
提示 |
➖ |
暂无分析建议。 |
|
PERIOD_SQL |
周期性 |
提示 |
➖ |
每天固定时间执行。 |
DAS推荐您重点关注推荐优化SQL,您可配合下表,打标无需优化的SQL,持续降低推荐优化SQL数量,如下SQL标签支持用户手动打标。
|
ID |
标签名称 |
级别 |
描述 |
|
USER_IGNORE |
无需优化 |
提示 |
打标无需优化,第二天就不会被统计到推荐优化SQL中。 |
|
DAS_IMPORTANT |
重要SQL |
提示 |
打标重要SQL。 |
|
DAS_NOT_IMPORTANT |
不重要SQL |
提示 |
打标不重要SQL。 |
|
DAS_IN_PLAN |
排期优化 |
提示 |
打标排期优化。 |
数据导出
您可通过新建导出任务,将当前看到的SQL明细的全部数据导出下载。
说明导出任务的数据保存3天。
您可以通过设置不同的筛选条件(不同的实例、不同的规则等),新建不同的下载任务,安排不同的负责人分别优化。
您也可以选中多个SQL记录,导出任务将只导出被选中SQL。
数据分享
为方便您快速把经过条件筛选后的慢SQL分享给对应的负责人,DAS提供两种分享功能:
您可以选中多个SQL记录,点击批量分享按钮,系统生成短链接,有DAS控制台权限的用户点击访问后,将只会看到您选中的SQL记录。
您也可以单击导出旁边的分享按钮,系统生成短链接,有DAS控制台权限的用户单击访问后,将会看到您当前看到的全部明细数据(无需您再次设置筛选条件)。