GaussDB(DWS) 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/DELETE … WHERE 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 Scan或Streaming (type: GATHER) |
Stream |
DN数据交换 |
执行分布式查询计划,DN间存在数据交换 |
Partition Iterator |
分区迭代器 |
分区表扫描,迭代扫描每个分区 |
VecToRow |
列转行 |
列存数据转为行存数据,行列混合场景 |
RowToVec |
行转列 |
行存数据转为列存数据 |
CStoreScan |
列存表顺序扫描 |
列存表顺序扫描,最基础的列存扫描算子 |
CStoreIndexScan |
列存表索引扫描 |
带有索引的列存表扫描 |
DfsScan |
HDFS表扫描 |
ELK,HDFS表扫描 |
DfsIndexScan |
HDFS表索引扫描 |
ELK,带有索引的HDFS表扫描 |
BitmapScan( CStoreIndexCtidScan,CStoreIndexHeapScan) |
列存Bitmap扫描 |
CStoreIndexCtidScan利用属性上的索引进行扫描,返回结果为一个位图(标记了满足条件的元组在页面中的偏移量) CStoreIndexHeapScan从位图中获取元组 |
CStoreIndexAnd |
列存Bitmap逻辑与操作 |
多维索引扫描的BitmapScan,条件中有AND逻辑运算 |
CStoreIndexOr |
列存Bitmap逻辑或操作 |
多维索引扫描的BitmapScan,条件中有OR逻辑运算 |
VecXXX |
其他向量化算子 |
其他支持向量化的算子,命名基于行存算子加上前缀Vec |
- 点赞
- 收藏
- 关注作者
评论(0)