《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB MySQL版解析与实践(下)——三、SQL优化与慢查询解决(上)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB MySQL版解析与实践(下)——三、SQL优化与慢查询解决(上)

1. 查询流程和执行计划

 

SQL语言完成用户和系统内部存储数据之间的交互。在执行阶段,AnalyticDB MySQL版中的查询,会首先被切分为多个Stage来执行,一个Stage就是执行计划中某一部分的物理实体。


image.png

 

在AnalyticDB MySQL架构中有三层:接入层、计算层、存储层,是计算存储分离架构。一条SQL语句执行过程,首先会进入接入层,经过解析器完成语句的解析生成执行计划,优化器对执行计划进行优化,形成逻辑执行计划。

 

分组聚合查询的处理流程,Controller节点会把查询的逻辑执行计划Plan分片下发到执行计划任务的各个节点上。

 

Stage2由4个Task组成,并行执行数据的扫描、过滤以及局部聚合等操作。

Stage1由2个Task执行,并行执行最终的聚合操作。

Stage0由1个Task执行,负责汇总Stage1的2个Task生成的最终聚合结果。

 

2. 算子

 

一个算子负责完成一个基本的数据处理逻辑,一组算子按照执行计划完成数据的一组处理规则,参数名称与功能如下:

 

Aggregation:通过sum()、count()、avg()等函数对数据进行聚合或分组聚合操作。

DistinctLimit:对应SQL语句中的DISTINCT LIMIT操作。

Filter:使用存储层数据的索引进行过滤。存储层数据没有索引,需要在计算层使用Filter算子进行过滤。

Join:对应SQL语句中的Join操作。

Project:对应SQL语句中对特定字段的投影操作,例如case when then控制流、concat()函数等。

StageOutput:用于将当前Stage处理后的数据通过网络传输到下游Stage的节点。

Sort:应SQL语句中ORDER BY子句的操作,执行ORDER BY字段的排序。

TableScan:用于从数据源读取数据,如果需要过滤数据,那么数据过滤由底层数据源使用索引高效完成。

TopN:对应SQL语句中的ORDER BY LIMIT m,n查询。

 

 

3. 影响查询性能的因素

 

影响查询性能的因素有:集群规格、节点数量、数据分布特征、数据量大小、查询并发度、查询复杂度。

 

1) 集群规格

 

不同集群规格的CPU核数、内存大小和数据存储介质等属性不同,处理子任务的能力也就不同,需要结合业务查询特征来选择集群规格

以Join或分组聚合为主的业务查询会消耗较多的CPU和内存资源

扫描数据和简单分组聚合操作的查询会消耗较多的磁盘I/O资源。

 

2) 节点数量

 

AnalyticDB MySQL版使用了分布式数据处理架构,一条查询会被分解成多个Stage在不同的节点上并行执行。所以如果集群中的节点数量越多,AnalyticDB MySQL版处理查询的能力也会越强。用户可以根据实际的业务需求来决定集群节点的购买数量,更多详情,请参见创建集群。

https://help.aliyun.com/document_detail/122234.html

 

3) 数据分布特征

 

由于使用了分布式数据处理架构,具备将一条查询分解到多个节点上并行执行的能力

充分利用多节点来并行处理查询,还取决于数据在存储节点上的分布特征

如果数据能够均匀分布在存储节点上,多个子任务在处理数据时,就能几乎同时结束任务

数据分布不均匀,子任务在处理数据时会存在时间上的长尾,从而影响最终的查询效果。

 

4) 数据量大小

 

在处理查询时,通常不会将处理过程中的临时结果暂时写到磁盘里,而是尽量在内存中将所有数据处理掉。

如果查询需要处理的数据量较大,就可能会长时间占用大量的资源,导致整体查询效率降低,进而影响最终的查询效果。

表存储的数据量较大,在执行索引过滤、明细数据读取等操作时会出现争抢磁盘I/O资源,导致查询变慢。

 

5) 查询并发度

 

能同时处理的查询数量也会存在上限。如果查询的并发度过高,集群节点资源已到达瓶颈,那么后台的查询就会出现较长时间的排队,影响整体查询效果。

 

6) 查询复杂度

 

查询的复杂度不同造成的压力也不同

如果查询中过滤条件过于复杂,会在数据过滤时对存储节点造成一定压力

如果查询中Join算子过多,数据可能需要在不同节点间进行多次的网络传输,造成网络阻塞

