0

java.sql.Connectionクラスの顧客に戻る接続マネージャークラスを作成しています。私の目標は、接続を作成する時間を無駄にしないように、プールに常に2つの使用可能な接続を用意することです。使用可能な接続を返すとき、Oracle UCPに新しい使用可能な接続を作成させる必要があるため、常に2つの接続が使用可能になります。

問題は、OracleUCPにそれを制御するオプションがないことです。UCPのドキュメントを読みましたが、解決策が見つかりませんでした。

方法はありますが、利用可能な接続だけでなく、利用可能な接続と借用setMinPoolSize()した接続を制御します。

また、ハーベスト可能な接続機能がありますが、新しい接続を作成するのではなく、既存の(借用した)接続をハーベストします。

注:Oracle 11.2.0.3以降ucp.jar(Oracle 11.2.0.3の場合)を使用しています

4

1 に答える 1

0

そのような解決策はありません。接続が接続プールから要求されると、プールからチェックアウトされるか、新しい接続が作成されます。このコストは、リクエストを実行するスレッドで発生します。常にプール内で使用中よりも2つ多くの接続を維持したい場合は、問題を移動するだけです。接続がチェックアウトされたavailable < 2後、接続が追加されます。接続を要求するスレッドで再度発生したコスト(はい、理論的にはこれを別のスレッド/エグゼキューターにオフロードできますが、プールが複雑になります)。

接続プールは、接続を再利用できるようにして「コストを分散」させることにより、接続の作成コストを削減することを目的としており、コストを完全になくすことを目的とはしていません。

于 2012-11-06T09:14:49.727 に答える