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。