Poor Dequeue Performance From A Multi-Consumer Transactional Queue
Last updated on NOVEMBER 30, 2013
Applies to:Oracle Database - Enterprise Edition - Version 10.2.0.1 to 220.127.116.11 [Release 10.2 to 11.2]
Information in this document applies to any platform.
Checked for currency on 30-Nov-2013
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
<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
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'.
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