PL / SQL中“选择进入”语句中的并行提示

时间:2018-10-11 07:06:04

标签: oracle plsql

Oracle中普通DML SQL查询中的并行提示可以按以下方式使用

 select /*+ PARALLEL (A,2) */  * from table A ;

我们可以通过类似的方式在PL / SQL中使用并行提示来在oracle中选择语句吗?

  select /*+ PARALLEL(A,2) */ A.* BULK COLLECT INTO g_table_a from Table A ;

如果我使用上述语法,是否有任何方法可以验证上述select语句是否并行执行?

编辑:假设g_table_a是ROWTYPE表的表数据结构

2 个答案:

答案 0 :(得分:2)

如果该语句花费的时间很短,则您不想并行运行它。请注意,例如查询说串行执行需要0.5秒,因此并行执行可能需要2.5秒,因为建立并行执行的开销最大。

因此,如果查询花费很长时间,则您有足够的时间检查V$SESSION(在RAC中使用gv$session),并查看与运行查询的用户的所有会话。

select * from gv$session where username = 'your_user'

对于串行执行,您只能看到一个会话,对于并行执行,您只能看到一个协调器和其他会话,最多可达所选并行度的两倍。

或者使用v$px_session来将并行工作进程会话与查询协调器连接起来。

 select SID, SERIAL#, DEGREE, REQ_DEGREE 
 from v$px_session 
 where  qcsid = <SID of the session running teh parallel statement>;

在这里,您还会看到所需的并行度和实际使用的 DOP

答案 1 :(得分:0)

您可以从查询的解释计划中轻松地进行检查。如果是Plsql,还可以跟踪该过程并检入TKprof文件。