Parallel多线程使用

来源:互联网 发布:linux新建文本文件命令 编辑:程序博客网 时间:2024/06/05 02:05

对于一个大的任务,一般的做法是利用一个进程,串行的执行,如果系统资源足够,可以采用parallel技术,把一个大的任务分成若干个小的任务,同时启用n个进程/线程,并行的处理这些小的任务,这些并发的进程称为并行执行服务器(parallel executeion server),这些并发进程由一个称为并发协调进程的进程来管理。

启用Parallel前的忠告:只有在需要处理一个很大的任务,如需要几十分钟,几个小时的作业中,并且要有足够的系统资源的情况下(这些资源包括cpu,内存,io),您才应该考虑使用parallel。否则,在一个多并发用户下,系统本身资源负担已经很大的情况下,启用parallel,将会导致某一个会话试图占用了所有的资源,其他会话不得不去等待,从而导致系统系能反而下降的情况,一般情况下,oltp系统不要使用paralleloltp系统中可以考虑去使用。

 ①查询语句中追加多线程

EXECUTE IMMEDIATE 'ALTER SESSION ENABLE PRALLEL QUERY';

SELECT /*+ PARALLEL(table 4) */

FROM   table

EXECUTE IMMEDIATE 'ALTER SESSION DISABLE PRALLEL QUERY';

 

②insert update delete语句中追加多线程

EXECUTE IMMEDIATE 'ALTER SESSION ENABLE PARALLEL DML';

INSERT /*+ parallel(TBLINVRCARD_tmp,2)*/ into TBLINVRCARD_tmp select /*+ pa
rallel(TBLINVRCARD,2)*/ * from TBLINVRCARD;

EXECUTE IMMEDIATE 'ALTER SESSION DISABLE PARALLEL DML';

 

注意:在同一事务中,如果对表进行了变更,则不可以对同一表进行多线程

反之,对表进行了多线程操作后不能进行查询变更

 

0 0