zoukankan      html  css  js  c++  java
  • Oracle如何查询会话并行度

    Oracle如何查询会话并行度

    需要定位到会话的SID值。

    自己发起的会话可在一开始使用如下语句查询。

    select userenv('sid') from dual;

    并行度可通过如下SQL查询:

    SELECT * from gv$px_session pxs where  pxs.qcsid||pxs.qcserial#=(SELECT sid||serial# FROM gv$session WHERE sid=289 and inst_id=1);

    其中,DEGREE字段为实际使用的并行度。

    关于gv$px_session字段的说明如下:

    字段名 数据类型 描述
    SADDR RAW(4 | 8) 会话地址
    SID NUMBER 会话标识符
    SERIAL# NUMBER 会话序列号
    QCSID NUMBER 并行协调器的会话标识符
    QCSERIAL# NUMBER 并行协调器的会话序号
    QCINST_ID NUMBER 运行并行协调器的实例号
    SERVER_GROUP NUMBER 此集群数据库进程所属的服务器逻辑组
    SERVER_SET NUMBER 此集群数据库进程所属的逻辑服务器集。一个服务器组最多有两个服务器组。
    SERVER# NUMBER 服务器集中集群数据库进程的逻辑号
    DEGREE NUMBER 服务器集使用的并行度
    REQ_DEGREE NUMBER 用户在发出语句时以及在任何资源、多用户或负载平衡减少之前请求的并行度

    补充点1

    类似SQL:select /*+ parallel(4) */ from table_name;执行后,查询GV$PX_SESSION.REQ_DEGREE会等于你指定的并行度4,但是实际的GV$PX_SESSION.DEGREE的值会等于min(parallel_max_servers,4)。

    举个例子,

    如果parallel_max_servers=8,指定并行度为 /*+ parallel(4) */,那么GV$PX_SESSION.DEGREE=4

    如果parallel_max_servers=2,指定并行度为 /*+ parallel(4) */,那么GV$PX_SESSION.DEGREE=2

    补充点2

    并行产生的子会话数=2*GV$PX_SESSION.DEGREE。

    举个例子(假设sid=289),

    如果parallel_max_servers=32,指定并行度为 /*+ parallel(4) */,那么GV$PX_SESSION.DEGREE=4。此时下边count(*)=8:

    SELECT count(*) from gv$px_session pxs where  pxs.qcsid||pxs.qcserial#=(SELECT sid||serial# FROM gv$session WHERE sid=289 and inst_id=1) and sid!=289;

    如果parallel_max_servers=2,指定并行度为 /*+ parallel(4) */,那么GV$PX_SESSION.DEGREE=2。此时下边count(*)=4:

    SELECT count(*) from gv$px_session pxs where  pxs.qcsid||pxs.qcserial#=(SELECT sid||serial# FROM gv$session WHERE sid=289 and inst_id=1) and sid!=289;

    尚不清楚是否严格正确。

    补充点3

    会话级别开启并行,不通过hint,不通过表/索引设置并行度。

    用这个语句发现不生效:alter session enable parallel query;

    用这个语句生效:alter session force parallel query;   或者  alter session force parallel query parallel 4;

    不生效的原因尚不清楚。

    补充点4

    使用默认的parallel_max_servers,可能导致Utlrp.Sql脚本运行特别慢并且有可能导致进程数量爆满。

    详见Utlrp.Sql Is Taking Too Long To Complete. (文档 ID 564605.1)、Where Can I Find the Parallel Version of Utlrp.sql? (文档 ID 230136.1)

  • 相关阅读:
    第九章 ZYNQ-MIZ701 片上ADC的使用
    第八章 ZYNQ-MIZ701 软硬调试高级技巧
    第七章 ZYNQ-MIZ701 GPIO使用之EMIO
    第六章 ZYNQ-MIZ701 GPIO使用之MIO
    第十章 MIZ702 ZYNQ制作UBOOT固化程序
    bzoj1070 [SCOI2007]修车
    bzoj1449 [JSOI2009]球队收益
    bzoj2007 [Noi2010]海拔
    bzoj1001 [BeiJing2006]狼抓兔子
    网络流的一类经典问题--二元费用问题
  • 原文地址:https://www.cnblogs.com/PiscesCanon/p/15573520.html
Copyright © 2011-2022 走看看