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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM