调整并行查询性能所需要查看的视图以及其中涉及的统计视图

一、并行查询所需要查看的视图

概念说明

实时数据查询的视图:即只有存在并行查询操作时,也就是说,在并行查询操作运行期间,这些视图上才针对该并行查询的相关数据。平时,在数据库实例(级别)上没有并行查询运行时,查询这些视图,是没有数据,提示“未选定行”。而且在并行查询期间的不同时刻,查询这些视图所得的数据是不一样的,会变化的,也就是说,这些视图实时反映了该并行查询当前(即执行这些视图进行查询的那一刻)的状态。

当前会话的视图:即这些视图只能查询执行该视图查询的会话上最后一次并行查询的相关信息或是针对从启动数据库实开始到例执行该视图查询之前所有并行查询的某些统计项的累计值。



两类视图都有哪些?

当前会话的视图有哪些?

1、V$PQ_TQSTAT

在当前执行了并行查询的会话上用V$PQ_TQSTAT,才能查到该并行查询的统计信息。

比较10391事件和 V$PQ_TQSTAT结果的异同

.帮助在一个查询中测定不平衡的问题(即看每个并行服务器进程的NUM_ROWS和BYTES字段是否大体相差多不多),如果一个并行服务器进程任务重,别的并行服务器进程都已经完成好了,它还没有,则协调者进程还是等待它完成后,才能得出结果并将结果发送给用户进程。所以,整个并行操作中,该并行服务器进程影响整体执行速度的短板。


同一个表队列上的所有生产者发送的字节(即该视图上的bytes字段)之和等于所有消费者接收的字节之和



2、V$PQ_SESSTAT。

实时数据查询的视图有哪些?

1、V$PX_SESSION

           该视图描述的对象(主题)是(一个并行查询里的)并行服务器进程,即slave process。一个并行服务器进程由该视图里的SERVER_GROUP、SERVER_SET、SERVER#这三个字段所表示,即这三个字段唯一确定一个并行查询里的一个并行服务器进程,而不是唯一确定一个数据库实例上的一个并行服务器进程。要唯一确定一个数据库实例上的一个并行服务器进程,则在三个字段基础上,再加上QCINST_ID  、QCSID、 QCSERIAL#这三个字段QCINST_ID  、QCSID、 QCSERIAL#这三个字段唯一确定一个数据库实例级别上的一个并行协调者进程(QC)。

          知道了一个并行服务器进程,接下来我们就看该并行服务器进程是属于哪个并行协调者进程(QC)。一个并行协调者进程(QC),由该视图上的QCINST_ID  、QCSID、 QCSERIAL#这三个字段唯一。我们知道一个并行服务器进程是属于哪个并行协调者进程(QC)后,一个并行查询操作具体由哪些并行服务器进程和哪个并行协调者进程(QC)组成这个问题就解决了。

          这样,我们知道一个并行服务器进程是属于哪个并行协调者进程(QC)后,该视图里的REQ_DEGREEDEGREE这两个字段,我们就知道他们的意义是什么了,即我们知道这两个字段是对哪个并行查询操作上的哪个表说的。我们知道这两个字段是对哪个并行查询操作说的。一个并行查询操作对应的SQL语句里若是存在多个表的连接,而每个表的并行度不一样,则执行并行查询操作时取最大值作为(并行查询操作的)并行度,详见《并行查询的执行计划解读》。所以,我们是说这两个字段是对哪个并行查询操作说的,而不是说这两个字段是对哪个并行查询操作上的哪个表说的。这里说的并行查询操作,对应的SQL语句是不包含子查询的。所以,比如,一个并行查询操作对应的SQL语句上带有两子查询的话,则相当于说这个并行查询由三个子并行查询(两个子查询和一个最外层的查询)组成,每个子并行查询对应一个DFO tree。下面这个例子里,就是并行查询由两个子并行查询组成的:

select /*+ parallel(t1 4) parallel(v1 8 ) */
 t1.id
  from t1,
       (select /*+ parallel(t1 4) parallel(t2 4) */
         rownum, t1.id
          from t1, t2
         where t1.id = t2.id) v1
 where t1.id = v1.id;

上面SQL语句对应的DFO结构图:




     上图在红框内的就是表示该SQL语句里子查询对应的一个DFO tree,也即对应一个子并行查询。
  
(select /*+ parallel(t1 4) parallel(t2 4) */
         rownum, t1.id
          from t1, t2
         where t1.id = t2.id)

这个子查询可知,其对应的并行查询执行时的并行度为4。又p0到p7这些进程都是属于这个子并行查询的,且p0到p7这些进程,每个进程在视图V$px_session上都有一数据行与之对应,所以,p0到p7这些进程在视图V$px_session里对应的数据行上的REQ_DEGREE字段上都是4。

注释:

1、查看该视图里字段的顺序为,先看并行服务器进程相关字段,再看其协调者的相关字段,最后看并行度字段。

