|
|
|
несколько режимов работы джоба
|
|||
|---|---|---|---|
|
#18+
Добрый день! подскажите пожалуйста, ситуация следующая: есть таблица х1, в которую производится инсерт данных, далее эти данные необходимо перекладывать в таблицу х2 из которой они уже берутся для обработки, для этого я настроил джоб который раз в минуту забирает 5000 записей из х1 в х2, как мне сделать так, чтобы при малом кол-ве записей у меня не было простоя и джоб не ждал минуту, а сразу их перекладывал, анализируя скажем очередь записей в некой таблице х3, т.е. если в х3 больше 5000 записей, то джоб кладет из х1 в х2 раз в минуту по 5к, если записей в х3 меньше, то он не ждет минуту, а сразу их перекладывает подскажите, как реализовать такую логику в одном джобе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2017, 11:09 |
|
||
|
несколько режимов работы джоба
|
|||
|---|---|---|---|
|
#18+
Сергей_00001Добрый день! подскажите пожалуйста, ситуация следующая: есть таблица х1, в которую производится инсерт данных, далее эти данные необходимо перекладывать в таблицу х2 из которой они уже берутся для обработки, для этого я настроил джоб который раз в минуту забирает 5000 записей из х1 в х2, как мне сделать так, чтобы при малом кол-ве записей у меня не было простоя и джоб не ждал минуту, а сразу их перекладывал, анализируя скажем очередь записей в некой таблице х3, т.е. если в х3 больше 5000 записей, то джоб кладет из х1 в х2 раз в минуту по 5к, если записей в х3 меньше, то он не ждет минуту, а сразу их перекладывает подскажите, как реализовать такую логику в одном джобе?producer не должен строить свою логику, полагаясь на производительность consumer ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2017, 11:28 |
|
||
|
несколько режимов работы джоба
|
|||
|---|---|---|---|
|
#18+
Ну написать-то, конечно, можно(NEXT_DATE никто не отменял), но надо ли? Вы же понимаете, что ваше "а сразу" означает, что что-то должно проверять размерность таблицы постоянно? Можно, конечно, сделать очередь вместо таблицы, натравить на неё scheduler с plsql-нотификацией, но.. Может всё-таки в вашей задаче проще дать возможность конечному пользователю определить свои "5 минут" самостоятельно. Неужели наполнение таблицы настолько хаотичное, что не может быть определено никаким расписанием? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2017, 12:06 |
|
||
|
несколько режимов работы джоба
|
|||
|---|---|---|---|
|
#18+
Сергей_00001, раздели джоб и процедуру. запускай джоб каждые 10 секунд. в процедуре проверяй запущена такая же процедура выставляя какой нибудь флаг. если запущена закончили выполнение процедуры. если нет то берем 5к записей и пилим. изживай узость мышления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2017, 12:33 |
|
||
|
несколько режимов работы джоба
|
|||
|---|---|---|---|
|
#18+
Сергей_00001, Вместо джобов используй триггер на x2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2017, 12:37 |
|
||
|
несколько режимов работы джоба
|
|||
|---|---|---|---|
|
#18+
JaRo, нет, урегулировать не получится, х1 это таблица в которую приходят запросы пользователей о подключении/отключении/изменении параметров услуг в огромном количестве Vint, тут скорее не узость мышления, а незнание матчасти и отсутствие опыта, если не сложно можешь на примере показать, как это сделать? и хотел уточнить по поводу использования триггеров, насколько я знаю, они могут существенно накинуть нагрузки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2017, 13:38 |
|
||
|
несколько режимов работы джоба
|
|||
|---|---|---|---|
|
#18+
Сергей_00001насколько я знаюНа заборе прочитал? Сергей_00001на примере показать, как это сделать?Сферический конь в вакууме у каждого свой. http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2017, 15:43 |
|
||
|
несколько режимов работы джоба
|
|||
|---|---|---|---|
|
#18+
Сергей_00001подскажите, как реализовать такую логику в одном джобе ? Логику вычисления даты и времени следующего запуска джоба нужно реализовывать в собственной хитровылюбленной функции, возвращающей тип DATE, имя которой и указывать в качестве параметра NEXT_DATE джоба. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2017, 16:30 |
|
||
|
несколько режимов работы джоба
|
|||
|---|---|---|---|
|
#18+
То есть, если, к примеру, 4,000 записей, то после выполнения не нужно ждать и можно через 5 секунд запустить? Тут скорее всего дату нужно выставлять этой же процедурой по окончанию работы + 10 секунд к примеру. З/Ы кто то уже писал про next_date ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2017, 16:33 |
|
||
|
несколько режимов работы джоба
|
|||
|---|---|---|---|
|
#18+
Сергей_00001, Каждая процедура, реализующая атомарное действие, должна заниматься своим делом, при этом друг про друга такие процедуры знать ничего не должны. И должна быть процедура, реализующая процесс, иногда их называют оркестраторами. Именно она решает когда должны запускаться процедуры, реализующие атомарные действия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2017, 17:04 |
|
||
|
несколько режимов работы джоба
|
|||
|---|---|---|---|
|
#18+
Сергей_00001, В одном из проектов вполне себе успешно работал механизм описанный Кайтом или в 2 day developer's guide Вкратце - фид пишет в таблицу в real time, processed_flag - 'N', функциональный индекс CREATE INDEX ... ON ... (DECODE("PROCESSED_FLAG",'N','N')) содержит ссылки только на необработанные записи. Отдельный джоб крутит бесконечный цикл, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. nexttime у джоба - 1 минута, на случай падений. Исходная таблица либо не чистится вовсе, либо ночью отдельный джоб заботится об уже обработанных записях. Соответственно если есть новые записи и джобу нечего делать - входящие обрабатываются сразу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2017, 18:35 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=167&tid=1886102]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 251ms |
| total: | 422ms |

| 0 / 0 |
