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


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

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
Symptoms
Cause
Solution
References

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