如果查询中分组字段过多,也会占用较多的内存资源。

 

 

更多精彩内容,欢迎观看:

《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB MySQL版解析与实践(下)——三、SQL优化与慢查询解决(下)https://developer.aliyun.com/article/1222968?groupCode=certification

相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
8天前
|
人工智能 关系型数据库 MySQL
AnalyticDB MySQL版:云原生离在线一体化数据仓库支持实时业务决策
AnalyticDB MySQL版是阿里云推出的云原生离在线一体化数据仓库,支持实时业务决策。产品定位为兼具数据库应用性和大数据处理能力的数仓,适用于大规模数据分析场景。核心技术包括混合负载、异构加速、智能弹性与硬件优化及AI集成,支持流批一体架构和物化视图等功能,帮助用户实现高效、低成本的数据处理与分析。通过存算分离和智能调度,AnalyticDB MySQL可在复杂查询和突发流量下提供卓越性能,并结合AI技术提升数据价值挖掘能力。
39 16
|
1月前
|
SQL 存储 关系型数据库
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
本文详细介绍了MySQL中的SQL语法,包括数据定义(DDL)、数据操作(DML)、数据查询(DQL)和数据控制(DCL)四个主要部分。内容涵盖了创建、修改和删除数据库、表以及表字段的操作,以及通过图形化工具DataGrip进行数据库管理和查询。此外,还讲解了数据的增、删、改、查操作,以及查询语句的条件、聚合函数、分组、排序和分页等知识点。
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
|
1月前
|
SQL 存储 缓存
MySQL进阶突击系列(02)一条更新SQL执行过程 | 讲透undoLog、redoLog、binLog日志三宝
本文详细介绍了MySQL中update SQL执行过程涉及的undoLog、redoLog和binLog三种日志的作用及其工作原理,包括它们如何确保数据的一致性和完整性,以及在事务提交过程中各自的角色。同时,文章还探讨了这些日志在故障恢复中的重要性,强调了合理配置相关参数对于提高系统稳定性的必要性。
|
1月前
|
SQL 关系型数据库 MySQL
MySQL 高级(进阶) SQL 语句
MySQL 提供了丰富的高级 SQL 语句功能,能够处理复杂的数据查询和管理需求。通过掌握窗口函数、子查询、联合查询、复杂连接操作和事务处理等高级技术,能够大幅提升数据库操作的效率和灵活性。在实际应用中,合理使用这些高级功能,可以更高效地管理和查询数据,满足多样化的业务需求。
212 3
|
1月前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
1月前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
1月前
|
SQL Oracle 关系型数据库
SQL(MySQL)
SQL语言是指结构化查询语言,是一门ANSI的标准计算机语言,用来访问和操作数据库。 数据库包括SQL server,MySQL和Oracle。(语法大致相同) 创建数据库指令:CRATE DATABASE websecurity; 查看数据库:show datebase; 切换数据库:USE websecurity; 删除数据库:DROP DATABASE websecurity;
|
2月前
|
消息中间件 运维 Cloud Native
云原生架构下的微服务优化策略####
本文深入探讨了云原生环境下微服务架构的优化路径,针对服务拆分、通信效率、资源管理及自动化运维等核心环节提出了具体的优化策略。通过案例分析与最佳实践分享,旨在为开发者提供一套系统性的解决方案,以应对日益复杂的业务需求和快速变化的技术挑战,助力企业在云端实现更高效、更稳定的服务部署与运营。 ####
|
2月前
|
SQL 数据库 UED
SQL性能提升秘籍:5步优化法与10个实战案例
在数据库管理和应用开发中,SQL查询的性能优化至关重要。高效的SQL查询不仅可以提高应用的响应速度,还能降低服务器负载,提升用户体验。本文将分享SQL优化的五大步骤和十个实战案例,帮助构建高效、稳定的数据库应用。
151 3
|
2月前
|
SQL 缓存 监控
SQL性能提升指南:五大优化策略与十个实战案例
在数据库性能优化的世界里,SQL优化是提升查询效率的关键。一个高效的SQL查询可以显著减少数据库的负载,提高应用响应速度,甚至影响整个系统的稳定性和扩展性。本文将介绍SQL优化的五大步骤,并结合十个实战案例,为你提供一份详尽的性能提升指南。
74 0

推荐镜像

更多