2、一个并行查询可以由多个DFO tree组成,一个DFO tree对应为一个group(即V$PX_SESSION视图中的SERVER_GROUP字段),一个group则由多个set(即V$PX_SESSION视图中的SERVER_SET字段)组成,一个group至多由2个set构成。SERVER#,表示一个set里并行服务器进程的编号。


2、V$PQ_SYSSTAT

        该视图,表示在实例级别上查看从启动该实例开始到当前为止所有运行过的并行查询统计信息的累积值。该视图STATISTIC字段下的统计项都是实时统计项,除了Servers Busy、Servers Idle这两个统计项外,其他统计项的值都是表示在实例级别上查看从启动该实例开始到当前为止所有运行过的并行查询在统计项上的累积值。而Servers Busy、Servers Idle这两个统计项则是表示当前(即查询该视图时)对应的值。

Servers Busy这个统计项,表示当前(即查询该视图时)在实例(级别)上有几个并行服务器进程在执行并行查询工作。

Servers Idle这个统计项,表示当前(即查询该视图时)在实例(级别)上有存在几个并行服务器进程处于空闲没有参与在执行并行查询工作的。

       Servers Started、Servers Shutdown、Servers Cleaned Up这一组统计项,表示进程的几个状态,表示历史上到现在为止有过该状态的进程的次数。进程的次数,不是指进程的个数,相当于说人次的意思,即比如历史上同一个进程有过多次启动(Servers Started)的状态。

注释:进程在生命周期结束前,有的状态为Servers Started、Servers Shutdown(暂停、关闭);进程在生命周期结束时,为清除(Servers Cleaned Up)。

       Local Msgs Sent、Local Msgs Recv'dDistr Msgs Sent、Distr Msgs Recv'd这两组统计项,表示并行进程间为了协调工作而往来的同步信息。 Local Msgs Sent、Local Msgs Recv'd这两个统计项的值是一样的,因为是发送和接收方都在在本机上。Distr Msgs Sent、Distr Msgs Recv'd这两个统计项的值一般不一样,一样也是巧合。在单实例数据库(非RAC集群数据库)上执行并行操作时,Distr Msgs Sent、Distr Msgs Recv'd这两个统计项的值没有远程节点间的同步信息交换,所以Distr Msgs Sent、Distr Msgs Recv'd这两个统计项的值始终为0。


3、

V$PX_PROCESS_SYSSTAT、V$PX_PROCESS


二、并行查询的视图中所涉及的统计视图小结







附加:

V$PQ_TQSTAT

V$PQ_TQSTAT containsstatistics on parallel execution operations. The statistics are compiled after the querycompletes and only remain for the duration of the session.Itdisplays the number of rows processed through each parallel execution server ateach stage of the execution tree. This view can help determine skew problems ina query's execution.(Note that for PDML, information fromV$PQ_TQSTAT is available only after a commit orrollback operation.)

Column

Datatype

Description

DFO_NUMBER

NUMBER

Data flow operator (DFO) tree number to differentiate queries

TQ_ID

NUMBER

Table queue ID within the query, which represents the connection between two DFO nodes in the query execution tree

SERVER_TYPE

VARCHAR2(10)

The role in table queue - producer/consumer/ranger

NUM_ROWS

NUMBER

The number of rows produced/consumed

BYTES

NUMBER

The number of bytes produced/consumed

OPEN_TIME

NUMBER

Time (seconds) the table queue remained open

AVG_LATENCY

NUMBER

Time (minutes) for a message to be dequeued after it enters the queue

WAITS

NUMBER

The number of waits encountered during dequeue

TIMEOUTS

NUMBER

The number of timeouts when waiting for a message

PROCESS

VARCHAR2(10)

Process ID

INSTANCE

NUMBER

Instance ID

在当前执行了并行查询的会话上用V$PQ_TQSTAT,才能查到该并行查询的统计信息。

比较10391事件和 V$PQ_TQSTAT结果的异同

.帮助在一个查询中测定不平衡的问题(即看每个并行服务器进程的NUM_ROWS和BYTES字段是否大体相差多不多),如果一个并行服务器进程任务重,别的并行服务器进程都已经完成好了,它还没有,则协调者进程还是等待它完成后,才能得出结果并将结果发送给用户进程。所以,整个并行操作中,该并行服务器进程影响整体执行速度的短板。


同一个表队列上的所有生产者发送的字节(即该视图上的bytes字段)之和等于所有消费者接收的字节之和



V$PQ_SYSSTAT

V$PQ_SYSSTAT listssystem statistics for parallel queries. After you have run a query or DMLoperation, you can use the information derived from V$PQ_SYSSTAT to viewthe number of slave processes used, and other information for the system.

Column

Datatype

Description

STATISTIC

VARCHAR2(30)

