2

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 にある限り、シナリオは良好です。キュー内のメッセージが2 倍または 3 倍になるとすぐに、パフォーマンスが大幅に低下します!!!.

次のリンクをたどりました http://docs.oracle.com/cd/B28359_01/server.111/b28420/perform.htm

IO と AQ のパフォーマンス チューニングに関する提案はありますか?

4

1 に答える 1

3

これは古いと思いますが、試してみます。キュー内のメッセージの数が少ない場合はうまく動作するが、メッセージの数が多い場合はうまく動作しないという事実から、問題は基になるキュー テーブルと IOT のオプティマイザー統計にある可能性があると思われます。

11gR2 Oracle Advanced Queuing User's Guideから:

メッセージを取得するための最適なクエリ プランが選択されるように、統計が収集されていることを確認します。デフォルトでは、キュー テーブルは統計の自動収集からロックアウトされています。推奨される使用法は、代表的なキュー メッセージ負荷で統計を収集し、それらをロックすることです。

チューニング (またはチューニングなし) や ASSM の使用など、他にもいくつかの可能性がありますがAQ_TM_PROCESSES、データベース環境に関する詳細がなければ、修正を提案したり、それが問題であるかどうかを知ることさえ困難です。

于 2013-05-30T14:43:26.447 に答える