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 10.2.0.1 to 22.214.171.124 [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
<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'.
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