《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB PostgreSQL版解析与实践(下)——三、SQL性能调优(上)

简介: 《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB PostgreSQL版解析与实践(下)——三、SQL性能调优(上)

1. Cascade框架SQL优化器

 

新一代cascade框架的SQL优化器,面向全并行执行架构,代价优化CBO和规则优化RBO相结合,实现复杂SQL免调优。

 

cascade框架的SQL优化器具备以下功能:

 

Top-Down路径搜索框架,搜索和路径选择更全面精准,避免出现局部查询路径最优解;

子查询自动改写为分布式JOIN, 实现并行计算,规避手工改写调优;

SQL优化阶段定义动态分区裁剪,即支持确定性过滤条件,也支持参数化的过滤条件,减少I/O。

 

2. 向量化计算引擎

 

image.png

 

新一代计算引擎Odyssey,消除火山模型碎片化内存分配。

采用LLVM进行动态代码生成(CodeGen),提升表达式计算性能。

利用CPU的SIMD技术,指令级并行,进一步提升性能。

 

3. SQL诊断

 

在SQL执行比较慢时,可以对SQL进行诊断。

 

首先,pg_stat_activity是一个非常有用的视图,可以分析排查当前运行的SQL任务以及一些异常问题。pg_stat activity每行展示的是一个“process”的相关信息,这里的“process”可以理解为一个用户连接。

然后,通过pg_stat_activity视图查看当前耗时较长的SQL。

 

查看耗时较长的查询语句:

select current_timestamp - query_start as runtime, datname, usename, query from pg_stat_activity where state !='idle' order by 1 desc;

 

 

参数说明

Runtime:语句执行的时长

Datname:执行语句的数据库名

Usename:执行语句的用户名

Waiting:是否在等待

waiting_reason:等待的原因

query:执行的语句,有长度截断,可通过track_activity_query_size调整

 

4. 执行计划两种收集模式

 

explain:显示执行计划,不真正执行语句,在计划中显示估算信息。

Explain analyze:显示执行计划,并且真正执行语句,在计划中显示真实执行信息。

 

执行计划中常见算子:

 

扫描算子Scan:Seq Scan,index scan,Bitmap Index Scan + Bitmap Heap Scan

关联算子Join:Hash Join,Nested Loop Join,Merge Join

聚合算子Aggregate:Hash Aggregate,Group Aggregate

数据重分布算子Motion:Redistribute Motion,Broadcast Motion,Gather Motion

其他算子:Hash,Sort,Limit,Append,etc

 

5. 执行计划

 

SQL性能调优中,执行计划两种模式下的计划项目及含义说明如下:

 

explain包含如下计划项目:

 

算子名称:计划中算子节点的名字,以“->”开头进行缩进,如例子中的Seq Scan、Sort、Gather Motion等。

 算子属性:算子在本计划中的操作属性,如例子中的Sort Key:b,表示Sort算子的排序键是b列。

 Cost:估算的代价,包含启动代价和总代价,中间用“...间隔。

 Rows:估算的行数。

 width:估算的每行的宽度,单位字节。

 optimizer:生成该计划的优化器名字,ADB PG具有优化器自适应功能,可能和用户设置的不一致。

 

explain analyze包含如下计划项目:

 

 actual time:实际执行时间,单位毫秒。

 Actual rows:实际输出行数。

 Planning time:实际生成执行计划的时间。

 Slice memory:每个slice使用的内存情况。

 Memory used:整个查询使用的内存情况。

 Execution time:实际执行时间。

 

更多精彩内容,欢迎观看:《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB PostgreSQL版解析与实践(下)——三、SQL性能调优(下):https://developer.aliyun.com/article/1222844?groupCode=certification

相关实践学习
使用CLup和iSCSI共享盘快速体验PolarDB for PostgtreSQL
在Clup云管控平台中快速体验创建与管理在iSCSI共享盘上的PolarDB for PostgtreSQL。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
2月前
|
SQL 存储 数据管理
阿里云视觉智能开放平台的逻辑数仓基于统一的SQL语法
【2月更文挑战第9天】阿里云视觉智能开放平台的逻辑数仓基于统一的SQL语法
52 2
|
2月前
|
SQL 关系型数据库 MySQL
MySQL - 一文解析 SQL 的执行顺序
MySQL - 一文解析 SQL 的执行顺序
|
3月前
|
存储 数据管理 物联网
深入解析数据仓库与数据湖:建构智能决策的桥梁
在当今信息时代,数据成为企业决策与创新的关键资源。本文将深入探讨数据仓库与数据湖的概念与应用,介绍其在数据管理和分析中的作用,以及如何构建智能决策的桥梁。
|
2天前
|
SQL 分布式计算 资源调度
一文解析 ODPS SQL 任务优化方法原理
本文重点尝试从ODPS SQL的逻辑执行计划和Logview中的执行计划出发,分析日常数据研发过程中各种优化方法背后的原理,覆盖了部分调优方法的分析,从知道怎么优化,到为什么这样优化,以及还能怎样优化。
|
6天前
|
SQL 自然语言处理 数据库
NL2SQL实践系列(2):2024最新模型实战效果(Chat2DB-GLM、书生·浦语2、InternLM2-SQL等)以及工业级案例教学
NL2SQL实践系列(2):2024最新模型实战效果(Chat2DB-GLM、书生·浦语2、InternLM2-SQL等)以及工业级案例教学
NL2SQL实践系列(2):2024最新模型实战效果(Chat2DB-GLM、书生·浦语2、InternLM2-SQL等)以及工业级案例教学
|
10天前
|
SQL 数据库
数据库SQL语言实战(二)
数据库SQL语言实战(二)
|
16天前
|
SQL 存储 关系型数据库
【MySQL实战笔记】02.一条SQL更新语句是如何执行的-2
【4月更文挑战第5天】两阶段提交是为确保`redo log`和`binlog`逻辑一致,避免数据不一致。若先写`redo log`, crash后数据可能丢失,导致恢复后状态错误;若先写`binlog`,crash则可能导致重复事务,影响数据库一致性。一天一备相较于一周一备,能缩短“最长恢复时间”,但需权衡额外的存储成本。
16 1
|
1月前
|
SQL 数据可视化 Apache
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
阿里云数据库 SelectDB 内核 Doris 的 SQL 方言转换工具, Doris SQL Convertor 致力于提供高效、稳定的 SQL 迁移解决方案,满足用户多样化的业务需求。兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移。
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
|
1月前
|
SQL 关系型数据库 API
Star 4.7k!高效SQL Parser!纯Python开发!自称目前最快的纯Python SQL解析器!
Star 4.7k!高效SQL Parser!纯Python开发!自称目前最快的纯Python SQL解析器!
|
2月前
|
SQL JSON Apache
Flink SQL问题之复杂JSON解析如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
401 0