细说GaussDB(DWS)的2种查询优化技术 您所在的位置:网站首页 静态dws 细说GaussDB(DWS)的2种查询优化技术

细说GaussDB(DWS)的2种查询优化技术

2024-02-07 06:49| 来源: 网络整理| 查看: 265

本文分享自华为云社区《GaussDB(DWS)查询优化技术大揭秘》,作者: 胡辣汤。

大数据时代,数据量呈爆发式增长,经常面临百亿、千亿数据查询场景,当数据仓库数据量较大、SQL语句执行效率低时,数据仓库性能会受到影响。本期《GaussDB(DWS)查询优化技术大揭秘》的主题直播中,我们邀请到华为云GaussDB(DWS)技术布道师王跃老师,深入讲解在GaussDB(DWS)中如何进行表结构设计,如何进行SQL优化,如何查找慢SQL和高频SQL。

一、认识优化器

数据库的优化器基本上有2种模式,基于规则的优化器(rbo)和基于成本的优化器(cbo)。当前比较通用的是CBO模型的优化器。

基于成本的优化器(cbo,cost based optimizer):该优化器通过根据优化规则对关系表达式进行转换,生成多个执行计划,然后CBO会根据统计信息(Statistics)和代价模型(Cost Model)计算各种可能“执行计划”的“代价”,即COST,从中选用COST最低的执行方案,作为实际运行方案。

优点:可以自动适应表数据量变化,计算量发生变化,自动调节,选择较优的执行计划。

缺点:依赖于COST计算模型重要的影响因子:统计信息,需要给优化器提供准确的统计信息,才能做出好的执行计划。

SQL****执行流程

执行计划是查询语句在数据库中执行过程的描述,执行计划描述了SQL引擎为执行SQL语句进行的操作,分析SQL语句相关的性能问题或仅仅质疑查询优化器的决定时,必须知道执行计划,所以执行计划常用于SQL调优。要读懂执行计划,首先要知道数据库执行算子的概念:

二、调优流程

当前数据库调优主要分为静态调优和动态调优两种,静态调优是根据硬件资源和客户的业务特征确定集群部署方案、表定义。执行态调优(动态调优)是根据SQL语句执行的实际情况采取针对性干预SQL执行计划的方式来提升性能。

调优流程

三、静态调优

本次直播主要从表定义角度介绍静态调优的5种常用方法,帮助用户根据业务场景选择合适的调优方式,提高SQL语句的查询性能。

3.1 **表定义:**集群部署有相关工作人员协助,用户只需要关注表定义创建策略。GaussDB数据库中,分布式框架下,数据分布在各个DN上,一个或者几个DN的数据存在一块物理存储设备上。好的表定义可以达到以下几个目的:

表数据均匀分布在各个DN上,防止单个DN数据过多导致集群有效容量下降。 表Scan压力均匀分散在各个DN上,避免单DN的Scan压力过大,形成Scan的单节点瓶颈。 减少扫描数据数据量,通过分区机制实现。 尽量减少随机IO,通过聚簇/局部聚簇可以实现。 尽量避免数据shuffle,减小网络压力。建议选择join-condition或者group by列为分布列。

3.2 **存储类型:**进行数据库设计时,表设计上的一些关键项将严重影响后续整库的查询性能,表设计对数据存储也有影响,好的表设计能够减少I/O操作及最小化内存使用,进而提升查询性能。

行、列存选择依据

3.3 分布列:

分布列决定了数据按哪一列拆分到各个DN上,好的分布列会使用数据在各个节点上分布均匀,减少数据重分发,充分发挥各个节点的性能。当前支持如下3种分布方式:

复制 (Replication) 集群中每个DN实例上都有一份全量表数据; Join操作可减小重分布造成的网络开销; 存在数据冗余; 适用于小表、维表。 哈希 (Hash) -- 8.1.3之前默认分布方式 数据通过Hash方式散列到集群的所有DN实例; 读写数据可充分利用各个节点IO资源,提升读写速度; 适用于数据量大的表。 轮询 (RoundRobin) -- 8.1.3开始之后默认分布方式 数据通过轮询方式发放到集群内所有DN实例; 读写数据可充分利用各个节点IO资源,提升读写速度; 适用于数据量大的表,且各列都有严重倾斜的表。

如何选择最佳分布列:

列值应比较离散,以便数据能够均匀分布到各个DN,通常选择表的主键为分布列; 尽量不要选取存在常量等值过滤条件,避免DN剪枝后Scan集中到一个DN上; **选择查询中的连接条件为分布列,**以便Join任务能够下推到DN中执行,且减少DN间的通信数据量; 根据上述原则尽量根据业务特征选择hash分布方式,无法确定时可以选择roundbobin分布。

3.4 **局部聚簇:**列存储下一种通过min/max稀疏索引实现基表快速扫描的一种索引技术。

适用场景: 业务特征:大表大批量数据导入,每次导入数据量远大于DN数 * 6W; 基表存在大量形如col op Const约束,其中col为列名,const为常量值,op为操作符 =、>、>=、=、


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

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