Планировщик VS Эвенты

Добрый день.
Кто то проводил исследования, что лучше использовать для периодической обработки больших объемов записей, например удаления записей или перевода в какой то статус.
Есть два варианта непосредственно делать из Запланированных скриптов(sys_schedule_script) или из запланированного скрипта шедулить Эвент(событие sys_event_register)

Привет!

И в обработчиках системных событий, и в скриптах по расписанию есть таймауты, это следует учесть при планировании обработки очень больших объемов данных.

Системные события обрабатываются параллельно при наличии более одного event worker, что позволяет кратно ускорить скорость обработки данных через системные события, генерируя все нужные системные события сразу.

Cледует избегать обработки одной и той же записи в таблице (update, delete) через системные события одномоментно, чтобы не пришли “дедлоки” в базу данных.

В таких случаях рекомендуется генерировать системные события последовательно: завершение текущего генерирует следующее системное событие на обработку следующей порции данных и т.д.

При прочих равных обработка через системные события является более масштабируемой на бОльшее число обрабатываемых записей.

Не уверен до конца, но вроде обработчик конкретного системного события вылетает по таймауту через 1800 сек ( полчаса) в целях неблокирования очереди системных событий на обработку. Это следует учитывать при планировании размера групп данных на обработку в рамках одного системного события

С уважением, Никита

1 лайк

А могут запланированные скрипты выполняться параллельно? И какие нагрузки планировщик может выдержать?

Из документации. Но если версия ниже 1.19, по моему, то не работает параллельность.

Общее ограничение на параллельный запуск составляет 20 заданий: до 10 заданий на запланированные импорты и до 10 на скрипты одновременно.

Ограничение по времени на выполнение составляет 12 часов. Планировщик проверяет необходимость выполнения заданий раз в 1 минуту.

1 лайк

Да, щас нашел, спасибо за инфу.