Большим преимуществом организации очередей является то, что она может сделать проблемы параллелизма, которые в противном случае действительно сложными (показать один и только один поток эту запись для обработки), действительно легкими. Без постановки в очередь вы могли бы попробовать, но не гарантировать, что такое поведение, и вам пришлось бы в конечном итоге выполнять большое количество промежуточных обновлений состояния и проверять наличие неисправных потоков.
В версии 10g и ниже Oracle реализовала операцию удаления транзакций с синтаксисом SKIP LOCKED
, что не разрешалось конечным пользователям. В 11g этот синтаксис был представлен, чтобы позволить людям решить эту проблему (покажите мне следующую запись), не требуя AQ
Реализации.
Вторым преимуществом AQ является то, что очистка очереди выполняется асинхронно.
Большим недостатком AQ является его размер и обслуживание - в итоге создается порядка 7 таблиц / IOT для одной постоянной очереди / темы, и нельзя напрямую поддерживать эти объекты базы данных, но вы должны выполнить обслуживание через пакеты DBMS_AQ и DBMS_AQADM.