GaussDB(DWS) stream算子总结

举报
Moonshinee 发表于 2024/11/15 15:41:38 2024/11/15
【摘要】 gaussdb数据库stream算子总结

算子

含义

出现场景

扫描类算子(计划树叶子节点)

SeqScan

顺序扫描

最基本的扫描算子,用于扫描物理表(没有索引辅助的顺序扫描)

IndexScan

索引扫描

选择条件涉及的属性上建立了索引

IndexOnlyScan

直接从索引返回元组

索引列完全覆盖结果集列

BitmapScan

(BitmapIndexScan, BitmapHeapScan)

利用bitmap获取元组

BitmapIndexScan利用属性上的索引进行扫描,返回结果为一个位图(标记了满足条件的元组在页面中的偏移量)

BitmapHeapScan从位图中获取元组

TidScan

通过元tid获取元组

1.WHERE conditions(like CTID = tid or CTID IN (tid1, tid2, ...))
2.UPDATE/DELETEWHERE CURRENT OF cursor

SubqueryScan

子查询扫描

以另一个查询计划树(子计划)为扫描对象进行元组的扫描

FunctionScan

函数扫描

FROM function_name

ValuesScan

扫描values链表

VALUES子句给出的元组集合进行扫描

CteScan

扫描CommonTableExpr

扫描SELECT查询中用WITH子句定义的子查询

WorkTableScan

扫描RecursiveUnion的中间数据

配合RecursiveUnion处理递归定义的UNION语句

ForeignScan

外部表扫描

查询外部表

连接类算子

NestLoop

嵌套循环连接

Inner Join, Left Outer Join, Semi Join, Anti Join

MergeJoin

归并连接(输入有序)

Inner Join, Left Outer Join, Right Outer Join, Full Outer Join, Semi Join, Anti Join

HashJoin

哈希连接

Inner Join, Left Outer Join, Right Outer Join, Full Outer Join, Semi Join, Anti Join

物化类算子

Material

物化

缓存子节点结果

Sort

排序

ORDER BY子句,连接操作,分组操作,集合操作,配合Unique

Group

分组操作

GROUP BY子句

Agg

执行集函数

1. COUNT/SUM/AVG/MAX/MIN等聚集函数;2. DISTINCT子句;3. UNION去重;4. GROUP BY子句

WindowAgg

窗口函数

WINDOW子句

Unique

去重(下层已排序)

1. DISTINCT子句;2. UNION去重

Hash

HashJoin辅助节点

构造hash表,配合HashJoin

SetOp

处理集合操作

INTERSECT/INTERSECT ALL, EXCEPT/EXCEPT ALL

LockRows

处理行级锁

SELECT … FOR SHARE/UPDATE

Limit

处理LIMIT子句

OFFSET … LIMIT …

控制类算子

Result


1. 不包含表扫描;2. INSERT语句中只有一个VALUES子句;3. Append/MergeAppend为计划根节点(投影上推)

ModifyTable

INSERT/UPDATE/DELETE上层节点

INSERT/UPDATE/DELETE/MERGE INTO

Append

追加

1. UNION(ALL)2. 继承表

MergeAppend

追加(输入有序)

1. UNION(ALL)2. 继承表

RecursiveUnion

处理WITH子句中递归定义的UNION子查询

WITH RECURSIVE … SELECT … 语句

BitmapAnd

Bitmap逻辑与操作

多维索引扫描的BitmapScan,条件中有AND逻辑运算

BitmapOr

Bitmap逻辑或操作

多维索引扫描的BitmapScan,条件中有Or逻辑运算

RemoteQuery

CN/DN数据交换

PGXC新增,调度各DN执行query,并收集结果,plan中体现为Data Node ScanStreaming (type: GATHER)

Stream

DN数据交换

执行分布式查询计划,DN间存在数据交换

Partition Iterator

分区迭代器

分区表扫描,迭代扫描每个分区

VecToRow

列转行

列存数据转为行存数据,行列混合场景

RowToVec

行转列

行存数据转为列存数据

CStoreScan

列存表顺序扫描

列存表顺序扫描,最基础的列存扫描算子

CStoreIndexScan

列存表索引扫描

带有索引的列存表扫描

DfsScan

HDFS表扫描

ELKHDFS表扫描

DfsIndexScan

HDFS表索引扫描

ELK,带有索引的HDFS表扫描

BitmapScan(

CStoreIndexCtidScan,CStoreIndexHeapScan)

列存Bitmap扫描

CStoreIndexCtidScan利用属性上的索引进行扫描,返回结果为一个位图(标记了满足条件的元组在页面中的偏移量)

CStoreIndexHeapScan从位图中获取元组

CStoreIndexAnd

列存Bitmap逻辑与操作

多维索引扫描的BitmapScan,条件中有AND逻辑运算

CStoreIndexOr

列存Bitmap逻辑或操作

多维索引扫描的BitmapScan,条件中有OR逻辑运算

VecXXX

其他向量化算子

其他支持向量化的算子,命名基于行存算子加上前缀Vec

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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