我使用的是带有高级队列(AQ) w/ java的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使用者是具有3个并发线程的去队列消息。
一切都很好!和愉快的场景,只要消息在队列中@10K。一旦队列中的消息加倍或三倍,脱队列性能就会显著下降!
我遵循了以下链接01/server.111/b 28420/SPE.htm
对IO和AQ的性能调整有什么建议吗?
发布于 2013-05-30 14:43:26
我看这是旧的,但我会试试看。它在队列中运行良好,但对于大量消息却运行良好,这一事实使我相信,问题可能在底层队列表和IOT的优化器统计中。
来自11gR2 Oracle高级队列用户指南
确保正在收集统计信息,以便选择用于检索消息的最佳查询计划。默认情况下,队列表被排除在自动收集统计信息之外。建议使用的方法是收集具有代表性队列消息加载的统计信息并锁定它们。
还有其他几种可能性,包括调优(或不调优) AQ_TM_PROCESSES和使用ASSM,但是如果没有更多关于数据库环境的信息,就很难建议修复,甚至很难知道这是否是问题所在。
https://stackoverflow.com/questions/15651602
复制相似问题