Cosminexus V9 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)
DB Connectorを使用した場合,JDBCのAPIであるjava.sql.PreparedStatementとjava.sql.CallableStatementの再利用を行うプーリング機能を使用できます。ステートメントプーリング機能によって,PreparedStatementとCallableStatementを使用した場合のパフォーマンス向上が図れます。なお,PreparedStatementとCallableStatementのプールサイズは,DB Connectorの設定で指定します。ステートメントプーリングを使用する際のプールサイズ設定の指針については,マニュアル「アプリケーションサーバ システム設計ガイド」の「8.5.2 ステートメントプーリングを使用する」を参照してください。また,DB Connectorのプロパティ定義については,マニュアル「アプリケーションサーバ アプリケーション設定操作ガイド」の「4.2.2 DB Connectorのプロパティ定義」を参照してください。
ステートメントプーリング機能では,ステートメントを再利用する際にステートメントを初期化します。初期化する内容はJ2EEサーバのプロパティをカスタマイズして設定します。ステートメントプーリング機能の設定については,「3.14.10 実行環境での設定」を参照してください。
ステートメントプーリング機能を利用するには,コネクションプーリング機能を使用する必要があります。また,トランザクションサポートレベルにグローバルトランザクションを指定した場合,HiRDBのバージョンによっては利用できないことがあります。
なお,ステートメントプーリング機能を使用しない場合は,PreparedStatement,およびCallableStatementのプールサイズを両方とも0にしてください。
トランザクションサポートレベル,コネクションプーリング使用の有無,使用するデータベースの種類との対応による,ステートメントプーリング利用について次の表に示します。
表3-47 ステートメントプーリングの利用
トランザクションサポートレベル | コネクションプーリングを使用する | コネクションプーリングを使用しない | |||
---|---|---|---|---|---|
HiRDB※1 | Oracle | SQL Server | XDM/RD E2 | HiRDB/Oracle/SQL Server | |
トランザクションなし(NoTransaction) | ○ | ○ | ○ | ○ | × |
ローカルトランザクション(LocalTransaction) | ○ | ○ | ○ | ○ | × |
グローバルトランザクション(XATransaction) | ○※2 | ○ | × | × | × |
(凡例) ○:利用できる ×:利用できない
注※1 ステートメントプーリング機能を使用した状態で,定義SQLを実行しないでください。定義SQLを実行する場合,ステートメントプーリング機能は使用できません。また,定義SQLを実行する場合は,HiRDBのクライアント環境変数として「PDDDLDEAPRP=YES」を設定する必要があります。
注※2 JDBCのDatabaseMetaData#supportsStatementPooling()の戻り値がtrueの場合に,利用できます。
なお,XDM/RD E2を使用する場合はXDM/RD E2 11-03以降のバージョンとHiRDB Type4 JDBC Driver 08-02以降を使用するときにだけステートメントプーリング機能を使用できます。ステートメントプーリング機能の設定については,「3.14.10 実行環境での設定」を参照してください。
リソースアダプタのコンフィグレーションプロパティで設定するステートメントプーリングの動作について説明します。
ステートメントプーリング機能の動作を,次の表に示します。
表3-48 ステートメントプールの状態と動作
ユーザアプリケーションプログラム処理 | ステートメントプールの状態 | ステートメントプールの動作 |
---|---|---|
PreparedStatement,CallableStatementの生成を要求 | プール内に未使用状態のPreparedStatement,CallableStatementがある | プール内で未使用状態のPreparedStatement,CallableStatementの一つが選択され,ユーザアプリケーションプログラムに渡されます。選択されたPreparedStatement,CallableStatementは,プール内で使用中状態になります。 |
プール内に未使用状態のPreparedStatement,CallableStatementがなく,プール内のPreparedStatement,CallableStatementの総数が「PreparedStatementPoolSize」,「CallableStatementPoolSize」の値に満たない | 新規にPreparedStatement,CallableStatementを生成します。生成したPreparedStatement,CallableStatementはユーザアプリケーションに渡され,PreparedStatement,CallableStatementはプール内で使用中状態となります。 | |
プール内に未使用状態のPreparedStatement,CallableStatementがなく,プール内のPreparedStatement,CallableStatementの総数が「PreparedStatementPoolSize」,「CallableStatementPoolSize」の値以上 | タイムスタンプが最も古い※PreparedStatement,CallableStatementをプールから削除したあと,新規にPreparedStatement,CallableStatementを生成します。生成したPreparedStatement,CallableStatementはユーザアプリケーションに渡され,PreparedStatement,CallableStatementはプール内で使用中状態となります。 | |
PreparedStatement,CallableStatementを解放 | − | PreparedStatement,CallableStatementはプール内で未使用状態に戻ります。 |
(凡例) −:該当なし
注※ プール内のPreparedStatement,CallableStatementのタイムスタンプが更新されるタイミングは,次のとおりです。
ステートメントプーリング機能を使用する場合の注意事項を次の表に示します。
表3-49 ステートメントプーリング機能を使用する場合の注意事項
条件 | 注意事項 |
---|---|
− |
|
− |
|
OracleまたはSQL Serverに接続 |
|
(凡例) −:該当なし
All Rights Reserved. Copyright (C) 2012, 2015, Hitachi, Ltd.