日期:2014-05-17  浏览次数:20714 次

oracle 并行问题
oracle 并行问题
select /*+parallel(t 2)*/count(*) from t,这样的话就是把这条sql的并行度设为2,
在运行这条sql时,在pl dev里tools-->sessions-->active sessions里能看到这条sql的并行的进程。说明是并行了

1,我的疑惑是:有时候在资源足够的情况下,类似的sql在tools-->sessions-->active sessions里能没有并行的进程,
那么没看到并行的进程,那这种sql是在运行的时候并行了没?
2,还有哪些方法看sql(或者过程里的sql)是并行了没?

------解决方案--------------------
执行计划  最直接。
按F5,里面出现了PX 之类的东西
------解决方案--------------------
v$session  、  v$px_session 
ps:oltp慎用parallel!并行不总是那么有效、
------解决方案--------------------
linux中可以用ps -f查看
------解决方案--------------------
确定是否走并行,看执行计划是比较靠谱的
------解决方案--------------------
并行查询可以在查询语句,子查询语句中使用,但是不可以使用在一个远程引用的对象上(如DBLINK)。 
一个查询能够并行执行,需要满足一下条件:

(1)       SQL语句中有Hint提示,比如Parallel 或者 Parallel_index.

(2)       SQL语句中引用的对象被设置了并行属性。

(3)       多表关联中,至少有一个表执行全表扫描(Full table scan)或者跨分区的Index range SCAN。