oracle执行计划broadcast,详解GaussDB(DWS) explain分布式执行计划的示例

摘要:本文主要介绍如何详细解读GaussDB(DWS)产生的分布式执行计划,从计划中发现性能调优点。前言

执行计划(又称解释计划)是数据库执行SQL语句的具体步骤,例如通过索引还是全表扫描访问表中的数据,连接查询的实现方式和连接的顺序等。如果 SQL 语句性能不够理想,我们首先应该查看它的执行计划。本文主要介绍如何详细解读GaussDB(DWS)产生的分布式执行计划,从计划中发现性能调优点。

1、执行算子介绍

要读懂执行计划,首先要知道数据库执行算子的概念:

oracle执行计划broadcast,详解GaussDB(DWS) explain分布式执行计划的示例_第1张图片

下面重点介绍下基于sharing nothing的分布式计划中最重要的一类算子——STREAM算子

三种类型的stream算子

1)Gather Stream(N:1) – 每个源结点都将其数据发送给目标结点

oracle执行计划broadcast,详解GaussDB(DWS) explain分布式执行计划的示例_第2张图片

2)Redistribute Stream(N:N) – 每个源节点将其数据根据连接条件计算Hash值,根据重新计算的Hash值进行分布,发给对应的目标节点

oracle执行计划broadcast,详解GaussDB(DWS) explain分布式执行计划的示例_第3张图片

3)Broadcast Stream(1:N) – 由一个源节点将其数据发给N个目标节点

oracle执行计划broadcast,详解GaussDB(DWS) explain分布式执行计划的示例_第4张图片

其中1)主要用于CN与DN间的数据交换,2)与3)主要用于DN间的数据交换

2、EXPLAIN用法

SQL执行计划是一个节点数,显示执一条SQL语句执行时的详细步骤。每一个步骤是一个数据库运算符,也叫作一个执行算子。使用explain命令可以查看优化器为每个查询生成的具体执行计划。

1) EXPLAIN的语法

oracle执行计划broadcast,详解GaussDB(DWS) explain分布式执行计划的示例_第5张图片

其中,option中COSTS与NODES的默认值为ON,其他参数默认为OFF。

说明:

a) EXPLAIN + QUERY并不会真正执行,只会将计划打印出来,指定option中的ANALYZE可以进行实际执行

b) PERFORMANCE 选项默认会将所有的选项置为ON,即显示所有的执行信息。

c) CPU/BUFFER/DETAIL 选项依赖于ANALYZE,只有ANALYZE置为ON的时候,才能使用这几个选项。

d) DETAIL选项用来控制输出,DETAIL 置为ON时,会显示各个DN上具体的执行信息;DATAIL 置为OFF时,显示所有DN的汇总信息,即最大最小值信息。

oracle执行计划broadcast,详解GaussDB(DWS) explain分布式执行计划的示例_第6张图片

2) EXPLAIN显示格式

GaussDB中提供了两种显示格式(normal/pretty),通过设置参数explain_perf_mode进行控制。其中,normal格式为默认的显

你可能感兴趣的:(oracle执行计划broadcast,详解GaussDB(DWS) explain分布式执行计划的示例)