Oracle AQ性能调优

时间:2013-03-27 03:51:14

标签: java database oracle jms oracle-aq

我正在使用带有Java JMS API的高级排队(AQ)的oracle数据库[11.2]。 我当前的oracle设置是默认设置,没有额外的调整参数。 高层架构:

数据库将消息排入持久队列(按优先级排序)

EXEC DBMS_AQADM.CREATE_QUEUE_TABLE (queue_table => 'order_queue_table', queue_payload_type => 'aqadm.order_message_t', sort_list=>'PRIORITY,ENQ_TIME'); 
EXEC DBMS_AQADM.CREATE_QUEUE (queue_name => 'order_queue', queue_table => 'order_queue_table'); 
EXEC DBMS_AQADM.START_QUEUE (queue_name => 'order_queue');

Java JMS使用者是具有3个并发线程的出列消息。

一切都很棒!和快乐的场景一样,只要队列中的消息@ 10K。 一旦队列中的消息加倍或三倍 出列 ,性能就会大幅下降!!!

我按照以下链接 http://docs.oracle.com/cd/B28359_01/server.111/b28420/perform.htm

有关IO和AQ性能调优的任何建议吗?

1 个答案:

答案 0 :(得分:3)

我看到这是旧的,但我会试一试。它运行良好,队列中的消息数量很少,但是大量(r)消息很少,这让我相信问题可能出在底层队列表和IOT的优化器统计中。 / p>

来自11gR2 Oracle Advanced Queuing User's Guide

  

确保收集统计信息以便进行最佳查询   正在选择检索邮件的计划。默认情况下,队列   表格被锁定,不会自动收集统计信息。该   建议用法是使用代表队列收集统计信息   消息加载并锁定它们。

还有其他几种可能性,包括调整(或不调整)AQ_TM_PROCESSES和使用ASSM,但如果没有更多关于数据库环境的信息,很难提出修复建议,甚至不知道是否存在问题。