【问题标题】:Oracle AQ performance tuningOracle AQ 性能调优
【发布时间】:2013-03-17 02:32:58
【问题描述】:

我正在使用带有高级队列 (AQ) 和 java JMS API 的 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。 一旦队列中的消息加倍或三倍dequeue,性能就会显着下降!!!。

我关注了以下链接 http://docs.oracle.com/cd/B28359_01/server.111/b28420/perform.htm

对 IO 和 AQ 的性能调整有什么建议吗?

【问题讨论】:

    标签: java database oracle jms oracle-aq


    【解决方案1】:

    我知道这是旧的,但我会试一试。它在队列中的少量消息运行良好但在大量消息的情况下运行不佳这一事实使我相信问题可能出在底层队列表和 IOT 的优化器统计信息中。

    来自11gR2 Oracle Advanced Queuing User's Guide

    确保正在收集统计信息,以便优化查询 正在选择检索消息的计划。默认情况下,队列 表被锁定,无法自动收集统计信息。这 推荐的用途是使用代表性队列收集统计信息 消息加载并锁定它们。

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

    【讨论】:

      猜你喜欢
      • 2016-06-25
      • 1970-01-01
      • 1970-01-01
      • 2018-12-20
      • 1970-01-01
      • 2011-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多