ヘッダーをスキップ
Oracle® Fusion Middleware Oracle TopLinkソリューション・ガイド
12c (12.1.3)
E57549-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
 

25 Oracle Exalogicの永続性アプリケーションの最適化

この章では、Oracle Exalogicでの永続性アプリケーションの動作方法を最適化できる機能を有効化および構成する手順について説明します。

この章の内容は次のとおりです。

ユース・ケース

アプリケーションは、Oracle Exalogicプラットフォームの究極のパフォーマンスおよびスケーラビリティを利用してパフォーマンスを向上しようとします。

解決方法

実装は、必要に応じてExalogicの最適化を有効にすることによって達成されます。

コンポーネント

サンプル

サンプルへのリンクは、第25.3項「その他の参考資料」を参照してください。

25.1 ソリューションの概要

Oracle Exalogicは、究極のパフォーマンス、信頼性およびスケーラビリティの基礎となっています。永続性アプリケーションはこの基礎を利用できます。そのためには、パフォーマンスの向上およびリソース使用率の向上を提供する最適化を使用します。最適化には、Exalogic固有のチューナとプロファイラ、Exalogic固有のバッチ・ライター、Exalogic固有のシリアライズ・オブジェクト・ポリシーの実装、Exalogic固有のキャッシュ・コーディネーションの拡張などがあります。


注意:

  • Exalogicの最適化は、アプリケーションの特別なユースケースに対処するために設計されています。すべてのアプリケーションのパフォーマンスを向上するわけではありません。

  • Oracle Exalogicの最適化は一般的なチューニングの推奨事項の置換えを意図したものではありません。Exalogicの最適化をテストする前に、常にアプリケーションを正しくチューニングする必要があります。パフォーマンスのチューニングの詳細は、「パフォーマンスの向上」を参照してください。


25.2 ソリューションの実装

この項のタスクは、Oracle Exalogicプラットフォームの究極のパフォーマンスおよびスケーラビリティを利用する最適化を使用する一般的な手順について説明します。


注意:

常にパフォーマンス・テストを使用して、デプロイ済のアプリケーションの最適化を検証する必要があります。


25.2.1 タスク1: Exalogicの自動チューナの有効化

自動チューニングは、特定の目的に対するJPAおよびセッション構成をアプリケーションが自動的にチューニングできるようにする最適化です。自動チューナは、複数設定の構成用または動的チューニング実行用の1フラグ構成オプションを容易にします。更新と読取りの挿入が混在しているマイクロベンチマーキング・テストで自動チューニングを使用すると、CPU使用量(中間層とデータベース層の両方)とメモリー使用量の低下が示されました。CRUDおよび問合せのマイクロベンチマーク・テストで自動チューニングを使用すると、最適化を使用しなかったテストに対してパフォーマンスの向上が示されました。自動チューニングの詳細は、「自動チューニング」を参照してください。

TopLinkには、Exalogicプラットフォーム用に最適化された構成を提供する自動チューナが含まれています。これは、複数のパフォーマンス機能を有効化し、Exalogic固有のプロファイラを有効化します。このプロファイラはアプリケーションの起動段階を監視し、n+1の問合せ実行の問題をトリガーする問合せを検出します。次にこれらの問合せを最適化してバッチ・フェッチを使用します。バッチ・フェッチを使用できない動的問合せの場合、これらの問合せをさらに分析し、実行時状態のマシンを定義して、これらの問合せを検出して最適化します。プロファイラの詳細は、「パフォーマンス最適化の推奨事項およびヒント」を参照してください。

Exalogicのチューナを使用している場合、次の永続性ユニットのプロパティがデプロイメントの前に設定されます。


注意:

プロパティが明示的に設定された場合(persistence.xmlファイルで設定された場合など)、これがExalogicのチューナによって自動的に設定されたプロパティよりも優先されます。


WEAVING_EAGER = true
CACHE_SIZE_DEFAULT = 1000
QUERY_CACHE = true
ORDER_UPDATES = true
BATCH_WRITING = JDBC
PERSISTENCE_CONTEXT_CLOSE_ON_COMMIT = true
PERSISTENCE_CONTEXT_FLUSH_MODE = Commit
DDL_GENERATION_INDEX_FOREIGN_KEYS = true
PROFILER = oracle.toplink.exalogic.tuning.TuningAgent
FREE_METADATA = true

接続プールが使用されると、セッションの文キャッシュが自動的に有効化されます。また、Exalogicのチューナは、デプロイしてセッションに接続した後、Exalogic固有のDynamicParameterizedHybridBatchWritingMechanismバッチ・ライターを使用するようにセッションを自動的に設定します。バッチ書込みの詳細は、「タスク4: Exalogicでの異機種間バッチ書込みの構成」を参照してください。

Exalogicのチューナを有効にするには、persistence.xmlファイルのeclipselink.tuningプロパティの値としてExaLogicを指定します。次に例を示します。

<property name="eclipselink.tuning" value="ExaLogic"/>

Oracle WebLogic Serverでは、Exalogicの自動チューナは、コンソールで「ドメイン構成」タブ、「一般」タブを使用するか、または「Exalogic最適化の有効化」オプションを選択して有効にできます。あるいは、DomainMBean.ExalogicOptimizationsEnabled MBean属性を使用して有効にできます。

25.2.2 タスク2: Exalogicでのシリアライズ・オブジェクト・ポリシーの使用

