• 検索結果がありません。

Entity Bean

ドキュメント内 チューニングガイド (ページ 104-107)

第5章 J2EEのチューニング

5.4 EJBコンテナのチューニング

5.4.3 Entity Bean

Entity Beanのチューニングについて、説明します。

・ Entity Bean呼出しの注意

・ インスタンス数

・ インスタンス管理モード

・ CMPデータのstream転送

・ CMP2.0の複数件検索高速化

・ CMP1.1の複数レコードの一括更新

・ CMP1.1のbyte配列更新判定

■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データのstream転送

CMPで使用するEntity Beanで、JDBCのサイズ制限以上のデータを扱う場合は、Interstage管理コンソールの以下で設定してくださ

い。

[システム] > [ワークユニット] > “ワークユニット名” > “EJBモジュール” > “EJBアプリケーション名” > [アプリケーション環境定義]タブ を開き、CMFマッピング定義の「CMPデータのstream転送」に“する”を設定します。また、ejbdefexport/ejbdefimportコマンドを使用して 設定することもできます。詳細は“J2EE ユーザーズガイド”の“運用コマンドを使用してカスタマイズする方法”を参照してください。デ フォルトは“しない”です。

■CMP2.0の複数件検索高速化

CMP2.0 Entity Beanで複数件finderメソッドを実行した場合に、レコードのデータを一度にすべてロードするオプションを提供していま す。

全データを、DBMSからロードするような処理の場合にも、高速にDBMSからデータをロードできます。

詳細は、“J2EEユーザーズガイド”の“Entity Beanの最適化処理”の“CMP2.0の複数件検索時の高速化”を参照してください。

■CMP1.1の複数レコードの一括更新

CMP1.1の複数レコードの一括更新の設定は、Interstage管理コンソールの[システム] > [ワークユニット] > “ワークユニット名” > “EJB モジュール” > “EJBアプリケーション名” > [アプリケーション環境定義]タブの[Interstage拡張情報]で設定します。「複数レコードの一 括更新」で“する”を選択してください。デフォルトは“する”です。

また、ejbdefexport/ejbdefimportコマンドを使用して設定することもできます。詳細は“J2EE ユーザーズガイド”の“運用コマンドを使用 してカスタマイズする方法”を参照してください。

設定を行ったCMP1.1 Entity Beanはデータベースの更新を行う時に、以下のAPIを利用して一括更新を行います。

・ java.sql.PreparedStatementクラスのaddBatchメソッド

・ 使用するデータベース、および、JDBCドライバがJDBC2.0バッチ更新機能をサポートしている必要があります。

JDBC2.0バッチ更新機能が未サポートのデータベース、および、JDBCドライバを使用した場合は、通常のデータベースへの更新 処理を行います。

・ 「インスタンス管理モード」が“Read-Only”の場合、データの更新自体が行われないため、「複数レコードの一括更新」の設定は無 効となります。

・ 「複数レコードの一括更新」は、分散トランザクションを使用しない場合にだけ有効です。分散トランザクションを使用する場合、通 常のデータベースへの更新処理を行います。

・ CMP1.1 Entity Beanでstream転送を行う場合、データの更新に失敗する場合があります。その場合は「複数レコードの一括更新」

を“しない”に変更してください。

■CMP1.1のbyte配列更新判定

CMP1.1 Entity Beanでbyte配列を使用する場合に、byte配列のデータが更新されているかの判定方法を設定できます。

設定は、Interstage管理コンソールの[システム] > [環境設定] の詳細設定から[EJBサービス詳細設定]タブで「CMP1.1のbyte配列更 新判定」で行います。また、isj2eeadminコマンドを使用して設定することもできます。

ドキュメント内 チューニングガイド (ページ 104-107)