У нас есть несколько процессов, которые читают одну таблицу базы данных, получают доступную запись и работают с ней. Он работает нормально.механизм ожидания/уведомления для нескольких считывателей в Oracle sql?
Когда в этой таблице нет записи, каждый процесс ожидает 5 секунд и снова считывает его. Итак, запись может простаивать в таблице в течение 5 секунд, что плохо.
Что было бы рекомендовано для устранения таких ожиданий и продолжения сразу после создания записи? Одним из решений может быть триггер, который делает что-то при создании записи. Но это решение требует знания рабочих процессов для доставки записи в один из незанятых процессов.
Похоже, что идеальным решением было бы, когда каждый процесс начнет читать через SQL из чего-то, и когда будет создана запись, один из процессов ожидания будет иметь запись, а другой будет продолжать ждать.
Предоставляет ли Oracle 10 такой или подобный механизм?
Спасибо за ответ, но я не уверен, что это помогает мне. Он выглядит как дополнительный механизм уведомления об обновлении. Регулярный триггер может это сделать. Меня не интересует подсчет обновлений. Мой интерес ждет обновления, а затем уведомляет один (самый ожидаемый) ожидающий запрос. Так много процессов запускают запрос и все ждут, и когда есть что ответить, тогда их ожидание завершается, а затем может продолжаться (в худшем случае - конкурировать за этот результат, но это еще один известный сценарий). – Alex
Невозможно, чтобы один запрос ожидал изменений вещей; Запросы Oracle всегда совпадают по времени и возвращают результаты только с момента начала запроса. Однако DCN или CQN могут запускать процесс PL/SQL или JDBC, который затем запускает запрос. –