Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / dbms_job распределение работы не равномерно - почему так? / 7 сообщений из 7, страница 1 из 1
04.10.2021, 11:36
    #40101739
sharkoff76
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dbms_job распределение работы не равномерно - почему так?
Добрый день

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

Код: 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
04.10.2021, 11:59
    #40101748
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dbms_job распределение работы не равномерно - почему так?
Используемая версия/редакция позволяют использовать dbms_parallel_execute ?

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

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

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



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

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

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



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

SY.


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

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


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


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