Name of the statistic:

  • Servers Busy - Number of currently(查询该视图时) busy servers on this instance
  • Servers Idle - Number of currently idle servers(空闲进程指的是目前还存在在内存上但是结束时间不到又未执行任何操作的) on this instance
  • Servers Highwater - Number of active servers on this instance that have partaken in >= 1 operation so far(所有执行过多个操作的并行服务进程的个数)
  • Server Sessions - Total number of operations executed in all servers on this instance(所有并行服务进程所执行过的(执行计划的)操作的个数)
  • Servers Started - Total number of servers started on this instance
  • Servers Shutdown - Total number of servers shutdown(关闭) on this instance
  • Servers Cleaned Up - Total number of servers on this instance cleaned up due toprocess death
  • Queries Initiated - Total number of parallel queries initiated on this instance
  • DDL Initiated - Total number of parallel DDL operations that were initiated
  • DML Initiated - Total number of parallel DML operations that were initiated
  • DFO Trees - Total number of DFO trees executed on this instance
  • Local Msgs Sent - Total number of local (intra-instance) messages(是什么意义的消息)sent on this instance
  • Distr Msgs Sent - Total number of remote (inter-instance) messages sent on this instance
  • Local Msgs Recv'd - Total number of remote (inter-instance) messages received on this instance
  • Distr Msgs Recv'd - Total number of remote (inter-instance) messages received on this instance

VALUE

NUMBER

Value of the statistic

在实例级别上查看从启动该实例开始到当前为止所有运行过的并行查询统计信息的累积值。


V$PQ_SESSTAT

V$PQ_SESSTAT listssession statistics for parallel queries. After you have run a query or DMLoperation, you can use the information derived from V$PQ_SESSTAT to viewthe number of slave processes used, and other information for the session andsystem.

Column

Datatype

Description

STATISTIC

VARCHAR2(30)

Name of the statistic:

  • Queries Parallelized - Number of queries run in parallel
  • DDL Parallelized - Number of DDL operations run in parallel
  • DML Parallelized - Number of DML operations run in parallel
  • DFO Trees - Number of executed DFO trees
  • Server Threads - Number of PX servers used
  • Allocation Height - Requested number of servers per instance(该项在LAST_QUERY列下的值就是一个并行查询的并行度)
  • Allocation Width - Requested number of instances
  • Local Msgs Sent - Number of local (intra-instance) messages sent
  • Distr Msgs Sent - Number of remote (inter-instance) messages sent
  • Local Msgs Recv'd - Number of local (intra-instance) messages received
  • Distr Msgs Recv'd - Number of remote (inter-instance) messages received

LAST_QUERY

NUMBER

Value of the statistic for the last operation

SESSION_TOTAL

NUMBER

Value of the statistic for the entire session to this point in time

SESSION_TOTAL字段下的值的意义:

该视图用于查询当前会话的统计信息(有史以来的),即在当前会话上查看从启动该实例开始到当前为止所有运行过的并行查询统计信息的累积值。


LAST_QUERY字段下的值的意义:

该视图用于查询当前会话上在执行该视图查询前最后一次并行查询的统计信息。


V$STATNAME

V$SESSTAT

V$SYSSTAT



V$PX_PROCESS

V$PX_PROCESS containsinformation about the sessions running parallel execution.

Column

Datatype

Description

SERVER_NAME

VARCHAR2(4)

The name of the PX server (P000, P001, and so on)

STATUS

VARCHAR2(9)

The state of the PX server (IN USE|AVAILABLE)

PID

NUMBER

The process identifier

SPID

VARCHAR2(12)

OS process ID

SID

NUMBER

The session ID of the PX server, if in use

SERIAL#

NUMBER

The session serial number of the PX server, if in use


V$PX_PROCESS_SYSSTAT


V$PX_SESSION

V$PX_SESSION contains information about the sessions running parallel execution.

ColumnDatatypeDescription
SADDRRAW(4 | 8)Session address
SIDNUMBERSession identifier
SERIAL#NUMBERSession serial number
QCSIDNUMBERSession identifier of the parallel coordinator
QCSERIAL#NUMBERSession serial number of the parallel coordinator
QCINST_IDNUMBERInstance number on which the parallel coordinator is running
SERVER_GROUPNUMBERThe logical group of servers to which this cluster database process belongs
SERVER_SETNUMBERThe logical set of servers to which this cluster database process belongs. A single server group will have at most two server sets.
SERVER#NUMBERThe logical number of the cluster database process within a server set
DEGREENUMBERThe degree of parallelism being used by the server set
REQ_DEGREENUMBERThe degree of parallelism that was requested by the user when the statement was issued and prior to any resource, multi-user, or load balancing reductions

注释:

V$PX_SESSION

有并行查询运行期间,才能从该视图上获得该并行查询的相关数据



V$PX_SESSTAT

The V$PX_SESSTAT view provides a joinof the session information fromV$PX_SESSION and theV$SESSTAT table.

 


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值