RE: Queues

  • From: Joe Smith <joe_dba@xxxxxxxxxxx>
  • To: <ahmusch@xxxxxxxxx>
  • Date: Thu, 26 Aug 2010 08:40:26 -0500

I am not going to create my own.  I am just trying to get a good understanding 
of the queue mechanism.

Thanks.

> Date: Thu, 26 Aug 2010 08:20:49 -0500
> Subject: Re: Queues
> From: ahmusch@xxxxxxxxx
> To: joe_dba@xxxxxxxxxxx
> CC: oracle-l@xxxxxxxxxxxxx
> 
> Well, there's less of a difference in 11g now that Oracle's exposed
> the SKIP LOCKED clause, but before, how would you do FIFO processing
> or have multiple consumers of a heap table efficiently each be the
> only consumer of any given able record while still maintaining
> appropriate transactional integrity?
> 
> You'd have your queue table (QT), which you'd have to select from
> where rownum = 1.  However, you'd have to select for update, which
> blocks.  So you're serialized at that point for the duration of the
> entire process you dequeued the record for.
> 
> So to minimize that serialization time, you create an in-flight queue
> table (IFQT), which are the records that some consumer is processing
> right now.  So now the process is select from QT for update where
> rownum = 1, insert into IFQT, delete from QT where rowid = :qt_rowid,
> commit.  And if consumer crashes, you have figure out some cleanup
> processing to reprocess the record it had in flight.
> 
> Or you can set up a queue, and simply use DBMS_AQ.DEQUEUE and get
> queue transactionality "for free."
> 
> Doing publish-subscribe is even harder.  You've paid for this
> functionality in Oracle already.  If you have a need to use it, why
> not use it instead of rolling your own?
> 
> On Wed, Aug 25, 2010 at 10:33 AM, Joe Smith <joe_dba@xxxxxxxxxxx> wrote:
> > I have been reading the PDFs and documents on MOS, but can someone tell me
> > the difference or advantage of using Queues instead of writing messages to a
> > regular heap-organized Oracle table?
> >
> > Or what is the real advantage of queues that I am missing?
> >
> 
> 
> 
> -- 
> Adam Musch
> ahmusch@xxxxxxxxx
> --
> //www.freelists.org/webpage/oracle-l
> 
> 
                                          

Other related posts: