ページの先頭行へ戻る
Interstage Application Server/Interstage Web Server チューニングガイド

5.2.6 Statementキャッシュ機能

  以下の場合に、Statementキャッシュ機能を使用できます。

  Statementをキャッシュすることによって、SQL文の解析、作成によるオーバーヘッドの軽減や、データベースとの通信回数を削減する効果があります。

  キャッシュ対象となるStatementは以下です。

■チューニング方法


Statementキャッシュサイズ

  Statementキャッシュサイズは、使用するデータソースに対して、Interstage管理コンソールまたはisj2eeadminコマンドで設定します。
  Interstage管理コンソールでは、[IJServer] > [環境設定] > [DBコネクション設定] > [Statementキャッシュサイズ]で設定します。[Statementキャッシュサイズ]に0を設定した場合は、Statementキャッシュは行なわれません。
  isj2eeadminコマンドの詳細については、“リファレンスマニュアル(コマンド編)”を参照してください。
  なお、JDBCリソース定義画面の接続オプションでStatementキャッシュサイズを設定し、同時にDBコネクション設定でキャッシュサイズを指定した場合は、DBコネクション設定で行ったキャッシュサイズの値が有効になります。


設定の指針

  Statementはコネクション単位でキャッシュされ、コネクションは実行する同一IJServerプロセス内のアプリケーション全体で共通に使用されます。
  アプリケーションで発行されるStatement数がStatementキャッシュサイズより大きくなるとキャッシュから削除されるStatementが増加します。アプリケーションが要求するStatementがキャッシュから削除されていると、Statementの再作成のために、データベースとの通信、SQLステートメント文の解析によるオーバーヘッドが発生します。
  キャッシュからのStatement削除回数を削減するため、StatementキャッシュサイズをIJServerプロセスで発行されるStatementの総数もしくはそれに近い値を設定することを推奨します。ただし、Statementのキャッシングはマシン資源を消費します。マシンスペックを考慮の上でStatementのキャッシュサイズの設定を行う必要があります。

  また、アプリケーションサーバ(コンテナ)側でStatementを発行するCMPアプリケーションの場合は、次の数の合計値をアプリケーションで発行するStatementの代わりにキャッシュサイズへ追加します。

OPEN_CURSORSの設定(Oracleを使用する場合)

  Statementキャッシュ機能を使用する場合、コネクションのクローズ時にStatementは破棄されず、1コネクションで同時に発行しているStatementは増加します。このため、“1コネクション(トランザクション)で同時に発行可能なStatement数の上限値(以降OPEN_CURSORS/デフォルト:50)”を超える可能性があります。Statement数がOPEN_CURSORSを超えた場合、SQLExceptionが発生します。
  このような場合は、OPEN_CURSORSが、Statementキャッシュサイズ以上となるように設定してください。OPEN_CURSORSの設定方法は、Oracleのマニュアルを参照して下さい。


■キャッシュされたStatementの削除契機

  キャッシュされたStatementは、以下の契機で削除されます。また、実行したSQL文の数が、「Statementキャッシュサイズ」に設定した値に達した場合、それ以降実行するSQL文の扱いについては使用するJDBCドライバの仕様に依存します。(JDBCドライバの仕様によりキャッシュされたStatementが削除される場合があります。)JDBCドライバの仕様については、各JDBCドライバのマニュアルを参照してください。