2013-03-27 2 views
2

java JMS API가있는 고급 대기열 (AQ)과 함께 Oracle 데이터베이스 [11.2]를 사용하고 있습니다. 현재의 oracle 설정은 추가 설정 매개 변수없이 기본 설정입니다. 높은 수준의 아키텍처 (우선 순위에 따라 분류) 영구 큐에오라클 AQ 성능 튜닝

데이터베이스 대기열에 메시지가

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'); 

자바 JMS 소비자는 3 개 개의 동시 스레드 디큐 메시지입니다.

모든 것이 훌륭합니다! 대기열 @ 10K에있는 메시지가있는 한 행복한 시나리오. 대기열에있는 메시지가 이면 즉시 또는 트리플이 대기열에서 제외됩니다. 성능이 크게 떨어집니다 !!!.

나는 다음 링크 http://docs.oracle.com/cd/B28359_01/server.111/b28420/perform.htm

IO 및 AQ의 성능 조정에 대한 어떤 제안을 따라?

답변

3

나는 이것이 오래되었음을 알지만, 한 번 시도해 보겠습니다. 대기열에있는 작은 수의 메시지로 제대로 실행되지만 많은 수의 메시지로 제대로 실행되지 않는다는 사실은이 문제가 기본 대기열 테이블 및 IOT에 대한 최적화 프로그램 통계에있을 수 있다고 생각하게합니다. 11gR2 Oracle Advanced Queuing User's Guide에서

:

메시지를 검색하기위한 최적의 쿼리 계획을 선택하고되도록 통계가 수집되고 있는지 확인합니다. 기본적으로 대기열 테이블은 자동 통계 수집에서 잠기 게됩니다. 권장 사용은 대표 대기열 메시지가 통계를 수집하여 메시지를 잠그는 것입니다.

튜닝 등 여러 가지 다른 가능성이 있습니다 (또는하지 조정) AQ_TM_PROCESSES과 ASSM을 사용하지만, 데이터베이스 환경에 대한 자세한없이, 그것은 수정을 제안, 또는 문제인지 알지도 어렵다.