Interstage Application Server/Interstage Web Server チューニングガイド |
目次 索引 |
第5章 J2EEのチューニング | > 5.4 EJBコンテナのチューニング |
Entity Beanのチューニングについて、説明します。
Entity Beanは、レコードの情報を取得するためにメソッドを頻繁に実行します。このため、プロセス外からEntity Beanを呼び出すとIIOP通信が頻繁に発生することにより、性能が劣化します。
Entity Beanは同一IJServerのアプリケーションから呼び出すことを推奨します。
インスタンスはトランザクション内でキャッシュされます。インスタンスプールにインスタンスが存在しない場合、同一トランザクション内で使用したインスタンスのレコードデータをデータベースに反映し、そのインスタンスを別のレコードデータを格納するインスタンスとして再利用します。インスタンスが頻繁に再利用されるとデータベースにアクセスする回数が増加することによって性能に影響がありますので、性能を考慮してインスタンス数を設定してください。
インスタンス数はデータベースの検索レコード数とクライアントの同時接続数に関係します。効果的な値としては、通常検索されるレコード数の1.25倍の値を設定します。
以下に設定値の計算式を表します。
Entityインスタンス数 = a × b × 1.25 (安全率)
a: 1度に検索されるレコード数
b: 1プロセスで同時にアクセスするクライアント数
例) 10クライアントが同時に100件を検索した場合
インスタンス数 = 10 × 100 × 1.25 = 1250
注) インスタンス数を増やすと、使用メモリが増えるので注意してください。
Entity Beanのインスタンス管理モードによってデータベースの処理をチューニングすることができます。
以下の表に、それぞれのインスタンス管理モードと最適な処理について示します。
管理モード
最適な処理
ReadWrite
検索を実行する時、またオンラインのデータベースを更新する時に有効
ReadOnly
更新されない主要なデータを検索(参照)する時に有効
Sequential
大量のデータを一括処理する時に有効
CMPで使用するEntity Beanで、JDBCのサイズ制限以上のデータを扱う場合は、Interstage管理コンソールの以下で設定してください。
[システム] > [ワークユニット] > “ワークユニット名” > “EJBモジュール” > “EJBアプリケーション名” > [アプリケーション環境定義]タブを開き、CMFマッピング定義の「CMPデータのstream転送」に“する”を設定します。また、ejbdefexport/ejbdefimportコマンドを使用して設定することもできます。詳細は“J2EE ユーザーズガイド”の“運用コマンドを使用してカスタマイズする方法”を参照してください。デフォルトは“しない”です。
CMP2.0 Entity Beanで複数件finderメソッドを実行した場合に、レコードのデータを一度にすべてロードするオプションを提供しています。
全データを、DBMSからロードするような処理の場合にも、高速にDBMSからデータをロードできます。
詳細は、“J2EEユーザーズガイド”の“Entity Beanの最適化処理”の“CMP2.0の複数件検索時の高速化”を参照してください。
CMP1.1の複数レコードの一括更新の設定は、Interstage管理コンソールの[システム] > [ワークユニット] > “ワークユニット名” > “EJBモジュール” > “EJBアプリケーション名” > [アプリケーション環境定義]タブの[Interstage拡張情報]で設定します。「複数レコードの一括更新」で“する”を選択してください。デフォルトは“する”です。
また、ejbdefexport/ejbdefimportコマンドを使用して設定することもできます。詳細は“J2EE ユーザーズガイド”の“運用コマンドを使用してカスタマイズする方法”を参照してください。
設定を行ったCMP1.1 Entity Beanはデータベースの更新を行う時に、以下のAPIを利用して一括更新を行います。
java.sql.PreparedStatementクラスのaddBatchメソッド
CMP1.1 Entity Beanでbyte配列を使用する場合に、byte配列のデータが更新されているかの判定方法を設定できます。
設定は、Interstage管理コンソールの[システム] > [環境設定] の 詳細設定から[EJBサービス詳細設定]タブで「CMP1.1のbyte配列更新判定」で行います。また、isj2eeadminコマンドを使用して設定することもできます。
目次 索引 |