简介: AnalyticDB For MySQL为用户提供了高效、实时、功能丰富并且智能化的「SQL智能诊断」和「SQL智能调优」功能,提供用户SQL性能调优的思路、方向和具体的方法,降低用户使用成本,提高用户使用ADB的效率
SQL是一种简单易用的业务逻辑表达语言,但随着扫描数据量和查询复杂度的增加,查询性能会变得越来越慢。想要对SQL进行调优,往往需要关注以下几个部分:
- 需要了解引擎架构:用户往往需要对SQL引擎的架构特点有一定的了解,才能和业务的数据分布特征以及业务场景特征完美结合,来进行数据建模,从而设计出符合SQL引擎架构特点的表结构。
- SQL特征差异较大:即席查询的SQL往往变化较大,包括参与Join的表个数、Join条件、分组聚合的字段个数以及过滤条件等。
- 数据特征差异较大:用户的数据分布特征是会随着业务特征的变化而变化的,如果一直按照最初的建模方式和SQL语句,也是无法保障能发挥出SQL引擎的最大优势,数据特征或者业务模型的变化,都会导致SQL性能回退。
基于此,AnalyticDB For MySQL(新一代云原生实时数据仓库,语法兼容MySQL,以下简称ADB)为用户提供了高效、实时、功能丰富并且智能化的「SQL智能诊断」和「SQL智能调优」功能,提供用户SQL性能调优的思路、方向和具体的方法,降低用户使用成本,提高用户使用ADB的效率。
下面我们通过「发现慢查询」+「诊断慢查询」两个步骤,并结合一个场景Case,来介绍ADB新发布的「SQL智能诊断」功能。(PS:「SQL智能调优」会在后续版本中发布)
一、发现慢查询
用户要定位慢查询,首先需要找到慢查询。ADB的用户控制台提供了多样的方式来帮助用户,例如「甘特图」和「查询列表」等,都可以在多个维度进行检索,帮助用户快速定位慢查询,而且诊断工具确保用户可以进行最近两周的全量查询检索和分析。
(一)甘特图
用户可以通过「集群控制台」-「诊断与优化」 - 「SQL诊断」进入SQL智能诊断功能。
首先会看到一个甘特图(也称泳道图,查询从不同的泳道流过,这里的泳道并不是ADB的查询队列,只是为了区分开不同时间执行的查询),甘特图以图形化的方式形象的展示了查询在ADB实例上的执行顺序,每个色块表示了一条查询,色块左侧为查询的提交时间,色块右侧为查询的结束时间,色块的相对长度表示了某条查询的执行时间,色块的颜色没有特殊含义,只是为了区分不同的泳道。
通过甘特图,用户可以非常直观的看到当前时间范围内执行耗时较长的查询,并且可以直观的看到哪些查询是在并行的执行