GAUSSDB优化器的四种执行计划

举报
yd_224864421 发表于 2025/03/20 11:01:07 2025/03/20
【摘要】 GaussDB的stream算子优化器的四种执行计划

stream算子简介

1GATHER:汇聚算子,一般用于将各DN处理完的数据汇聚到CN进行处理

2REDISTRIBUTE:重分布算子,由于数据分布在不同的DN上,当分布列与连接列不同时,连接操作会涉及到遍历多个DN的数据,重分布算子用于将数据按照join列进行互相发送并重新分布,以达到在同DN内进行连接的作用;

3BROADCAST:广播算子,一般用于点查询中将某个DN上的的数据将发送到其它多个节点进行连接;

1enable_light_proxy

参数说明:设置优化器是否对简单查询在CN上优化执行,应用端和内核端字符集不匹配时,该参数不生效,建议建库时将字符集设为UTF8

取值范围:布尔型。

on表示优化器将优化CN上简单查询的执行。

off表示不使用优化。

默认值:on

场景:语句可以直接在一个dn上执行(单shard语句)

原理:cn通过socket直接下发语句QPBE报文到对应dn

使用条件:

set enable_light_proxy=on;

set enable_fast_query_shipping=on;

set enable_stream_operator=off;

set max_datanode_for_plan=1;


2enable_fast_query_shipping

参数说明:控制查询优化器是否使用分布式框架。

该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。

取值范围:布尔型

on表示执行计划在CNDN上各自生成。

off表示使用分布式框架,即执行计划在CN上生成,然后发送到DN中执行。

默认值:on

场景:当语句可以完全下推到dn执行,且dn之间不需要数据交互

原理:cn不通过优化器,直接生成remote query计划,走执行器逻辑不发到dn,与1的区别是,fqs需要走执行器,所以效率稍微低一点,dn承担了大部分的计算

  

 

3enable_stream_operator

参数说明:控制优化器对stream的使用。当enable_stream_operator参数关闭时,会有大量关于计划不能下推的日志记录到日志文件中。如果用户不需要这些日志内容,建议用户在enable_stream_operator参数关闭时,也同时关闭enable_unshipping_log参数。

该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。

取值范围:布尔型

on表示使用。

off表示不使用。

默认值:

独立部署:off

混合部署:on

场景:需要dn之间数据交互

原理:cn通过优化器生成带stream算子计划,stream算子在dn之间建立连接,进行数据交互,cn直接接受结果,dn承担了大部分的计算

 

4pgxc计划

场景:1--3不满足时

原理:cn通过优化器生成remote query计划,把每个remote query下发到dn,并把数据收集到cn进行计算,cn承担了大部分计算;

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。