大数据体系和SQL

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 大数据体系和SQL

大数据体系和SQL

大数据体系

图片.png
批试分析,实时分析,交互分析都是SQL的应用场景。


SQL的处理流程

  • SQL是一种声明式语言,用户只描述做什么,没有告诉数据库怎么做
  • SQL也是很多系统都支持的接口

🎈 SQL的处理流程经过了四个组件,分别是Parser、Analyzer、Optimizer、Executor

  • Parser:把SQL的输入编程AST的输出
  • Analyzer:AST经过Analyzer处理,输出Logical Plan这种逻辑计划
  • Optimizer:Logical Plan经过Optimizer(优化器)处理,之后输出物理的执行计划Physical Plan
  • Executor:Physical Plan最后经过Executor处理,返回结果给用户
  • 下面详细说一下四个组件

Parser

  • Parser的输出是AST(抽象语法树),要输出AST则要经过两个步骤:语法分析的词法分析
  • 语法分析:拆分字符串,得到关键词,数值常量,字符串常量,运算符号等token
  • 词法分析:将token组成AST node,最终得到AST

Analyzer

Analyzer可以:

  • 检查并绑定Database,Table,Column等元信息
  • SQL的合法性检查,比如min/max/avg都是输入的数值,不能是字符串等
  • 将AST转成Logical Plan这种逻辑计划
  • Logical Plan:逻辑地描述SQL对应的分步骤计算操作
  • 计算操作:算子(operator)

Optimizer

🎈 Optimizer是查询优化,是一个重点

  • 查询计划的目标:找到一个正确且执行代价最小的物理执行计划
  • 查询优化器是数据库的大脑,最复杂的模块,很多相关问题都是NP的(有时无法取得最优解)
  • 一般SQL越复杂Join的表越多,数据量越大,查询优化的意义就越大,因为不同执行方式的性能差别可以有成百上千倍

Executor

🎈 Executor两种运行模式:

  • 单机并行:cache,pipeline,SIMD
  • 多级并行:一个fragment对应多个实例

🎈 Plan Fragment:执行计划子树:

  • 目标:最小化网络数据传输
  • 利用上数据的物理分布(数据亲和性)
  • 增加Sshuffle算子

SQL的处理主要包括解析(parse)、执行(execute)、提取(fetch)几个步骤。

SQL的执行流程:

1、在打开客户端后,最初需要和sql服务器建立连接,账号认证和校验权限。

2、认证后,客户端发生查询sql脚本给服务器

3、服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果。否则进入下一阶段。

4、服务器端进行SQL解析、预处理,再由优化器生成对应的执行计划。

5、MySQL根据优化器生成的执行计划,再调用存储引擎的API来执行查询。

6、将结果返回给客户端。


查询优化器

常见的查询优化器

按照遍历树的顺序划分:

Top-down Optimizer:

  • 从目标输出开始,由上往下遍历计划树,找到完整的最优执行计划
  • 例子:Volcano/Cascade,SQLServer

Bottom-up Optimizer:

  • 从零开始,由下往上遍历计划树,找到完整的最优执行计划
  • 例子:System R,PostgreSQL,IBM DB2

根据优化方法划分:

Rule-based Optimizer(RBO)

  • 根据关系代数等价语义,重写查询
  • 基于启发式规则
  • 会访问表的元信息(catalog),不会涉及具体的表数据(data)
  • Cost-base Optimizer(CBO)
  • 使用一个模型估算执行计划的代价,选择代价最小的执行计划。

🎈 即RBO基于 规则,CBO基于 代价

RBO

关系代数

  • 运算符和等价代换

优化原则

  • 优化IO:读更少数据且更快
  • 优化网络:传输的数据更少且更快
  • 优化CPU和内存:处理数据更少且更快

优化方式

列裁剪

谓词下推

传递闭包

Runtime Filter


  • RBO优点:实现简单,优化速度快;缺点是不保证得到最优的执行计划

CBO

🎈使用一个模型估算执行计划的代价,选择代价最小的执行计划。

  • 执行计划的代价等于所有算子的执行代价之和
  • 通过RBO得到可能的等价执行计划

🎈算子代价:CPU,内存等代价

  • 和算子输入数据的统计信息有关
  • 叶子算子Scan:通过统计原始表数据得到
  • 中间算子:根据一定的推导规则,从下层算子的统计信息推导得到

CBO统计信息的收集方式

  • 在DDL里指定需要收集的统计信息,数据库会在数据写入时收集或者更新统计信息
  • 手动执行explain analyze statement,触发数据库收集或者更新统计信息
  • 动态采样

CBO小结

  • CBO使用代价模型和统计信息估算执行计划的代价
  • CBO使用贪心或者动态规划算法寻找最优执行计划
  • 在大数据场景下CBO对查询性能非常重要
相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
9天前
|
SQL 存储 算法
比 SQL 快出数量级的大数据计算技术
SQL 是大数据计算中最常用的工具,但在实际应用中,SQL 经常跑得很慢,浪费大量硬件资源。例如,某银行的反洗钱计算在 11 节点的 Vertica 集群上跑了 1.5 小时,而用 SPL 重写后,单机只需 26 秒。类似地,电商漏斗运算和时空碰撞任务在使用 SPL 后,性能也大幅提升。这是因为 SQL 无法写出低复杂度的算法,而 SPL 提供了更强大的数据类型和基础运算,能够实现高效计算。
|
1月前
|
SQL 消息中间件 分布式计算
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(一)
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(一)
72 0
|
1月前
|
SQL 大数据
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(二)
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(二)
57 0
|
1月前
|
SQL 大数据 API
大数据-132 - Flink SQL 基本介绍 与 HelloWorld案例
大数据-132 - Flink SQL 基本介绍 与 HelloWorld案例
45 0
|
1月前
|
SQL 分布式计算 大数据
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
42 0
|
1月前
|
SQL 分布式计算 算法
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
78 0
|
1月前
|
SQL 分布式计算 Java
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
35 0
|
2月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
4月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
111 13

热门文章

最新文章