Quartz org.quartz.jobStore.selectWithLockSQL блокировка строки

Я использую кварц в кластерном режиме

У меня есть некоторая конфликтная блокировка строк на уровне БД, вызванная чрезмерным вызовом:

org.quartz.jobStore.selectWithLockSQL

"SELECT * FROM QRTZ_LOCKS ГДЕ SCHED_NAME =:" SYS_B_0 "И LOCK_NAME =: 1 ДЛЯ ОБНОВЛЕНИЯ"

Я читаю кварцевые документы и все еще не очень понимаю, почему выполняется запрос над запросом.

Какова цель блокировки этой строки?

Привет

Ответ 1

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

В разделе кластеризации документации (http://quartz-scheduler.org/generated/2.2.1/html/qs-all/#page/Quartz_Scheduler_Documentation_Set%2Fre-cls_cluster_configuration.html%23):

В настоящее время кластеризация работает только с JDBC-ресурсом (JobStoreTX или JobStoreCMT) и, по существу, работает, имея каждый node кластера совместно использовать одну и ту же базу данных. Балансировка нагрузки происходит автоматически, при этом каждый node работы по сжиганию кластера как можно быстрее. Когда время срабатывания триггера, первый node для его приобретения (путем размещения блокировка на нем) - это node, который запустит его.