《阿里云认证的解析与实战-数据仓库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

相关实践学习
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
存储 SQL 监控
数据中台架构解析:湖仓一体的实战设计
在数据量激增的数字化时代,企业面临数据分散、使用效率低等问题。数据中台作为统一管理与应用数据的核心平台,结合湖仓一体架构,打通数据壁垒,实现高效流转与分析。本文详解湖仓一体的设计与落地实践,助力企业构建统一、灵活的数据底座,驱动业务决策与创新。
|
SQL Java 关系型数据库
在 RDB 上跑 SQL------SPL 轻量级多源混算实践 1
SPL 支持通过 JDBC 连接 RDB,可动态生成 SQL 并传参,适用于 Java 与 SQL 结合的各类场景。本文以 MySQL 为例,演示如何配置数据库连接、编写 SPL 脚本查询 2024 年订单数据,并支持参数过滤和 SQL 混合计算。脚本可在 IDE 直接执行或集成至 Java 应用调用。
|
SQL 存储 关系型数据库
SQL优化策略与实践:组合索引与最左前缀原则详解
本文介绍了SQL优化的多种方式,包括优化查询语句(避免使用SELECT *、减少数据处理量)、使用索引(创建合适索引类型)、查询缓存、优化表结构、使用存储过程和触发器、批量处理以及分析和监控数据库性能。同时,文章详细讲解了组合索引的概念及其最左前缀原则,即MySQL从索引的最左列开始匹配条件,若跳过最左列,则索引失效。通过示例代码,展示了如何在实际场景中应用这些优化策略,以提高数据库查询效率和系统响应速度。
877 10
|
SQL 安全 关系型数据库
SQL注入之万能密码:原理、实践与防御全解析
本文深入解析了“万能密码”攻击的运行机制及其危险性,通过实例展示了SQL注入的基本原理与变种形式。文章还提供了企业级防御方案,包括参数化查询、输入验证、权限控制及WAF规则配置等深度防御策略。同时,探讨了二阶注入和布尔盲注等新型攻击方式,并给出开发者自查清单。最后强调安全防护需持续改进,无绝对安全,建议使用成熟ORM框架并定期审计。技术内容仅供学习参考,严禁非法用途。
2225 0
|
SQL 关系型数据库 Java
SQL 移植--SPL 轻量级多源混算实践 7
不同数据库的 SQL 语法存在差异,尤其是函数写法不同,导致 SQL 移植困难。SPL 提供 sqltranslate 函数,可将标准 SQL 转换为特定数据库语法,实现 SQL 语句在不同数据库间的无缝迁移,支持多种数据库函数映射与自定义扩展。
|
SQL 存储 分布式计算
数据仓库的性能问题及解决之道
随着数据量的增长和业务复杂度的提升,数据仓库性能问题日益凸显,如查询慢、跑批不完等。传统解决方案如集群、预计算和优化引擎虽有一定效果,但成本高、灵活性差或性能提升有限。esProc SPL 提供了一种新的解决思路,通过非 SQL 的计算体系,结合高性能算法和优化的数据存储,实现更高效的数据处理,尤其适用于复杂计算场景。
|
12月前
|
存储 人工智能 关系型数据库
阿里云AnalyticDB for PostgreSQL 入选VLDB 2025:统一架构破局HTAP,Beam+Laser引擎赋能Data+AI融合新范式
在数据驱动与人工智能深度融合的时代,企业对数据仓库的需求早已超越“查得快”这一基础能力。面对传统数仓挑战,阿里云瑶池数据库AnalyticDB for PostgreSQL(简称ADB-PG)创新性地构建了统一架构下的Shared-Nothing与Shared-Storage双模融合体系,并自主研发Beam混合存储引擎与Laser向量化执行引擎,全面解决HTAP场景下性能、弹性、成本与实时性的矛盾。 近日,相关研究成果发表于在英国伦敦召开的数据库领域顶级会议 VLDB 2025,标志着中国自研云数仓技术再次登上国际舞台。
1311 1
|
存储 分布式计算 大数据
大数据揭秘:从数据湖到数据仓库的全面解析
大数据揭秘:从数据湖到数据仓库的全面解析
540 19
|
SQL 关系型数据库 OLAP
云原生数据仓库AnalyticDB PostgreSQL同一个SQL可以实现向量索引、全文索引GIN、普通索引BTREE混合查询,简化业务实现逻辑、提升查询性能
本文档介绍了如何在AnalyticDB for PostgreSQL中创建表、向量索引及混合检索的实现步骤。主要内容包括:创建`articles`表并设置向量存储格式,创建ANN向量索引,为表增加`username`和`time`列,建立BTREE索引和GIN全文检索索引,并展示了查询结果。参考文档提供了详细的SQL语句和配置说明。
747 2
|
监控 数据挖掘 OLAP
深入解析:AnalyticDB中的高级查询优化与性能调优
【10月更文挑战第22天】 AnalyticDB(ADB)是阿里云推出的一款实时OLAP数据库服务,它能够处理大规模的数据分析任务,提供亚秒级的查询响应时间。对于已经熟悉AnalyticDB基本操作的用户来说,如何通过查询优化和性能调优来提高数据处理效率,是进一步提升系统性能的关键。本文将从个人的角度出发,结合实际经验,深入探讨AnalyticDB中的高级查询优化与性能调优技巧。
921 4

推荐镜像

更多