GAUSSDB优化器的四种执行计划
stream算子简介
(1)GATHER:汇聚算子,一般用于将各DN处理完的数据汇聚到CN进行处理
(2)REDISTRIBUTE:重分布算子,由于数据分布在不同的DN上,当分布列与连接列不同时,连接操作会涉及到遍历多个DN的数据,重分布算子用于将数据按照join列进行互相发送并重新分布,以达到在同DN内进行连接的作用;
(3)BROADCAST:广播算子,一般用于点查询中将某个DN上的的数据将发送到其它多个节点进行连接;
1、enable_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;
2、enable_fast_query_shipping
参数说明:控制查询优化器是否使用分布式框架。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
on表示执行计划在CN和DN上各自生成。
off表示使用分布式框架,即执行计划在CN上生成,然后发送到DN中执行。
默认值:on
场景:当语句可以完全下推到dn执行,且dn之间不需要数据交互
原理:cn不通过优化器,直接生成remote query计划,走执行器逻辑不发到dn,与1的区别是,fqs需要走执行器,所以效率稍微低一点,dn承担了大部分的计算
3、enable_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承担了大部分的计算
4、pgxc计划
场景:1--3不满足时
原理:cn通过优化器生成remote query计划,把每个remote query下发到dn,并把数据收集到cn进行计算,cn承担了大部分计算;
- 点赞
- 收藏
- 关注作者
评论(0)