アプリケーション・モジュール・プールは、トップレベルのアプリケーション・モジュール・インスタンス用のリソース・マネージャです。トランザクションおよびアプリケーション・モジュールに関連付けられたビュー・オブジェクトおよびエンティティ・オブジェクト・キャッシュを保存するとコストが高くなる場合もあるので、アプリケーション・モジュール・プールでは、一部のインスタンスをメモリーに保存して再利用します。各アプリケーション・モジュール定義に対して、1つのアプリケーション・モジュール・プールがあり、そのアプリケーション・モジュールのインスタンスはすべて、そのプールに格納されます。
アプリケーションでアプリケーション・モジュール・インスタンスが頻繁に使用されている場合(たとえば、Strutsデータ・アクション中など)、そのアプリケーション・モジュール・インスタンスはチェックアウトされていると表現されます。そのインスタンスは、アプリケーションでの使用が終了するとすぐにプールにチェックインされます。アプリケーションでそのインスタンスが再度必要になった場合は、再びチェックアウトを試行します。
アプリケーション・モジュール・プールの動作を管理する最も重要なパラメータは、リサイクルしきい値と呼ばれます。リサイクルしきい値によって、アプリケーション・モジュールを再利用できる頻度が決定されます。
アプリケーションでアプリケーション・モジュール・インスタンスが初めて要求されると、アプリケーション・モジュール・プールにすでに格納されているインスタンス数がチェックされます。この数がリサイクルしきい値より小さい場合は、プールによってそのアプリケーション用の新しいインスタンスが作成されます。
アプリケーション・モジュール・プールにアプリケーション・モジュールのしきい値以上の数のインスタンスが格納されている場合、それらのインスタンスのいずれかがリサイクルされます。このリサイクルは、次のプロセスで実行されます。
デフォルトでは、リサイクルしきい値は10です。多くのアプリケーションは、リサイクルしきい値がこれより高い方が優れたパフォーマンスを発揮します。しきい値の設定は、メモリー内のデータ量(過剰なデータによりアプリケーション・サーバーのパフォーマンスは低下します)とリサイクル頻度(リサイクルは時間のかかるプロセスです)のバランスの問題です。一般的には、ロード・テスターによる試行錯誤が、両者のバランスを割り出す最良の方法です。
リサイクルしきい値の変更方法の詳細は、関連項目のトピックを参照してください。
前述のとおり、アプリケーションでアプリケーション・モジュール・インスタンスが2度目に必要とされた場合、プールからのチェックアウトが再度試みられます。このインスタンスがまだリサイクルされていない場合は、アプリケーション・モジュール・プールにより、アプリケーションに戻されます。このインスタンスがリサイクルされている場合は、(前述のとおり、必要に応じてインスタンスをリサイクルして)別のインスタンスを見つけて、元のトランザクションをPS_TXN表から再作成します。
このプロセスは完全に透過的です。つまり、アプリケーションでは、元のアプリケーション・モジュール・インスタンスまたはその正確なコピーを受け取ります。
注意: データベース接続プーリングの使用は、基本的にpostChanges()
のコール、または同じリクエスト内でトランザクションをコミットせず、現在のトランザクションでDML操作を実行するPL/SQLストアド・プロシージャの呼び出しとは、互換性がありません。コミットなしでpostChanges()
を使用するアプリケーションは、接続プーリングを使用せず、RESERVEDリリース・モードを使用する必要があります。これは、スケーラビリティのためには好ましくはありませんが、動作が保証される唯一のモードです。
複数のトランザクションのスケーリング
リサイクルしきい値の設定
古いアプリケーション・モジュール・インスタンスのタイムアウトの許可
Copyright © 1997, 2006, Oracle. All rights reserved.