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)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?