SQL洞察
SQL洞察功能可对SQL进行健康情况诊断、性能问题排查。本文介绍在SQL洞察和审计中进行SQL洞察的操作步骤。
前提条件
已在DAS中接入对应的数据库实例,并且接入状态显示为连接正常。
实例已开启SQL洞察和审计,详情请参见开启SQL洞察和审计。
功能说明
开启SQL洞察功能可以记录所有DQL、DML和DDL操作信息,这些信息是通过数据库内核输出,对系统CPU消耗极低。
支持的数据库和地域
SQL洞察和审计当前存在新、旧两个版本:
新版:相对于旧版,变更了底层存储架构,通过冷热存储混合实现降本增效,使用成本大大降低。详细差异请参见SQL洞察和审计的新版与旧版有什么差异?
旧版:当数据库实例和所属地域支持新版时,可以手动升级到新版,详情请参见旧版SQL洞察和审计如何升级到新版?
重要华南2(河源)、华北6(乌兰察布)地域的数据库实例暂不支持将旧版SQL洞察和审计迁移到新版。
华北1(青岛)、华南3(广州)、华北3(张家口)、中国(香港)和新加坡地域的数据库实例仅支持将数据存储时长小于等于30天的旧版SQL洞察和审计迁移到新版。如果旧版SQL洞察和审计的数据存储时长大于30天,可以修改SQL洞察和审计数据存储时长后再进行迁移。减少SQL洞察和审计数据存储时长后,DAS会立刻将超过存储时长的数据清空,请谨慎操作。
各个版本支持的数据库和地域如下:
版本 | 数据库 | 地域 |
新版 |
| 华东1(杭州)、华东2(上海)、华北1(青岛)、华北2(北京)、华南1(深圳)、华南3(广州)、华南2(河源)、华北3(张家口)、华北6(乌兰察布)、中国(香港)和新加坡 |
旧版 |
| 华东1(杭州)、华东2(上海)、华北1(青岛)、华北2(北京)、华南1(深圳)、华北3(张家口)、华北5(呼和浩特)、西南1(成都)、华南3(广州)、华南2(河源)、华北6(乌兰察布)、中国(香港)、新加坡、马来西亚(吉隆坡)和印度尼西亚(雅加达) |
RDS PostgreSQL基础版、高可用版 | 华东1(杭州)、华东2(上海)、华北2(北京)、华南1(深圳)、华北3(张家口)、新加坡、马来西亚(吉隆坡)和印度尼西亚(雅加达) | |
PolarDB-X 2.0 | 华东1(杭州)、华东2(上海)、华北2(北京)、华南1(深圳)和新加坡 |
注意事项
SQL洞察功能中分析和统计数据(不包括SQL明细数据)的存储时长最长为90天:
如果对应实例DAS专业版设置的存储时长小于等于90天,则SQL洞察功能中分析和统计数据(不包括SQL明细数据)的存储时长以DAS专业版设置的存储时长为准。
如果对应实例DAS专业版设置的存储时长大于90天,则SQL洞察功能中分析和统计数据(不包括SQL明细数据)的存储时长为90天。
SQL洞察功能中SQL明细数据的存储时长与DAS专业版设置的存储时长一致。
关闭SQL洞察和审计功能后,不会对业务产生影响,但是SQL洞察和审计的所有存储数据会被清空,请将数据导出并保存至本地后,再关闭SQL洞察和审计功能。详情请参见关闭SQL洞察和审计。
挂载到PolarDB-X 1.0(DRDS)的RDS MySQL实例执行一条SQL语句时,由于水平拆分(分库分表)原因,会在RDS MySQL实例上产生多条SQL日志。
数据库实例的数据迁移会引起闪断,迁移期间SQL洞察丢失部分数据是符合预期的。
当数据库实例负载非常高时,会丢失少量记录,因此通过SQL洞察来统计增量数据可能会出现不准确的情况。
SQL洞察中记录的SQL语句最大长度为8192字节,超过部分不再记录。其中RDS MySQL和PolarDB MySQL版实例记录的SQL语句最大长度受参数控制:
当参数取值小于等于8192字节时,SQL语句最大长度为参数设定值,超过部分不再记录。由于信息采集处理时会增加前缀标注,实际记录的SQL语句最大长度略小于参数设定值。
当参数取值大于8192字节时,SQL语句最大长度为8192字节,超过部分不再记录。由于信息采集处理时会增加前缀标注,实际记录的SQL语句最大长度略小于8192字节。
说明RDS MySQL和PolarDB MySQL版的5.6、5.7版本由loose_rds_audit_max_sql_size参数控制记录长度。
RDS MySQL和PolarDB MySQL版的8.0版本由loose_rds_audit_log_event_buffer_size参数控制记录长度。
操作步骤
登录DAS控制台。
在左侧导航栏中,单击实例监控。
找到目标实例,单击实例ID,进入目标实例详情页。
在左侧导航栏单击 ,然后在右侧打开的页面单击SQL洞察。
根据需要选择对应的功能项:
说明选择时间范围时,查询结束时间需晚于查询开始时间,且查询开始时间和查询结束时间的间隔不能超过1天。您可以查询数据库实例开启DAS专业版后,SQL洞察存储时长范围内任意一天的数据。
区间查看:选择需要查看SQL洞察结果的时间范围,您可以查看选定时间范围内所有SQL的执行耗时分布、执行耗时、执行次数。您还可以在全量请求统计区域内查看选定时间范围内所有SQL的详细信息,并可以将其导出到本地。
说明最多支持导出1000条SQL日志,如果您需要获取时间范围更大、数量更多的SQL日志,可以通过搜索功能。
对比查看:选择需要对比SQL洞察结果的时间点,您可以查看所有SQL执行耗时分布、执行耗时、执行次数的对比结果。您还可以在请求对比列表区域内查看详细的对比结果。
来源统计:选择需要统计SQL来源的时间范围,你可以查看选定时间范围内所有SQL的来源信息。
SQL Review:对选定区间与基准区间内的数据库实例进行workload分析,并且对数据库实例中运行的SQL进行深度分析,展示数据库实例的索引优化建议、SQL改写建议、TOP SQL、新增SQL、失败SQL、SQL特征分析、执行变化SQL、性能恶化SQL和TOP流量表。详情请参见SQL Review。
相关SQL识别:选择需要查看的指标,单击分析按钮,经过1~5分钟的时间,即可以定位到在选定时间范围内和相关指标变化趋势最相似的SQL及其详细信息。
重要对于新版SQL洞察和审计,超过7天的SQL洞察和审计数据采用冷存储,分析7天前的SQL明细数据时,系统会创建对应的任务重新进行计算和分析,您可以在任务列表页面,查看任务进度及历史任务。
查询分析超过7天的SQL洞察和审计数据,会按量收取查询费用,详情请参见产品计费(新版计费方式)。
说明
执行耗时分布:展示了选定时间范围内,所有SQL的执行耗时分布,将执行耗时分为了7个区间,每分钟计算一次,分别是:
[0,1]ms 是指满足0ms ≤ 执行耗时 ≤ 1ms SQL执行次数占比
(1,2]ms 是指1ms < 执行耗时 ≤ 2ms SQL执行次数占比
(2,3]ms 是指2ms < 执行耗时 ≤ 3ms SQL执行次数占比
(3,10]ms 是指3ms < 执行耗时 ≤ 10ms SQL执行次数占比
(10,100]ms 是指10ms < 执行耗时 ≤ 100ms SQL执行次数占比
(0.1,1]s 是指0.1s < 执行耗时 ≤ 1s SQL执行次数占比
>1s 是指1s < 执行耗时 SQL执行次数占比
说明若一个实例的执行耗时分布越接近蓝色,代表这个实例的SQL健康情况越好,越接近橙色和红色,代表这个实例的SQL健康情况越差。
执行耗时(SQL RT):通过执行耗时,可以方便地查看在选定的时间范围内,SQL的执行耗时。
SQL列表:SQL列表展示了选定时间范围内每一类SQL的SQL文本、耗时比例、平均执行耗时、执行趋势等信息。
说明耗时比例=(该类SQL执行耗时 × 执行次数)/(所有SQL执行耗时 × 总执行次数)× 100%。耗时比例越高的SQL,占用MySQL资源越多。
SQL ID:单击SQL ID,您可查看该类SQL性能趋势、SQL样本等。
SQL样本:通过SQL样本,查看该SQL是由哪个应用端发起。
说明SQL样本的编码采用UTF-8字符集。