My Oracle Support Banner

Poor Dequeue Performance From A Multi-Consumer Transactional Queue (Doc ID 730125.1)

Last updated on FEBRUARY 01, 2022

Applies to:

Oracle Database - Enterprise Edition - Version to [Release 10.2 to 11.2]
Oracle Database Cloud Schema Service - Version N/A and later
Oracle Database Exadata Cloud Machine - Version N/A and later
Oracle Database Exadata Express Cloud Service - Version N/A and later
Oracle Cloud Infrastructure - Database Service - Version N/A and later
Information in this document applies to any platform.


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
<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 = 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'.


To view full details, sign in with your My Oracle Support account.

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

In this Document

My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.