并行SQL中的“V$PQ_TQSTAT”视图

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

即便有了“EXPLAIN PLAN”和SQL跟踪输出,要想知道并行查询是怎么执行的也仍然是很困难的。例如,DOP值到底是多少?每个并行服务器进程做了多少工作?   “V$PQ_TQSTAT”视图包含有在每个并行查询服务器组之间传递数据的信息,包括传输和接收的行数。不幸的是,该视图只在发起并行查询的会话中可见,而且只保留最近执行的查询。这就限制了它在生产环境中的可用性,但是它在调试并行查询时仍然是有价值的。

  例如,请考虑下面这个并行查询:   SQL> SELECT /*+ parallel */   2 prod_id, S……

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

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

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

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

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

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

即便有了“EXPLAIN PLAN”和SQL跟踪输出,要想知道并行查询是怎么执行的也仍然是很困难的。例如,DOP值到底是多少?每个并行服务器进程做了多少工作?

  “V$PQ_TQSTAT”视图包含有在每个并行查询服务器组之间传递数据的信息,包括传输和接收的行数。不幸的是,该视图只在发起并行查询的会话中可见,而且只保留最近执行的查询。这就限制了它在生产环境中的可用性,但是它在调试并行查询时仍然是有价值的。

  例如,请考虑下面这个并行查询:

  SQL> SELECT /*+ parallel */
  2 prod_id, SUM (amount_sold)
  3 FROM sales
  4 GROUP BY prod_id
  5 ORDER BY 2 DESC;

Id

Operation

Name

TQ

IN-OUT

0

SELECT STATEMENT

 

 

 

 

1

PX COORDINATOR

 

 

 

 

2

PX SEND QC (ORDER)

:TQ10002

Q1,02

P->S

 

3

SORT ORDER BY

 

Q1,02

PCWP

 

4

PX RECEIVE

 

Q1,02

PCWP

 

5

PX SEND RANGE

:TQ10001

Q1,01

P->P

 

6

HASH GROUP BY

 

Q1,01

PCWP

 

7

PX RECEIVE

 

Q1,01

PCWP

 

8

PX SEND HASH

:TQ10000

Q1,00

P->P

 

9

HASH GROUP BY

 

Q1,00

PCWP

 

10

PX BLOCK ITERATOR

 

Q1,00

PCWC

 

11

TABLE ACCESS FULL

SALES

Q1,00

PCWC

 

  如果我们在查询执行后直接查询“V$PQ_TQSTAT”视图,我们可以看到在每个并行服务器组之间传递的行数。每个唯一的“TQ_ID”对应于服务器组之间的一次交互,这一点可以从执行计划中的“IN-OUT”列的“P->P”或者“P->S”看出来。你可以把“TQ_ID”的值与“EXPLAIN PLAN”输出中的“TQ”列进行关联。

  SQL> SELECT dfo_number, tq_id, server_Type, MIN (num_rows),
  MAX (num_rows),count(*) dop
  2 FROM v$pq_tqstat
  3 GROUP BY dfo_number, tq_id, server_Type
  4 ORDER BY dfo_number, tq_id, server_type DESC;

  对于复杂的并行SQL,可能有在“DFO_NUMBER”列中由不同值表示的多个并行通道。

  利用“V$PQ_TQSTAT”视图来度量真正的DOP值和并行服务器之间传输的数据量。

相关推荐