シリアライズ・オブジェクト・ポリシーによって、TopLinkは私有の(およびネストされた私有の)エンティティおよび要素コレクションとともに、データベースの追加フィールドにエンティティ・オブジェクト全体(バイナリ形式)を書き出すことができます。シリアライズ・オブジェクト・ポリシーは、読取り専用またはほぼ読取り専用のアプリケーションに最適で、すべての依存エンティティおよび要素コレクションをロードするエンティティにのみ使用します。パフォーマンスが最も向上するのは、多数のグラフ・レベルがあるデータ・モデルです。ほとんどの単純なオブジェクトでは、シリアライズ・オブジェクト・ポリシーを使用するとパフォーマンスが低下します。

シリアライズ・オブジェクト・ポリシーの構成および最適な使用時期の詳細は、「シリアライズ・オブジェクト・ポリシー」を参照してください。

TopLinkには、Exalogicプラットフォームで使用するためのoracle.toplink.exalogic.sop.SerializedObjectPolicy実装が含まれています。このポリシーを使用するには、@SerializedObject注釈をエンティティまたはマップされたスーパークラスに含め、実装で渡します。次に例を示します。

@Entity
@SerializedObject(oracle.toplink.exalogic.sop.SerializedObjectPolicy.class)
@OptimisticLocking(cascade = true) 
public class Employee implements Serializable {... 

@Entity
@SerializedObject(oracle.toplink.exalogic.sop.SerializedObjectPolicy.class, 
   column = @Column(name="ADDR_SOP"))
@OptimisticLocking(cascade = true)
public class Address implements Serializable {...

25.2.3 タスク3: ExalogicのWebLogic Serverクラスタでのキャッシュ・コーディネーションの使用

キャッシュ・コーディネーションは、分散セッション間で変更を同期します。すべてのアプリケーションでデータの整合性を維持するアプリケーション・サーバー・クラスタでは、キャッシュ・コーディネーションが最も有効です。キャッシュ・コーディネーション使用の詳細は、「キャッシュ・コーディネーションの使用」を参照してください。

キャッシュ・コーディネーションは、ExalogicおよびWebLogic Serverに対して最適化されていて、これらのプラットフォームでの実行から自然にメリットを受けます。WebLogic Server JMSと統合すると(JMSでキャッシュ・コーディネーションを使用している場合)、ExalogicのJMSでの向上を利用できます。また、Exalogicでは、TopLinkアプリケーションは、キャッシュ・コーディネーションにWebLogic Serverクラスタを自動的に使用できます。追加の構成は必要ありません。このことによって、アプリケーションは、Infinibandで実行するように最適化されたWebLogic Serverクラスタ・メッセージングを利用できます。

最後に、WebLogic Serverでのキャッシュ・コーディネーションは、Portable Object Format (POF)シリアライズを使用するように構成できます。POFシリアライズは、他のシリアライズ形式より領域と時間の両面で効率を向上させるように設計されています。

キャッシュ・コーディネーションでPOFを使用するには、eclipselink.cache.coordination.serializerプロパティをpersistence.xmlファイルに含め、これをtoplink.exalogic.serializers.POFSerializerに設定します。次に例を示します。

<property name="eclipselink.cache.coordination.serializer"
   value="toplink.exalogic.serializers.POFSerializer"/>

25.2.4 タスク4: Exalogicでの異機種間バッチ書込みの構成

異機種間バッチ書込みは、複数の異機種間の動的SQL文を単一バッチとしてデータベースに送信して実行することを可能にする最適化です。異機種間バッチ書込みは、複数の書込みを伴うトランザクションへの使用に最適で、書込み動作に対するネットワーク・アクセスを低減します。マイクロベンチマーク・テストで異機種間バッチ書込みを使用すると、最適化を使用しなかったテストに対してパフォーマンスの向上が示されました。バッチ書込みの詳細は、「バッチ書込み」を参照してください。

TopLinkにはExalogic用に2つのバッチ書込み実装が含まれていて、複数の異機種間のパラメータ使用のSQL文を単一バッチとしてデータベースに送信して実行することが可能になっています。JDBCのバッチ書込みではこれは不可能です。したがって、かわりにSQLのパラメータを使用する無名ブロックが使用されます。カウンタ出力パラメータが使用されて、オプティミスティック・ロックの行カウントを返します。実装を次に示します。

  • oracle.toplink.exalogic.batch.DynamicParameterizedBatchWritingMechanism

  • oracle.toplink.exalogic.batch.DynamicParameterizedHybridBatchWritingMechanism


注意:

DynamicParameterizedHybridBatchWritingMechanismバッチ・ライター実装は、Exalogic自動チューナを使用すると自動的に有効になります。「タスク1: Exalogicの自動チューナの有効化」を参照してください。


DynamicParameterizedHybridBatchWritingMechanismバッチ書込み実装を明示的に有効にするには、ExaLogicに設定されたeclipselink.jdbc.batch-writingプロパティおよびpersistence.xmlファイルのeclipselink.jdbc.batch-writing.sizeプロパティを含めます。次に例を示します。

<property name="eclipselink.jdbc.batch-writing" value="ExaLogic"/>
<property name="eclipselink.jdbc.batch-writing.size" value="150"/>

この実装もプロパティの値として明示的に入力できます。次に例を示します。

<property name="eclipselink.jdbc.batch-writing"
   value="oracle.toplink.exalogic.batch.
      DynamicParameterizedHybridBatchWritingMechanism"/>
<property name="eclipselink.jdbc.batch-writing.size" value="150"/>

25.3 その他の参考資料

この章のソリューションが実装されているその他のテクノロジおよびツールの詳細は、次の参考資料を参照してください。

次のコード例およびJavaDocの参考資料を参照できます。