理解并行解释计划

日期: 2010-12-21 作者:Guy Harrison翻译:冯昀晖 来源:TechTarget中国 英文

解释计划反映了对于并行SQL语句的额外步骤,反映了并行执行涉及的额外的并行操作。   例如,请看下面这个简单的SQL语句和它的执行计划:   SQL> EXPLAIN PLAN FOR   2 SELECT * FROM customers   3 ORDER BY cust_last_name; Id Operation Name 0 SELECT STATEMENT   1 SORT ORDER BY   2 TABLE ACCESS FULL CUSTOMERS   “CUSTOMERS ”表被扫描,行被扫描进行排序。当该语句并行化执行的时候,执行计划中会增加额……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

解释计划反映了对于并行SQL语句的额外步骤,反映了并行执行涉及的额外的并行操作。

  例如,请看下面这个简单的SQL语句和它的执行计划:

  SQL> EXPLAIN PLAN FOR

  2 SELECT * FROM customers

  3 ORDER BY cust_last_name;

Id

Operation

Name

0

SELECT STATEMENT

 

1

SORT ORDER BY

 

2

TABLE ACCESS FULL

CUSTOMERS

  “CUSTOMERS ”表被扫描,行被扫描进行排序。当该语句并行化执行的时候,执行计划中会增加额外的操作。

  SQL> EXPLAIN PLAN FOR

  2 SELECT /*+ parallel */ *

  3 FROM customers

  4 ORDER BY cust_last_name;

  SQL> SELECT * FROM table (DBMS_XPLAN.display

  2 (null,null,'BASIC +PARALLEL'));

Id

Operation

Name

TQ

IN-OUT

PQ Distrib

0

SELECT STATEMENT

 

 

 

 

1

PX COORDINATOR

 

 

 

 

2

PX SEND QC (ORDER)

:TQ10001

Q1,01

P->S

QC (ORDER)

3

SORT ORDER BY

 

Q1,01

PCWP

 

4

PX RECEIVE

 

Q1,01

PCWP

 

5

PX SEND RANGE

:TQ10000

Q1,00

P->P

RANGE

6

PX BLOCK ITERATOR

 

Q1,00

PCWC

 

7

TABLE ACCESS FULL

CUSTOMERS

Q1,00

PCWP

 

  新计划中包含了各种“PX”步骤,描述了涉及到的并行操作。我们分别看看每个步骤:

PX BLOCK ITERATOR

这个操作通常是并行处理步骤中的第一步。“BLOCK ITERATOR ”把表分成多块,可以由参与并行处理的每一台服务器并行处理。

PX SEND

“PX SEND”操作只是指明数据是从一个并行进程传送到另一个并行进程。

PX RECEIVE

“PX RECEIVE”操作说明一个并行进程接收了另一个并行进程传递的数据。

PX SEND QC

这是给并行查询协调进程的一个发送操作。

PX COORDINATOR

该步骤简单地展示了并行查询协调者从并行流接收数据并返回给SQL语句。

  图6展示了这些步骤如何与DOP值为2的并行处理相关联。

  “PX SEND”和“PX RECEIVE”操作与分配方案(在“DBMS_XPLAN”的“PQ Distrib”列有显示)有关,描述了数据如何被从一台伺服送到另一台伺服。

  图6 执行计划并行执行步骤。

  在排序操作中,通常会看到“RANGE”选项,因为被排序的行是基于排序列进行分配的。例如,在前面的查询中,当按“CUST_FIRST_NAME ”做排序时,Oracle可能把名称“A-K”开头的送到一台伺服器上,名称“L-Z”开头的送到另一台伺服器上。下面是通常会遇到的分配选项:

  “DBMS_XPLAN”输出“IN-OUT”列描述了数据如何在并行进程之间和内部进行流转。该列对应于表“PLAN_TABLE ”中的列“OTHER_TAG”。这些列可以包含表13-1中所示的值之一。

  在“PLAN_TABLE”或者“DBMS_XPLAN”输出中,“PARALLEL_FROM_SERIAL”或者“S->P”的出现可能代表着不同的并行执行流出现了一个串行瓶颈。

相关推荐