摘自《VLDB and Partitioning Guide》
1、视图介绍
V$PX_BUFFER_ADVICE
提供所有并行查询的BUFFER的历史使用情况,以及相关的建议规划。对于并行执行过程中的内存不足等问题,可以查询这个视图以便能够重新配置一下SGA。
V$PX_SESSION
提供关于并行进程会话、服务器组、服务器集合、服务器数量的信息,也提供实时的并行服务器进程信息。同时可以通过这个视图查看并行语句的请求DOP和实际DOP等信息。
V$PX_SESSTAT
将V$PX_SESSION和V$SESSTAT进行JOIN操作,所以此视图可以提供所有并行会话的统计信息。
V$PX_PROCESS
提供所有并行process的信息,包括状态、会话ID、进程ID以及其它信息。
V$PX_PROCESS_SYSSTAT
提供并行服务器的状态信息及BUFFER的分配信息。
V$PQ_SLAVE
列出所有并行服务器的统计信息。
V$PQ_SYSSTAT
列出并行查询的系统统计信息。
V$PQ_SESSTAT
列出并行查询的会话统计信息。只有并行语句执行完毕后,才能查看到此视图的会话统计信息。
V$PQ_TQSTAT
提供并行操作的统计信息,能够显示每个阶段的每个并行服务器处理的行数、字节数。
只有并行语句执行完毕后,才能查看到此视图的会话统计信息,而且只能保留到会话的有效期。对于并行DML,只有提交或回滚后方能显示此视图的相关统计信息。
2、常用脚本
1)查看系统中并行统计信息,是否实际使用了请求的DOP,以及这些操作是否发生降级:
SELECT NAME,VALUE FROM v$sysstat t WHERE t.NAME LIKE ‘%Parallel%‘;
NAME VALUE
Parallel operations not downgraded 4
Parallel operations downgraded to serial 0
Parallel operations downgraded 75 to 99 pct 0
Parallel operations downgraded 50 to 75 pct 0
Parallel operations downgraded 25 to 50 pct 0
Parallel operations downgraded 1 to 25 pct 0
2)查看V$PQ_SYSSTAT视图中并行从属服务器统计信息。通过查看这些信息,可以看出数据库中的并行设置是否正确。如果看到服务器关闭(Servers Shutdown)和服务器启动值较高,则可能表明PARALLEL_MIN_SERVERS参数的设置值过低,因为持续不断启动和关闭并行进程需要相应的成本支出。
SELECT * FROM V$PQ_SYSSTAT;
STATISTIC VALUE
Servers Busy 8
Servers Idle 8
Servers Highwater 16
Server Sessions 59
Servers Started 35
Servers Shutdown 19
Servers Cleaned Up 0
Queries Queued 0
Queries Initiated 4
Queries Initiated (IPQ) 0
DML Initiated 0
DML Initiated (IPQ) 0
DDL Initiated 0
DDL Initiated (IPQ) 0
DFO Trees 4
Sessions Active 1
Local Msgs Sent 41706
Distr Msgs Sent 0
Local Msgs Recv‘d 78048
Distr Msgs Recv‘d 0
3)查询V$PQ_TQSTAT视图,可以确定各个并行服务器之间如何拆分工作的,也可以显示时间使用的DOP。不过查询此视图时,需要在并行操作同一个会话中执行方可显示信息。
SELECT * FROM V$PQ_TQSTAT;
DFO_NUMBER TQ_ID SERVER_TYPE NUM_ROWS BYTES OPEN_TIME AVG_LATENCY WAITS TIMEOUTS PROCESS INSTANCE
1 0 Producer 1 36 0 0 13 0 P001 1
1 0 Producer 1 36 0 0 12 0 P004 1
1 0 Producer 1 36 0 0 13 0 P003 1
1 0 Producer 1 36 0 0 13 0 P000 1
1 0 Producer 1 36 0 0 13 0 P002 1
1 0 Producer 1 36 0 0 13 1 P006 1
1 0 Producer 1 36 0 0 13 0 P007 1
1 0 Producer 1 36 0 0 14 1 P005 1
1 0 Consumer 8 288 0 0 154 42 QC 1
4)查询V$SYSTEM_EVENT或者V$SESSION_EVENT视图,可以知道数据库中与并行相关的等待。
SQL> SELECT event,wait_class,total_waits FROM V$SYSTEM_EVENT WHERE event LIKE ‘PX%‘;
EVENT WAIT_CLASS TOTAL_WAITS
------------------------------ ---------- -----------
PX Deque wait Idle 3
PX Idle Wait Idle 94
PX Deq: Join ACK Idle 59
PX Deq Credit: need buffer Idle 1009
PX Deq Credit: send blkd Idle 4609
PX Deq: Parse Reply Idle 56
PX Deq: Execute Reply Idle 323
PX Deq: Execution Msg Idle 376
PX Deq: Table Q Normal Idle 77772
PX qref latch Other 14
PX Deq: Signal ACK RSG Other 8
EVENT WAIT_CLASS TOTAL_WAITS
------------------------------ ---------- -----------
PX Deq: Signal ACK EXT Other 11
PX Deq: Slave Session Stats Other 22
13 rows selected.