Poor Dequeue Performance From A Multi-Consumer Transactional Queue

(Doc ID 730125.1)

Last updated on NOVEMBER 30, 2013

Applies to:

Oracle Database - Enterprise Edition - Version 10.2.0.1 to 11.2.0.2 [Release 10.2 to 11.2]
Information in this document applies to any platform.
Checked for currency on 30-Nov-2013


Symptoms

Dequeue performance from a Multi-Consumer transactional queue table in a 10.2 has degraded when compared with 9.2 when processing large groups of messages.

Tracing the dequeueing session reveals that the recursive sql statement of the form

select msg_enq_tid
from
<USER>.aq$_<QUEUE_TABLE>_i qidx1 where subscriber# = 2 and name = 0 and
queue# = 0 and txn_step# = (select min(qidx2.txn_step#)
from <USER>.aq$_<QUEUE_TABLE>_i qidx2 where qidx2.subscriber#
=
qidx1.subscriber# and qidx2.name = qidx1.name and
qidx2.queue# =
qidx1.queue# and qidx2.msg_enq_tid = qidx1.msg_enq_tid)
order by msg_priority, msg_chain_no, msg_local_order_no;

is consuming the most resources in the number of blocks queries and therefore 'buffer gets'.

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms