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

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

概念说明

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

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



两类视图都有哪些?

当前会话的视图有哪些?

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.

 


 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 前后端分离的博客系统物理视图如下: 前端视图: - HTML/CSS/JavaScript文件:包括博客主页、文章详情页、分类页面、标签页面、搜索页面等。 - 静态资源文件:包括图片、音频、视频等。 后端视图: - 数据库:包括文章、分类、标签、评论等数据的存储。 - 服务器端API:提供给前端调用的接口,包括获取文章列表、获取文章详情、获取分类列表、获取标签列表、提交评论等。 - 后台管理系统:提供给管理员管理博客的界面,包括发布文章、修改文章、删除文章、管理评论等功能。 总体来说,前端通过调用后端API获取数据,并渲染到页面上,用户在前端页面上进行交互和操作,后端通过数据库进行数据存储和管理,并提供API接口给前端调用。后台管理系统则是提供给管理员管理博客的界面。 ### 回答2: 前后端分离博客物理视图是指在开发博客网站时,将前端和后端的代码分离部署在不同的服务器上,以实现更好的性能和可维护性。 在这种架构下,前端代码通常部署在一个或多个Web服务器上,用于处理网页的展示和交互逻辑。前端服务器与用户的浏览器建立连接,接收用户请求,然后通过网络请求获取后端服务器提供的数据。前端服务器可以使用HTML、CSS、JavaScript等技术实现网页的布局、样式和交互。 后端代码通常运行在一个或多个应用服务器上,用于处理与数据库的交互、业务逻辑的处理和数据的处理等。后端服务器接收到前端服务器发送的请求后,会处理相关的业务逻辑并查询数据库,然后将结果返回给前端服务器。 在这种架构下,前后端的交互通常通过API(Application Programming Interface,应用程序接口)进行。前端服务器通过发送HTTP请求调用后端服务器的API接口,获取所需的数据,再将数据渲染到前端页面上进行展示。 这种物理视图的好处是可以将前端和后端进行独立部署和扩展,使得系统更加灵活和可伸缩。同时,由于前后端分离,前端开发者和后端开发者可以并行进行工作,加快了开发效率。此外,前端的编写逻辑简单化,只需关注页面展示和交互逻辑,而后端则专注于处理业务逻辑和数据操作。 总而言之,前后端分离博客物理视图是一种较为先进和灵活的架构方式,能提高博客网站的性能、可维护性和开发效率。 ### 回答3: 前后端分离是一种架构模式,它将网站或应用程序的前端和后端进行独立开发和部署。在前后端分离的博客中,物理视图的概念仍然存在,但具体表现形式有所不同。 博客的物理视图包括前端和后端两个部分。前端物理视图主要处理网页的展示和用户交互,包括HTML、CSS、JavaScript等前端技术的实现。前端物理视图通常由前端开发人员使用前端框架或库进行设计和开发。 后端物理视图主要处理数据的处理和业务逻辑,以及与数据库的交互。后端物理视图通常由后端开发人员使用后端语言(如Java、Python、Node.js等)和框架进行开发。后端物理视图负责接收前端请求,处理数据,并返回相应的数据给前端。 前后端分离的博客物理视图的特点是前端和后端的开发和部署独立,前端通过API接口与后端进行数据交互。前端负责界面设计和用户交互,后端负责处理数据和业务逻辑。这种分离的优势是可以提高开发效率和灵活性,也方便进行团队协作。 在前后端分离的博客物理视图中,前端通过API接口获取后端提供的数据,并使用前端技术将数据展示在网页上。前端开发人员可以根据需求使用不同的前端框架来设计和实现网页的交互效果。 总之,前后端分离的博客物理视图由前端和后端两个部分组成,分别负责网页展示和用户交互以及数据处理和业务逻辑。这种架构模式可以提高开发效率和灵活性,适用于复杂的博客系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值