powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / dbms_job распределение работы не равномерно - почему так?
7 сообщений из 7, страница 1 из 1
dbms_job распределение работы не равномерно - почему так?
    #40101739
sharkoff76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день

Запускаю несколько джобов чтобы распараллелить громоздкий пересчет.
Вот как то так

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
DECLARE
  c_cnt_job CONSTANT NUMBER := 4;
  v_cnt_run_job NUMBER;
  lnJob         NUMBER;
  v_done        BOOLEAN := FALSE;
BEGIN
  MERGE INTO some_work_table c
  USING (SELECT c.rowid rd,
                ntile(c_cnt_job) over(PARTITION BY NULL ORDER BY NULL) nt
           FROM appdeploy.some_work_table c
          WHERE CHANGEDFROMLASTCHECK = 'Y') t$src
  ON (c.rowid = t$src.rd)
  WHEN MATCHED THEN
    UPDATE
       SET c.job_no         = t$src.nt,
           c.job_updated    = NULL,
           c.job_row_status = 'N';
  --
  --
  dbms_application_info.set_module('MAIN', 'STARTED');
  --
  FOR i IN 1 .. c_cnt_job LOOP
    lnJob := i;
    dbms_job.submit(job       => lnJob,
                    what      => 'begin schema.some_pkg.FS_JOB(' || i || '); end;',
                    next_date => SYSDATE + 1 / (24 * 60 * 60));
  END LOOP;
  COMMIT;
  -- sleep for a job settled
  DBMS_LOCK.sleep(5);
  --sync and wait
  WHILE NOT v_done LOOP
    SELECT COUNT(1) INTO v_cnt_run_job FROM dba_jobs WHERE what LIKE '%some_pkg.FS_JOB%';
    IF v_cnt_run_job > 0 THEN
      DBMS_LOCK.sleep(60);
    ELSE
      v_done := TRUE;
    END IF;
  END LOOP;
END;



Ожидание:
Все 4 джоба работают , обрабатывают и количество обработанных записей примерно одинаково.

Реальность:
Самый быстрый job обрабатывает зачастую почти в 3 раза быстрее чем самый медленный. Хотя формально они все одинаковые.

При этом все jobЫ используют одну и ту же процедуру. Которая объявлена с PARALLEL_ENABLE.

Есть ли в этом проблема?
Как диагностировать в чем проблема?
...
Рейтинг: 0 / 0
dbms_job распределение работы не равномерно - почему так?
    #40101748
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используемая версия/редакция позволяют использовать dbms_parallel_execute ?

И второй вопрос, не возникает ли при этом большое количество ожиданий concurency?
...
Рейтинг: 0 / 0
dbms_job распределение работы не равномерно - почему так?
    #40101800
sharkoff76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,

У меня пока 11.2.0.4 , судя по всему возможно. Спасибо! Буду пробовать.
Хотя на первый взгляд немного сложнее "ручной" параллели.
...
Рейтинг: 0 / 0
dbms_job распределение работы не равномерно - почему так?
    #40101823
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sharkoff76,

Код: plsql
1.
next_date => SYSDATE + 1 / (24 * 60 * 60));



Job scheduler минимальный интервал контролируется параметром "_job_queue_interval". Значение по умолчанию 5 сек.

SY.
...
Рейтинг: 0 / 0
dbms_job распределение работы не равномерно - почему так?
    #40101824
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY
sharkoff76,

Код: plsql
1.
next_date => SYSDATE + 1 / (24 * 60 * 60));



Job scheduler минимальный интервал контролируется параметром "_job_queue_interval". Значение по умолчанию 5 сек.

SY.


Точнее не минимальный интервал job а интервал когда планировщик задач просыпается чтобы проверить нужно и что-нибудь запустить.

SY.
...
Рейтинг: 0 / 0
dbms_job распределение работы не равномерно - почему так?
    #40101968
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY
SYJob scheduler минимальный интервал контролируется параметром "_job_queue_interval". Значение по умолчанию 5 сек.
Точнее не минимальный интервал job а интервал когда планировщик задач просыпается чтобы проверить нужно и что-нибудь запустить.C 19с это уже не так. Задания стартуют практически мгновенно.
...
Рейтинг: 0 / 0
dbms_job распределение работы не равномерно - почему так?
    #40102081
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic
C 19с это уже не так. Задания стартуют практически мгновенно.


sharkoff76У меня пока 11.2.0.4
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / dbms_job распределение работы не равномерно - почему так?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]