GaussDB 数据库架构师修炼(十八) SQL引擎-分布式计划

1 分布式架构

  • GaussDB基于MPP (Massively Parallel Processing) 并行架构
  • Streaming流式计算框架

2 分布式计划

  • CN轻量化(light proxy)
  • FQS( fast query shipping )
  • STREAM计划
  • XC计划

|----------|--------------------------|-----------------------|
| 计划类型 | 场景 | 原理 |
| CN轻量化 | 可以直接在一个DN执行 | 直接下发SQL语句给DN |
| FQS | 语句可以完全下推DN执 行, DN之间不需要交互 | 需要走执行器逻辑下发给DN |
| STREAM | 需要DN之间交互, CN只 汇总数据 | 在CN上生成计划,下发计划给DN执行 |
| XC | 适用于所有场景 | 部分语句下推DN执行,无法下推的在CN执行 |

3 计划生成

1)计划生成主要是查询的路径树计划树结构转换的过程, 在分布式场景下对关联****join 、聚集操作Agg有特殊的生成逻辑

2) 当join列与分布列不一致时,需要网络stream节点,可能生成的路径:

t1 HASH BY (c1), t2 HASH BY (c2)

SELECT * FROM t1 JOIN t2 ON cx=cy;

如下:每一种策略都有可以执行,根据最下层AGG过滤元组的数量有关。

4 不支持下推的

  • 1)根据函数属性判断下推

IMMUTABLE:忽略shippable属性,可以下推

STABLE:判断shippable,受限下推

VOLATILE:判断shippable,受限下推

2)不支持下推的语法

SQL子句中存在使用RETURNING

聚集函数使用ORDER BY、COUNT(DISTINCT expr) 、expr中的列不支持重分布

数组表达式

相关推荐
砚边数影14 小时前
数据可视化入门:Matplotlib 基础语法与折线图绘制
数据库·信息可视化·matplotlib·数据可视化·kingbase·数据库平替用金仓·金仓数据库
orange_tt14 小时前
Djiango配置Celery
数据库·sqlite
云小逸15 小时前
【nmap源码学习】 Nmap网络扫描工具深度解析:从基础参数到核心扫描逻辑
网络·数据库·学习
肉包_51115 小时前
两个数据库互锁,用全局变量互锁会偶发软件卡死
开发语言·数据库·c++
霖霖总总16 小时前
[小技巧64]深入解析 MySQL InnoDB 的 Checkpoint 机制:原理、类型与调优
数据库·mysql
此刻你16 小时前
常用的 SQL 语句
数据库·sql·oracle
それども17 小时前
分库分表的事务问题 - 怎么实现事务
java·数据库·mysql
·云扬·17 小时前
MySQL Binlog 配置指南与核心作用解析
数据库·mysql·adb
天空属于哈夫克317 小时前
Java 版:利用外部群 API 实现自动“技术开课”倒计时提醒
数据库·python·mysql
eWidget18 小时前
随机森林原理:集成学习思想 —— Java 实现多棵决策树投票机制
java·数据库·随机森林·集成学习·金仓数据库