操作符名称 |
参数说明 |
操作说明 |
AAGR2 |
grp_num:分组项个数 |
简单聚集。如果没有分组,则直接计算集函数 |
sfun_num:返回上层操作符的集函数个数 |
distinct_flag:集函数参数是否去重 |
slave_empty:是否限制MPP从节点向主节点传送数据,或本地并行的从线程向主线程传送数据。取值:0:不限制;1:不允许MPP从节点向主节点传送数据;2:不允许本地并行的从线程向主线程传送数据 |
dist_arg_opt参数:标记是否做distinct优化(分组项+该distinct参数 刚好组成aagr/sagr使用索引的前导列,那么计算该参数的dist时无需使用hash表,直接相邻行比较即可(分组项组内参数已有序)),dist_arg_opt(a1,a2,...an),a对应每个distinct参数,取值0代表此distinct参数不优化计算,反之则为1 |
ACTRL |
无参数 |
使用自适应计划机制时,控制备用计划转换 |
AFUN |
afun_num:分析函数个数 |
分析函数计算 |
partition_num:分区项个数 |
[colnamelist]:分区项 |
order_num:排序项个数 |
[colnamelist]:排序项 |
ASCN |
tabname:表的别名 |
数组当作表来扫描 |
used_in_sss3:是否出现在sss3(subquery set search,子查询集合查找)指令中。值为TRUE时,则每次扫描都重新开始 |
ASSERT |
assert_condition:触发断言的布尔表达式条件 |
约束检查 |
BLKUP2 |
idxname(tabname) :索引名(表名) |
定位查找 |
BMAND |
无参数 |
位图索引的与运算 |
BMCNT |
is_match_out:是否直接根据孩子节点的MATCH-COUNT值计算COUNT(*) |
位图索引的行数计算 |
BMCVT |
无参数 |
位图索引的ROWID转换 |
BMMG |
无参数 |
位图索引归并 |
BMOR |
无参数 |
位图索引的或运算 |
BMSEK |
scan_type:扫描类型 |
位图索引的范围查找 |
idxname(tabname) :索引名(表名) |
scan_range:扫描范围 |
CONST VALUE LIST |
row_num:常量列表行数 |
常量列表 |
col_num:常量列表列数 |
CONSTC |
N_PRE_VAR:复合索引跳跃扫描中跳跃扫描的索引前导列个数 |
用于复合索引跳跃扫描 |
(out_var):外部var变量序列 |
CSCN2 |
idxname(tabname) :索引名(表名) |
聚集索引扫描 |
NEED_SLCT(TRUE):是否进行过滤条件下推的优化 |
btr_scan:等于1表示使用B树扫描,等于0表示使用簇游标扫描 |
SAMPLE标记:用于标记节点上是否存在sample表达式,存在则带有此标记,否则无 |
CSEK2 |
scan_type:扫描类型 |
聚集索引数据定位 |
idxname(tabname) :索引名(表名) |
scan_range:扫描范围 |
CTE_SCN |
exp_num:映射列数 |
递归WITH查询 |
(queryname):查询名 |
CTNS |
idxname(tabname) :索引名(表名) |
用于实现全文索引的CONTAINS |
KEY:全文索引的关键词 |
DELETE |
(partition_type):分区类型,取值:Vertical Partition:垂直分区;Horizon Partition:水平分区;为空表示不分区 |
删除数据 |
table:表名或视图名,“-”表示空,使用远程操作时会增加“@”+“dblink连接名”作为后缀 |
type:删除类型,取值:SELECT、CURSOR |
mpp_opt:是否通过发送整个计划实现对MPP处理的优化 |
hp_opt:是否进行分区列等值过滤优化 |
DELETE_REMOTE |
(partition_type):分区类型,取值:Vertical Partition:垂直分区;Horizon Partition:水平分区;为空表示不分区 |
DBLINK删除操作 |
table:表名或视图名,“-”表示空,使用远程操作时会增加“@”+“dblink连接名”作为后缀 |
type:删除类型,取值:SELECT、CURSOR |
mpp_opt:是否通过发送整个计划实现对MPP处理的优化 |
hp_opt:是否进行分区列等值过滤优化 |
DISTINCT |
keys:MPP模式下需要分发的列的信息(仅在MPP模式下生效) |
去重 |
L_FULL_OPT_SEMI标记:semi半连接支持l_full优化 |
L_FULL_OPT_ANTISEMI标记:anti semi连接支持l_full优化 |
L_FULL_OPT_JOIN标记:其他非semi连接支持l_full优化 |
DSCN |
idxname(tabname) :索引名(表名) |
动态视图表扫描 |
DSSEK |
scan_type:扫描类型 |
DISTINCT列上索引跳跃扫描(单列索引或复合索引) |
idxname(tabname) :索引名(表名) |
scan_range:扫描范围 |
ESCN |
无参数 |
外部表扫描 |
EXCEPT |
无参数 |
集合的差运算,且取差集后删除重复项 |
EXCEPT ALL |
无参数 |
集合的差运算,且取差集后不删除重复项 |
EHFD |
mpp_opt:数据操作方式,1:数据直接发送给BP端进行删除;0:通过SP端分发 |
DPC下事务型HUGE表的数据删除 |
EHFI |
(tabname):表名 |
DPC下事务型HUGE表的数据插入 |
mpp_opt:数据操作方式,1:数据直接发送给BP端进行插入;0:通过SP端分发 |
EHFINS |
(tabname):表名 |
DPC下非事务型HUGE表的数据插入 |
mpp_opt:数据操作方式,1:数据直接发送给BP端进行插入;0:通过SP端分发 |
EHFU |
mpp_opt:数据操作方式,1:数据直接发送给BP端进行更新;0:通过SP端分发 |
DPC下事务型HUGE表的数据更新 |
ERECV |
stask_no:自身所处的子任务的序号,-1表示root子任务 |
DPC下用于接收数据,和ESEND对应 |
l_stask_no:孩子子计划的序号 |
n_keys:归并排序的key的个数 |
in_turn:是否按照顺序接收各个发送端的数据 |
trig:是否在IDU(增删改操作)上存在触发器 |
PV_FLAG:为1时开启限流,严格一发一收 |
topN标记:存在此标记则代表erecv节点上含有top语句 |
ESEND |
stask_no:自身所处的子任务的序号,-1表示root子任务 |
DPC下用于发送数据,和ERECV对应 |
type:发送类型,用于确定基于何种数据特征对数据进行分发。详细介绍请参考《DM8分布计算集群》5.4小节“数据交换与数据迭代操作符” |
sites:站点的RAFT ID和并行度值,“-”表示空。例如(1:3,2:4)表示RAFT ID 1的并行度为3,RAFT ID 2的并行度为4 |
sql_invoke:当前子任务是否包含了含sql的函数调用 |
pwj_opt:是否使用了分区智能连接(Partition Wise Join)优化 |
table:表名,“-”表示空,不为空时表示按照该表的分区定义进行数据分发 |
empty_type:当哈希连接相关优化的分发计算无合适接收端时的处理策略,取值:INIT:未指定策略,效果等同于ERROR;PRUNE:直接抛弃;ANY:给任意线程处理;ERROR:报错;NOT_EMPTY:通知所有线程右孩子不为空集 |
keys:表的分发列(仅当table不为空时显示) |
INFO_BITS:相关优化信息的标志位,6个标志位自低向高含义如下:bit0:是否在哈希连接左表为广播数据时共享哈希表;bit1:是否使用UNIONALL优化;bit2:是否选择开始执行任务;bit3:是否进行链路发送优化;bit4:是否进行归并排序的链路发送优化;bit5:用于指示当前ESEND发送的目标进行归并排序 |
PV_FLAG:为1时开启限流,严格一发一收 |
PI标记:存在此标记则代表esend是并行插入的esend |
FAGR2 |
sfun_num:返回上层操作符的集函数个数 |
快速聚集,如果没有where条件,且取count(*), 或者基于索引的MAX/MIN值,则可以快速取得集函数的值 |
idxname:索引名 |
FILL BTR |
index_id:用于填充B树的索引ID |
填充B树 |
FTTS |
for_mdis:是否从MPP DISTRIBUTE获得数据 |
MPP\LPQ下,对临时表的优化 |
GI |
policy:指示表的数据访问粒度,各个取值和含义请参考《DM8分布计算集群》中5.4小节“数据交换与数据迭代操作符” |
Granule Iterator,在DMDPC集群中,控制各工作线程的数据访问粒度和分区表裁剪 |
gi_unit:当前GI迭代器控制的数据扫描操作符起止序号 |
scan_type[0]:扫描相关信息,格式为:[扫描类型,反向扫描信息(可选),末尾KEY优化信息(可选)] |
dynamic_pll:是否包含动态裁剪 |
has_hp_col_filter标记:用于标记下放是否包含有slct, 且slct仅包含范围分区列的过滤(is_hp_col_filter == TRUE)。has_hp_col_filter(n)中的n表示GI节点下所有叶子操作符属性has_hp_col_filter==TRUE的数目 |
GSEK |
idxname(tabname) :索引名(表名) |
空间索引查询 |
HAGR2 |
grp_num:分组项个数 |
HASH分组,并计算集函数 |
sfun_num:返回上层操作符的集函数个数 |
distinct_flag:集函数参数是否去重 |
top_num:是否只返回前N组 |
slave_empty:是否限制MPP从节点向主节点传送数据,或本地并行的从线程向主线程传送数据。取值:0:不限制;1:不允许MPP从节点向主节点传送数据;2:不允许本地并行的从线程向主线程传送数据 |
keys:分组项 |
real_keys:依赖分组优化中实际使用的分组列 |
HASH FULL JOIN2 |
key_num:等值连接条件数 |
HASH全外连接 |
mix_aggr:是否将分组操作下放到此步骤进行,仅支持COUNT和SUM函数 |
mix_dist:是否存在对分组操作和哈希左外连接的优化(即把分组操作下放到哈希左外连接中) |
join_condition:连接条件 |
KEY:等值连接条件 |
flt_batch_exec标记:节点上是否存在filter的批量指令,存在则为flt_batch_exec(1),否则为flt_batch_exec(0) |
HASH LEFT JOIN2 |
key_num:等值连接条件数 |
HASH左外连接 |
partition_keys_num:paritition outer join的KEY个数 |
ret_null:是否仅返回未匹配的行 |
mix:需要计算的单个右表列的COUNT函数个数 |
join_condition:连接条件 |
KEY:等值连接条件 |
flt_batch_exec标记:节点上是否存在filter的批量指令,存在则为flt_batch_exec(1),否则为flt_batch_exec(0) |
HASH LEFT SEMI JOIN12 |
(ANTI):是否为反连接 |
HASH左半连接,其与HASH LEFT_SEMI_JOIN2的区别是该计划为semi join with rowid key,后者是semi join with exp key |
join_condition:连接条件 |
HASH LEFT SEMI JOIN2 |
(ANTI):是否为反连接 |
HASH左半连接 |
key_num:等值连接条件数 |
join_condition:连接条件 |
KEY:等值连接条件 |
KEY_NULL_EQU:连接列的NULL值比较策略。取值:0:NULL与NULL不相等;1:NULL与NULL相等。例如:(0,1,0)表示第1个和第3个连接条件中NULL值视为不等,第2个连接条件中NULL值视为相等 |
flt_batch_exec标记:节点上是否存在filter的批量指令,存在则为flt_batch_exec(1),否则为flt_batch_exec(0) |
HASH LEFT SEMI MULTIPLE JOIN |
(ANTI):是否为反连接 |
多列NOT IN |
join_condition:连接条件 |
HASH RIGHT JOIN2 |
key_num:等值连接条件数 |
HASH右外连接 |
ret_null:是否仅返回未匹配的行 |
join_condition:连接条件 |
KEY:等值连接条件 |
flt_batch_exec标记:节点上是否存在filter的批量指令,存在则为flt_batch_exec(1),否则为flt_batch_exec(0) |
HASH RIGHT SEMI JOIN2 |
key_num:等值连接条件数 |
HASH右半连接 |
(ANTI):是否为反连接 |
join_condition:连接条件 |
KEY:等值连接条件 |
KEY_NULL_EQU:连接列的NULL值比较策略。取值:0:NULL与NULL不相等;1:NULL与NULL相等。例如:(0,1,0)表示第1个和第3个连接条件中NULL值视为不等,第2个连接条件中NULL值视为相等 |
INFO_BITS:相关优化信息的标志位,其中bit0指明是否在左表为广播数据时共享0号工作节点哈希表 |
flt_batch_exec标记:节点上是否存在filter的批量指令,存在则为flt_batch_exec(1),否则为flt_batch_exec(0) |
HASH RIGHT SEMI JOIN32 |
(any_options):取值包括:“= all”、“<> any”、“op all”、“op any” |
用于OP SOME/ANY/ALL的HASH右半连接 |
key_num:等值连接条件数 |
join_condition:连接条件 |
KEY:等值连接条件 |
KEY_NULL_EQU:连接列的NULL值比较策略。取值:0:NULL与NULL不相等;1:NULL与NULL相等。例如:(0,1,0)表示第1个和第3个连接条件中NULL值视为不等,第2个连接条件中NULL值视为相等 |
HASH2 INNER JOIN |
(UNIQUE_FLAG):该连接中左右表数据的唯一性策略。取值:LRKEY_UNIQUE:左右表数据分别根据各自KEY值唯一;LKEY_UNIQUE:左表数据根据KEY值唯一,右表则不唯一;RKEY_UNIQUE:右表数据根据KEY值唯一,左表则不唯一 |
HASH内连接 |
key_num:等值连接条件数 |
join_condition:连接条件 |
KEY:等值连接条件 |
KEY_NULL_EQU:连接列的NULL值比较策略。取值:0:NULL与NULL不相等;1:NULL与NULL相等。例如:(0,1,0)表示第1个和第3个连接条件中NULL值视为不等,第2个连接条件中NULL值视为相等 |
INFO_BITS:相关优化信息的标志位,6个标志位自低向高含义如下:bit0:是否在哈希连接左表为广播数据时共享0号工作节点的哈希表;bit1:是否使用UNIONALL优化;bit2:是否选择开始执行任务;bit3:是否进行链路发送优化;bit4:是否进行链路发送优化,且需要进行归并;bit5:用于指示当前ESEND发送的目标进行归并排序 |
HEAP TABLE |
stask_no:子任务的序号,-1表示root子任务 |
临时结果表 |
sql_invoke:是否已在所属子计划进行含sql的函数调用 |
table_no:临时结果表编号 |
full:并行场景数据完整性,取值:0:局部数据;1:完整数据 |
mpp_full:是否在MPP/DPC模式下表示完整数据 |
autoid:是否生成autoid列 |
sites:站点的ID和并行度序列,“-”表示空。例如(1:3,2:4)表示1号站点并行度3,2号站点并行度4 |
HEAP TABLE SCAN |
table_no:临时结果表编号 |
临时结果表扫描 |
HFD |
mpp_opt:是否通过发送整个计划实现对MPP处理的优化 |
删除事务型HUGE表数据 |
HFDEL |
mpp_opt:是否通过发送整个计划实现对MPP处理的优化 |
删除非事务型HUGE表数据 |
HFI |
(tabname):表名 |
事务型HUGE表插入记录 |
mpp_opt:MPP模式下插入优化选项,取值:-1:不优化,DPC环境下取该值;0:不优化,无优化或非MPP环境下取该值;1:在随机插入目标表时分发整个插入计划;2:基于1的特性,省略MDIS分发 |
HFI2 |
(tabname):表名 |
MPP模式下优化的事务型HUGE表插入记录 |
mpp_opt:MPP模式下插入优化选项,取值:-1:不优化,DPC环境下取该值;0:不优化,无优化或非MPP环境下取该值;1:在随机插入目标表时分发整个插入计划;2:基于1的特性,省略MDIS分发 |
HFINS2 |
mpp_opt:MPP模式下插入优化选项,取值:-1:不优化,DPC环境下取该值;0:不优化,无优化或非MPP环境下取该值;1:在随机插入目标表时分发整个插入计划;2:基于1的特性,省略MDIS分发 |
非事务型HUGE表插入记录 |
HFINS3 |
无参数 |
MPP模式下优化的非事务型HUGE表插入记录 |
HFINS4 |
无参数 |
非MPP模式下,针对非事务型HUGE水平分区主表的插入优化,需要参数HFINS_PARALLEL_FLAG=2 |
HFLKUP |
(tabname):表名 |
根据ROWID检索非事务型HUGE表数据 |
HFLKUP2 |
(tabname):表名 |
根据ROWID检索事务型HUGE表数据 |
HFS UPDATE |
table:表名 |
更新非事务型HUGE表数据 |
type:类型,取值:SELECT、CURSOR |
mpp_opt:是否通过发送整个计划实现对MPP处理的优化 |
HFSCN |
(tabname):表名 |
非事务型HUGE表的逐行扫描 |
SAMPLE标记:用于标记节点上是否存在sample表达式,存在则带有此标记,否则无 |
HFSCN2 |
(tabname):表名 |
事务型HUGE表的逐行扫描 |
NEED_SLCT(TRUE):是否进行过滤条件下推的优化 |
SAMPLE标记:用于标记节点上是否存在sample表达式,存在则带有此标记,否则无 |
HFSEK |
(tabname):表名 |
根据KEY检索非事务型HUGE表数据 |
scan_type:扫描类型 |
scan_range:扫描范围 |
SAMPLE标记:用于标记节点上是否存在sample表达式,存在则带有此标记,否则无 |
HFSEK2 |
(tabname):表名 |
根据KEY检索事务型HUGE表数据 |
scan_type:扫描类型 |
scan_range:扫描范围 |
SAMPLE标记:用于标记节点上是否存在sample表达式,存在则带有此标记,否则无 |
HFU |
table:表名 |
更新事务型HUGE表数据 |
type:类型,取值:SELECT、CURSOR |
mpp_opt:是否通过发送整个计划实现对MPP处理的优化 |
HIERARCHICAL QUERY |
(UNIQUE):结果集是否去重 |
层次查询 |
key_num:等值连接条件数 |
connect_by_condition:连接条件 |
HPM |
order_keys:排序项 |
水平分区表归并排序 |
is_distinct:是否对排序结果进行去重操作 |
top_flag:是否有TOP子句需要处理 |
pll_scan_type:并行处理时扫描相关信息,格式为:[扫描类型,反向扫描信息(可选),末尾KEY优化信息(可选)] |
pll_keys:并行处理时分区列计算表达式相关信息,格式为:(分区列的计算表达式中相等的个数,分区列的计算表达式中最后一列起始的个数,分区列的计算表达式中最后一列终止的个数) |
INDEX JOIN LEFT JOIN2 |
join_condition:连接条件 |
索引左连接 |
ret_null:是否仅返回未匹配的行 |
INDEX JOIN SEMI JOIN2 |
(ANTI):是否为反连接 |
索引半连接 |
join_condition:连接条件 |
flt_batch_exec标记:节点上是否存在filter的批量指令,存在则为flt_batch_exec(1),否则为flt_batch_exec(0) |
INSERT |
(partition_type):分区类型,取值:Vertical Partition:垂直分区;Horizon Partition:水平分区;为空表示不分区 |
插入记录 |
table:表名或视图名,“-”表示空,使用远程操作时会增加“@”+“dblink连接名”作为后缀 |
type:插入类型,取值:UNKNOWN、VALUES、SELECT、MVALUE |
hp_opt:是否进行分区列等值过滤优化 |
mpp_opt:MPP模式下插入优化选项,取值:-1:不优化,DPC环境下取该值;0:不优化,无优化或非MPP环境下取该值;1:在随机插入目标表时分发整个插入计划;2:基于1的特性,省略MDIS分发 |
INSERT_LIST |
(partition_type):分区类型,取值:Vertical Partition:垂直分区;Horizon Partition:水平分区;为空表示不分区 |
堆表插入 |
table:表名或视图名,“-”表示空,使用远程操作时会增加“@”+“dblink连接名”作为后缀 |
type:插入类型,取值:UNKNOWN、VALUES、SELECT、MVALUE |
hp_opt:是否进行分区列等值过滤优化 |
mpp_opt:MPP模式下插入优化选项,取值:-1:不优化,DPC环境下取该值;0:不优化,无优化或非MPP环境下取该值;1:在随机插入目标表时分发整个插入计划;2:基于1的特性,省略MDIS分发 |
INSERT_REMOTE |
(partition_type):分区类型,取值:Vertical Partition:垂直分区;Horizon Partition:水平分区;为空表示不分区 |
DBLINK插入操作 |
table:表名或视图名,“-”表示空,使用远程操作时会增加“@”+“dblink连接名”作为后缀 |
type:插入类型,取值:UNKNOWN、VALUES、SELECT、MVALUE |
hp_opt:是否进行分区列等值过滤优化 |
mpp_opt:MPP模式下插入优化选项,取值:-1:不优化,DPC环境下取该值;0:不优化,无优化或非MPP环境下取该值;1:在随机插入目标表时分发整个插入计划;2:基于1的特性,省略MDIS分发 |
INSERT3 |
(partition_type):分区类型,取值:Vertical Partition:垂直分区;Horizon Partition:水平分区;为空表示不分区 |
MPP模式下查询插入优化处理 |
table:表名或视图名,“-”表示空,使用远程操作时会增加“@”+“dblink连接名”作为后缀 |
type:插入类型,取值:UNKNOWN、VALUES、SELECT、MVALUE |
hp_opt:是否进行分区列等值过滤优化 |
mpp_opt:MPP模式下插入优化选项,取值:-1:不优化,DPC环境下取该值;0:不优化,无优化或非MPP环境下取该值;1:在随机插入目标表时分发整个插入计划;2:基于1的特性,省略MDIS分发 |
INTERSECT |
无参数 |
集合的交运算,且取交集后删除重复项 |
INTERSECT ALL |
无参数 |
集合的交运算,且取交集后不删除重复项 |
LOCAL BROADCAST |
op_id:本地并行模式下节点所属通讯操作符中的序号 |
本地并行模式下,消息广播到各线程,包含必要的集函数合并计算 |
LOCAL COLLECT |
op_id:本地并行模式下节点所属通讯操作符中的序号 |
本地并行模式下数据收集处理,代替LOCAL GATHER |
n_grp_by:分组列个数 |
n_cols:输出列个数 |
n_keys:分发列的个数 |
for_sync:该操作符是否仅用于同步 |
LOCAL DISTRIBUTE |
op_id:本地并行模式下节点所属通讯操作符中的序号 |
本地并行模式下,消息各线程的相互重分发 |
n_keys:分发列的个数 |
n_grp:分组列个数 |
flt_only:是否只需过滤非当前站点。各站点均拥有完整数据时,分发时只需要过滤掉非当前站点的数据 |
flt_site_data:是否需要过滤站点数据,仅当参数flt_only为TRUE时生效 |
pipe_mode(TRUE):是否可优化分区表 |
n:本地并行工作的线程数 |
fbtr_flag:是否用于fbtr(fast insert b tree)。是则为fbtr_flag(1),否则为fbtr_flag(0) |
LOCAL GATHER |
op_id:本地并行模式下节点所属通讯操作符中的序号 |
本地并行模式下,消息收集到主线程 |
n_grp_by:分组列个数 |
n_cols:输出列个数 |
n_keys:分发列的个数 |
invoke_flag:是否在父亲节点存在函数调用的表达式计算。值为TRUE时从EP不执行该计算且直接丢弃儿子节点相关数据 |
top_flag:是否有TOP子句需要处理 |
LOCAL SCATTER |
op_id:本地并行模式下节点所属通讯操作符中的序号 |
本地并行模式下,主线程向各从线程广播消息 |
notify_only:邮件是否携带通知标记 |
LOCK TID |
无参数 |
上锁 |
LSET |
无参数 |
DBLINK查询结果集 |
MERGE INNER JOIN3 |
key_num:等值连接条件数 |
归并内连接 |
KEY:等值连接条件 |
KEY_NULL_EQU:连接列的NULL值比较策略。取值:0:NULL与NULL不相等;1:NULL与NULL相等。例如:(0,1,0)表示第1个和第3个连接条件中NULL值视为不等,第2个连接条件中NULL值视为相等 |
MERGE SEMI JOIN3 |
(ANTI):是否为反连接 |
归并半连接 |
join_condition:连接条件 |
KEY:等值连接条件 |
KEY_NULL_EQU:连接列的NULL值比较策略。取值:0:NULL与NULL不相等;1:NULL与NULL相等。例如:(0,1,0)表示第1个和第3个连接条件中NULL值视为不等,第2个连接条件中NULL值视为相等 |
MPP BROADCAST |
op_id:MPP模式下节点所属通讯操作符中的序号 |
MPP模式下,消息广播到各站点,包含必要的集函数合并计算 |
MPP COLLECT |
op_id:MPP模式下节点所属通讯操作符中的序号 |
用于替换顶层MPP GATHER,除了收集数据到主节点,还增加主从节点间的同步执行功能,防止从节点不断发送数据到主节点造成邮件堆积 |
n_grp_by:分组列个数 |
n_cols:输出列个数 |
n_keys:分发列的个数 |
for_sync:该操作符是否仅用于同步 |
MPP DISTRIBUTE |
op_id:MPP模式下节点所属通讯操作符中的序号 |
MPP模式下,消息各站点的相互重分发 |
n_keys:分发列的个数 |
n_grp:分组列个数 |
filter:是否只需过滤非当前站点。各站点均拥有完整数据时,分发时只需要过滤掉非当前站点的数据 |
rowid_flag:是否根据rowid信息获取站点号进行分发 |
n:参与计算的站点数,值为0时表示其与EP个数一致 |
slave_empty:是否限制MPP从节点向主节点传送数据,或本地并行的从线程向主线程传送数据。取值:0:不限制;1:不允许MPP从节点向主节点传送数据;2:不允许本地并行的从线程向主线程传送数据 |
fbtr_flag:是否用于fbtr(fast insert b tree)。是则为fbtr_flag(1),否则为fbtr_flag(0) |
MPP GATHER |
op_id:MPP模式下节点所属通讯操作符中的序号 |
MPP模式下,消息收集到主站点 |
n_grp_by:分组列个数 |
n_cols:输出列个数 |
n_keys:分发列的个数 |
invoke_flag:是否在父亲节点存在函数调用的表达式计算。值为TRUE时,从EP不执行该计算且直接丢弃儿子节点相关数据 |
top_flag:是否有TOP子句需要处理 |
MPP SCATTER |
op_id:MPP模式下节点所属通讯操作符中的序号 |
MPP模式下,主站点向各从站点广播消息 |
MSYNC |
op_id:MPP模式下节点所属通讯操作符中的序号 |
MPP模式下,数据同步处理 |
MVCC CHECK |
无参数 |
多版本检查 |
NCUR2 |
cursorname:游标名 |
游标操作 |
NEST LOOP FULL JOIN2 |
join_condition:连接条件 |
嵌套循环全外连接 |
flt_batch_exec标记:节点上是否存在filter的批量指令,存在则为flt_batch_exec(1),否则为flt_batch_exec(0) |
NEST LOOP INDEX JOIN2 |
join_condition:连接条件 |
索引内连接 |
NEST LOOP INNER JOIN2 |
join_condition:连接条件 |
嵌套循环内连接 |
[with_var]:嵌套连接是否使用var方式 |
NEST LOOP LEFT JOIN2 |
join_condition:连接条件 |
嵌套循环左外连接 |
[with_var]:嵌套连接是否使用var方式 |
partition_keys_num:paritition outer join的KEY个数 |
ret_null:是否仅返回未匹配的行 |
NEST LOOP SEMI JOIN2 |
(ANTI):是否为反连接 |
嵌套循环半连接 |
join_condition:连接条件 |
[with_var]:嵌套连接是否使用var方式 |
(colidlist):与var变量相关的左表列序号序列。例如(0,1,3)表示三个var变量依次来自左表的第1、2、4列 |
flt_batch_exec标记:节点上是否存在filter的批量指令,存在则为flt_batch_exec(1),否则为flt_batch_exec(0) |
NSET2 |
无参数 |
结果集收集,一般是查询计划的顶层节点 |
NTTS2 |
for_mdis:是否从MPP DISTRIBUTE获得数据 |
临时表,临时存放数据 |
is_atom:是否要求单行数据 |
PARALLEL |
scan_type:分区表子分区裁剪方式。其返回值为FULL表示所有子分区裁剪,EQU表示等值子分区裁剪,NULL EQU表示空值子分区裁剪,GE_LE表示闭区间裁剪,G_LE表示左开右闭区间裁剪,GE_L表示左闭右开区间裁剪,G_L表示开区间裁剪,GE表示左闭区间裁剪,LE表示右闭区间裁剪,G表示左开区间裁剪,L表示右开区间裁剪,CONTAIN表示等值全文索引扫描,NOT CONTAIN表示空值全文索引扫描V_AND表示列存储表上的多列rowid AND 后查找,REMOTE表示dblink的远程查询,BITMAP表示位图索引扫描,IN LIST表示分区表首列in list优化扫描,BITMAP JOIN表示位图连接索引扫描,INDEX SKIP表示索引跳读(用于复合索引,过滤条件缺少前导列情况),GSEK表示空间索引扫描,-表示扫描条件缺失 |
控制水平分区子表的扫描 |
key_num:分区列计算表达式相关信息,格式为:(分区列的计算表达式中相等的个数,分区列的计算表达式中最后一列起始的个数,分区列的计算表达式中最后一列终止的个数) |
simple:是否对包含单分区列的一级分区表进行等值查询优化 |
range_sfun_opt:aagr+pll+cscn对于range分区列求min/max时的优化标记,若做了优化则为range_sfun_opt(1),否则为range_sfun_opt(0) |
PIPE2 |
无参数 |
管道。先做一遍右儿子,然后执行左儿子,并把左儿子的数据向上送,直到左儿子不再有数据 |
PRJT2 |
exp_num:映射列数 |
关系的“投影”(project)运算,用于选择表达式项的计算 |
is_atom:是否要求单行数据 |
PSCN |
无参数 |
批量参数当作表来扫描 |
REMOTE SCAN |
tabname@dblink_name:表名@dblink连接名 |
DBLINK远程表扫描 |
alias_name:表的别名 |
condition参数:用于展示dblink发送给远程的过滤条件 |
RN |
无参数 |
实现ROWNUM查询 |
RNSK |
(rownum_exp):与rownum相关的过滤条件 |
ROWNUM作为过滤条件时的计算处理 |
SAGR2 |
grp_num:分组项个数 |
如果输入流是有序的,则使用流分组,并计算集函数 |
sfun_num:返回上层操作符的集函数个数 |
distinct_flag:集函数参数是否去重 |
top_num:是否只返回前N组 |
slave_empty:是否限制MPP从节点向主节点传送数据,或本地并行的从线程向主线程传送数据。取值:0:不限制;1:不允许MPP从节点向主节点传送数据;2:不允许本地并行的从线程向主线程传送数据 |
keys:分组项 |
opt_num(n):内层分组项中前n项可以直接代表外层分组项 |
dist_arg_opt参数:标记是否做distinct优化(分组项+该distinct参数 刚好组成aagr/sagr使用索引的前导列,那么计算该参数的dist时无需使用hash表,直接相邻行比较即可(分组项组内参数已有序)),dist_arg_opt(a1,a2,...an),a对应每个distinct参数,取值0代表此distinct参数不优化计算,反之则为1 |
SELECT INTO2 |
无参数 |
查询插入 |
SET TRANSACTION |
writeable:是否为可更新事务 |
事务操作(START除外) |
iso_level:事务隔离级别,取值:READ UNCOMMITTED:读未提交;READ COMMITTED:读提交;REPEATABLE READ:可重复读;SERIALIZABLE:可序列化 |
SLCT2 |
(condition):过滤条件 |
关系的“选择”(select)运算,用于查询条件的过滤 |
SLCT_PUSHDOWN(TRUE):是否进行过滤条件下推的优化 |
SORT2 |
key_num:排序列个数 |
排序 |
is_distinct:排序时是否进行去重操作 |
is_adaptive:是否使用排序的自适应优化(即当下层数据有序时,此次排序实际不进行) |
SORT3 |
key_num:排序列个数 |
排序 |
partition_key_num:已经有序的前导排序列个数 |
is_distinct:排序时是否进行去重操作 |
top_flag:是否返回排序后的N行 |
is_adaptive:是否使用排序的自适应优化(即当下层数据有序时,此次排序实际不进行) |
can_discard:意义为xsort节点是否能被摘除(排序操作符在存在can_discard标记的情况下以管道模式执行, 直接上传左孩子数据) |
SPL2 |
stask_no:子任务的序号,-1表示root子任务 |
临时表。和NTTS2不同的是,它的数据集不向父亲节点传送,而是被编号,用编号和KEY来定位访问;而NTTS2的数据,主动传递给父亲节点 |
key_num:包含ROWID在内的KEY数 |
spool_num:SPOOL临时表编号 |
is_atom:是否限制只能产生单行结果 |
has_var:外层传入变量存在性探测结果(相关查询需探测外层传入变量) |
sites:站点的ID和并行度序列,“-”表示空。例如:(1:3,2:4)表示1号站点并行度3,2号站点并行度4 |
SSCN |
idxname(tabname) :索引名(表名) |
直接使用二级索引进行扫描 |
btr_scan:等于1表示使用B树扫描,等于0表示使用簇游标扫描 |
is_global:等于1时表示使用全局索引 |
SSEK2 |
scan_type:扫描类型 |
二级索引数据定位 |
idxname(tabname) :索引名(表名) |
scan_range:扫描范围 |
is_global:等于1时表示使用全局索引 |
START TRANSACTION |
writeable:是否为可更新事务 |
启动会话 |
iso_level:事务隔离级别,取值:READ UNCOMMITTED:读未提交;READ COMMITTED:读提交;REPEATABLE READ:可重复读;SERIALIZABLE:可序列化 |
STAT |
无参数 |
统计信息计算 |
TOPN2 |
top_num:TOP子句的行数表达式 |
取前N条记录 |
top_off:top_num的偏移量。例如:op_off=3、top_num=4时,从第3行后开始,取第4到第7共4行结果 |
top_percent:top_num的百分比。例如:top_percent=0.5、top_num=100时,取前50行结果(参数top_off和top_percent不会同时出现) |
UFLT |
IS_TOP_1:是否在更新操作时相同ROWID只保留1条记录,防止碰到重复数据报错。取值:FALSE:重复数据报错;FIRST:重复数据保留第一行;LAST:重复数据保留最后一行 |
处理UPDATE FROM子句 |
UNION |
无参数 |
UNION计算 |
UNION ALL |
CTE:递归WITH查询名 |
UNION ALL运算 |
UNION ALL(MERGE) |
merge_type:排序方式,取值:A:升序排列;D:降序排列;L:升序排列,NULL值结果排在末尾;1:降序排列,NULL值结果排在末尾 |
UNION ALL运算(使用归并) |
n_merge_keys:表的列数 |
UNION FOR OR(MERGE) |
merge_type:排序方式,取值:A:升序排列;D:降序排列;L:升序排列,NULL值结果排在末尾;1:降序排列,NULL值结果排在末尾 |
OR过滤的UNION计算(使用归并) |
n_merge_keys:表的列数 |
n_dist_keys:去重的列数 |
UNION FOR OR2 |
key_num:需要进行去重操作的列数 |
OR过滤的UNION计算 |
outer_join:UNION操作的外连接类型,取值:L:左外连接;R:右外连接;F:全外连接;-:非外连接 |
UPDATE |
(partition_type):分区类型,取值:Vertical Partition:垂直分区;Horizon Partition:水平分区;为空表示不分区 |
更新数据 |
table:表名或视图名,“-”表示空,使用远程操作时会增加“@”+“dblink连接名”作为后缀 |
type:更新类型,取值:SELECT、CURSOR |
mpp_opt:是否通过发送整个计划实现对MPP处理的优化 |
hp_opt:是否进行分区列等值过滤优化 |
UPDATE_REMOTE |
(partition_type):分区类型,取值:Vertical Partition:垂直分区;Horizon Partition:水平分区;为空表示不分区 |
DBLINK更新操作 |
table:表名或视图名,“-”表示空,使用远程操作时会增加“@”+“dblink连接名”作为后缀 |
type:更新类型,取值:SELECT、CURSOR |
mpp_opt:是否通过发送整个计划实现对MPP处理的优化 |
hp_opt:是否进行分区列等值过滤优化 |
MODEL |
cell_references:MODEL所有不同的单元格引用表达式的数量 |
MODEL子句 |
sorted:当可以使用key进行二分搜索或者model唯一性模式为:检查维度的所有组合值对应单元格的唯一性时,sorted(1),否则sorted(0) |
MERGE INTO |
无参数 |
合并数据 |