暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase8a MPP explain计划内容释义

VV_刺头王 2022-05-24
452

1、explain缺省输出格式的查询计划示例如下:

gbase> explain select * from t1 inner join t2 on t1.b=t2.b;

+----+-------------+-------------+-------+-----------+

| ID | MOTION      | OPERATION   | TABLE | CONDITION |

+----+-------------+-------------+-------+-----------+

| 02 | [RESULT]    |  INNER JOIN |       | (b = b)   |

|    |             |   Step      | <00>  |           |

|    |             |   Step      | <01>  |           |

| 01 | [REDIST(b)] |  Table      | t2[a] |           |

| 00 | [REDIST(b)] |  Table      | t1[a] |           |

+----+-------------+-------------+-------+-----------+

5 rows in set (Elapsed: 00:00:00.03)

其中各部分含义为:

解释

ID

计划的步骤:

从00开始执行,也就是从显示界面的下方向上执行

MOTION

该步骤的执行结果集的处理方式:

RESULT:结果发送到客户端

GATHER:结果发送到汇总节点

REDIST(…):结果HASH重分布,括号中为计算HASH的列,如果超长则截断为两个点

NO REDIST:结果直接保存到对应的数据分片,不进行重分布

BROADCAST:结果拉复制表

RAND REDIST:结果随机分布到所有节点

SCALAR N:结果为标量,N为标量子查询的编号,如果条件中有引用,则使用&xNx&方式引用

OPERATION

某个步骤的具体操作:

SCAN:单表扫描,并使用条件过滤数据;

Table:单表,没有过滤条件;

SubQueryN:子查询,N为自动编号;

Step:使用前一个Step的结果;

INNER/LEFT/FULL JOIN:连接操作;

WHERE:子查询的WHERE条件;

GROUP:分组操作;

ORDER:排序操作;

LIMIT:计算LIMIT,OFFSET;

AGG:distinct,聚集操作;

UNION/UNION ALL/MINUS/INTERSECT:UNION操作;

对于每个步骤(ID列不为空的为一个步骤)OPERATION每层有1个空格的缩进。

TABLE

OPERATION涉及到的表,只显示别名和属性,超长截断为两个点;

HASH分布表:中括号中显示HASH列;

复制表:显示[REP];

随机分布表:显示[DIS];

Nocopies随机分布表:显示[NOCPS];

Nocopies HASH分布表:显示[NOCPS,HASH列];

子查询:OPERATION列显示SubQueryN,其中N为数字,用来区分不同的子查询;

某个步骤的结果:OPERATION列显示为Step,本列显示为<N>其中N为用到的步骤的第一列ID,表示该步骤的结果;

CONDITION

显示操作的条件,例如FILTER的单表条件,JOIN的连接条件,GROUP BY,ORDER BY,LIMIT的内容。

如果某个条件可能使用索引,会在有索引的列后进行标注,例如:

WHERE t1.a{S} > 10 表示可能使用t1.a的智能(Smart)索引

WHERE t1.a{H} = 10 表示可能使用t1.a的HASH索引

WHERE t1.a{H}= t2.b 表示可能使用t1.a的HASH索引

WHERE t1.a{H} = t2.b{H}表示可能使用t1.a和t2.b的HASH索引

WHERE contains(t1.a{F}…) 表示可能使用t1.a的全文(Full Text)索引

只有物理表的单列包含索引,

物理表单列的>,<,>=,<=,=可能使用智能索引

物理表单列的=可能使用HASH索引,包括等于常量和等值JOIN

物理表的contains函数可能使用全文索引

2、 执行计划部分主要内容与查询计划一致,同时增加了一些其它属性,如下表:

属性

含义

isQueryFinalStep

是否查询步骤的最后一步

DestType

目标类型:1为所有节点,2为汇总节点,3为某个节点(说明使用该目标表的SQL全部使用复制表)其它没有使用

isProducer

是否生产者:0不是,1是

isConsumer

是否消费者:0不是,1是

producerDistID

生产者ditribution ID

consumerDistID

消费者distribution ID

isSingleHashNode

是否单节点HASH优化,0不是,1是

isHashRedist

是否HASH重分布步骤,0不是,1是

Hash Redist Indexes

HASH重分布的表达式下标

isGroupHashRedist

未使用

isAllTableAreHashTmpDist

是否所有源表都是HASH重分布临时表。0不是,1是

isExistsHashReditTable

是否源表中存在HASH重分布临时表。0不是,1是

queryString

该步骤的SQL

targetTable

目标表

targetSchema

目标表建表语句

[Step] DropList

该步骤执行完后可以删除的临时表列表

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论