重磅发布|新一代云原生数据仓库AnalyticDB「SQL智能诊断」功能详解 您所在的位置:网站首页 applepencil2代功能详解 重磅发布|新一代云原生数据仓库AnalyticDB「SQL智能诊断」功能详解

重磅发布|新一代云原生数据仓库AnalyticDB「SQL智能诊断」功能详解

2023-09-11 22:56| 来源: 网络整理| 查看: 265

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智能诊断功能。

1.png

首先会看到一个甘特图(也称泳道图,查询从不同的泳道流过,这里的泳道并不是ADB的查询队列,只是为了区分开不同时间执行的查询),甘特图以图形化的方式形象的展示了查询在ADB实例上的执行顺序,每个色块表示了一条查询,色块左侧为查询的提交时间,色块右侧为查询的结束时间,色块的相对长度表示了某条查询的执行时间,色块的颜色没有特殊含义,只是为了区分不同的泳道。

2.png通过甘特图,用户可以非常直观的看到当前时间范围内执行耗时较长的查询,并且可以直观的看到哪些查询是在并行的执行以及并行执行的时间段,这可以帮助用户判断出哪些查询是受到了某条Bad SQL的影响。色块的密集度则可以用来直观的判断ADB实例压力较大的时段是否和某些查询的并发度较高相关。

(二)查询列表

甘特图能够以直观的方式体现出查询之间的时间相关性,但是当用户选择的时间范围较大,甘特图中的色块会密集分布不容易分辨,而且甘特图上的指标较为有限,此时用户可以使用诊断工具中的查询列表功能。查询列表提供了多大10余项查询级别的重要指标,例如数据库名、用户名、客户端段IP、耗时、消耗内存以及扫描量等,这些信息和指标可以帮助用户进一步判断慢查询的来源和资源消耗等。

3.png

高级检索能力方面,诊断工具提供了三种类型的检索方法:

1.模糊检索和精确检索:用户可以根据SQL中的关键字进行模糊匹配,精确检索功能则帮助用户在确定查询ID的情况下,精确的检索到这条查询;2.字符串类型的检索条件:检索工具会自动识别出用户所选时间范围内使用的数据名、用户名、客户端IP以及资源组等,提供下拉框的形式供用户选择,提高用户检索效率;3.数值类型的检索条件:用户可以自由选择检索的指标单位,例如KB、MB、GB等,不需要进行手动的换算。

同时,用户在使用诊断工具时,往往有对慢查询的下载需求,下载后的慢查询可以在例如Excel等工具中进行更多自定义的慢查询治理和分析,所以我们也提供了查询列表的下载功能。

二、诊断慢查询

(一)查询在ADB中的执行流程

在介绍ADB执行流程前需要简单介绍一下三个相关的基本概念:

Stage

在执行阶段,ADB中的查询会首先根据是否产生Shuffle被切分为多个Stage来执行,一个Stage就是执行计划中某一部分的物理实体。Stage的数据来源可以是底层存储系统中的数据或者网络中传输的数据,一个Stage由分布在不同计算节点上相同类型的Task组成,多个Task会并行处理数据。

Task

Task是一个Stage在某个Executor节点上的执行实体,多个同类型的Task组成一个Stage,在集群内部并行处理数据。

Operator

Operator(算子)是ADB的最小数据处理单元。ADB会根据算子所表达的语义或算子间的依赖关系,决定使用并行还是串行执行来处理数据。

下面以一个典型的分局聚合查询为例来了解ADB中查询的执行流程,SQL语句如下:

SELECT COUNT(*), SUM(salary)

FROM emplayee

WHERE age>30 ADN age



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有