Параллелизм в PL / SQL - PullRequest
       11

Параллелизм в PL / SQL

2 голосов
/ 11 июля 2010

как я могу запустить один запрос в pl-sql- параллельно?

мне нужен весь поток ...

Ответы [ 2 ]

5 голосов
/ 11 июля 2010

Вы можете создавать задания для выполнения одного и того же запроса с параллелизмом.

Пример

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;
/

Explaination

Предположим, у вас есть в вашей базе данных Oracle хранимая процедура, вызываемая в точности так:

stored_procedure_for_deletion

Если вы хотите выполнить эту хранимую процедуру много раз с PARALLELISM, вам нужно создать хранимую процедуру с именем, например, «TARGET_DELETION» (написано выше), которая создает новое задание, которое вызывается, с блоком PL / SQL: * 1012

begin store_procedure_for_deletion; конец;

... выполнение вашей процедуры, которая называется «selected_procedure_for_deletion».

Задание запускается немедленно, поэтому вы можете запускать хранимую процедуру target_deletion много раз подряд, чтобы запустить одну и ту же процедуру с параллелизмом.

3 голосов
/ 11 июля 2010

Если включено на уровне экземпляра, у самого Oracle есть функции параллельного запроса:

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

изменить: не ясно, что вы пытаетесь сделать. Возможно, вам нужно выполнить асинхронный запрос, поэтому предложение о работе с Oracle правильно (см. Другой ответ)

Параллельная функция Oracle не является асинхронной, она просто говорит оптимизатору использовать определенное количество процессоров для выполнения запросов, чтобы ускорить результат. Например:

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

выполняет ваш запрос с параллелизмом на степени 4.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...