PL / SQL中的并行性

时间:2010-07-11 07:45:50

标签: sql oracle plsql parallel-processing

如何在pl-sql中并行运行一个查询?

我需要所有的流程......

2 个答案:

答案 0 :(得分:5)

您可以创建JOB以便以并行性运行相同的查询。

实施例

CREATE OR REPLACE PROCEDURE target_deletion
IS
   number_of_the_job   NUMBER;
BEGIN
   DBMS_JOB.submit (number_of_the_job, 'begin stored_procedure_for_deletion; end;', SYSDATE);
END;
/

请假设您在Oracle数据库中有一个完全如下的存储过程:

stored_procedure_for_deletion

如果您希望使用PARALLELISM多次执行该存储过程,则必须创建一个名为“TARGET_DELETION”(如上所述)的存储过程,该过程使用PL / SQL块创建一个调用的新作业: / p>

开始stored_procedure_for_deletion;端;

...执行名为“stored_procedure_for_deletion”的程序。

作业立即启动,因此您可以连续多次运行存储过程target_deletion,以便以并行性运行相同的过程。

答案 1 :(得分:3)

如果在实例级别启用,Oracle本身具有并行查询功能:

http://www.orafaq.com/wiki/Parallel_Query_FAQ

编辑:目前还不清楚你要做什么。也许您希望 异步 查询执行,因此Oracle作业建议是正确的(请参阅另一个答案)。

Oracle并行功能不是异步的,它只是说优化器在查询执行中使用一定数量的CPU来加速结果。例如:

select /*+ PARALLEL(DOGS,4) */ * from DOGS where A>20

以4级并行度执行查询。