Oracle® Fusion Middleware Oracle Business Intelligence Discoverer構成ガイド 11g リリース1 (11.1.1) E51909-01 |
|
前 |
次 |
この章の内容は、Discoverer PlusおよびDiscoverer Viewerにのみ適用されます。Discoverer Plus OLAPの構成の詳細は、第5章「Discoverer Plus OLAPの構成」を参照してください。
この章では、Discovererのパフォーマンスおよびスケーラビリティを最適化する方法について説明します。この章の内容は次のとおりです。
Discovererシステムのパフォーマンスとは、Discovererが特定のタスクを完了するためにかかる時間を指します。パフォーマンスを示す時間は、次のようなタスクにかかる時間です。
問合せの結果を返す(ワークシートを表示する)
ピボットまたはドリルを実行する
システムに新しいユーザーを追加する
Discovererシステムのスケーラビリティとは、パフォーマンスを低下せずに、ユーザーまたはタクスの増加に対応する能力を指します。
Discovererのスケーラブルなアーキテクチャを十分に活用するには、Discovererを複数のマシンにインストールして、マシン間でワークロードを分担します。詳細は、第6章「複数マシン環境または複数インスタンス環境におけるDiscovererの管理」を参照してください。
Discovererのスケーラビリティを決定する主な要因は、次のとおりです。
サーバーCPUの数
CPU間の処理の分散
サーバーの総メモリー(RAMおよび仮想メモリー)
各ユーザーからリクエストされる特定のタスク(個々のワークロード)
Discoverer中間層のマシンの数
Discovererのパフォーマンスは、データベースの設計と問合せのチューニングによって大きく左右されます。データベースを適切に設計することで、パフォーマンスが大幅に向上します。また、次の要素を正しく使用することにより、パフォーマンスがさらに向上します。
サマリー・テーブルおよびマテリアライズド・ビュー
索引
データベース・パラメータの設定
ネットワークの帯域幅
適切に設計およびチューニングされているデータベースにおいて、さらにパフォーマンスを向上させる方法は、次の項で説明します。
第10.3.1項「ワークシートおよびページ・アイテムを適切に使用して、Discovererのパフォーマンスを向上させる方法」
第10.3.2項「ビジネスエリアおよびフォルダの表示にかかる時間を短縮して、Discovererのパフォーマンスを向上させる方法」
第10.3.5項「Discoverer Administratorのヒントを使用してDiscovererのパフォーマンスを向上させる方法」
第10.3.6項「「保存形式」アイテム・プロパティを適切に設定して、Discovererのパフォーマンスを向上させる方法」
第10.3.7項「データベースからのフェッチ行で使用する配列サイズを拡大して、Discovererのパフォーマンスを向上させる方法」
第10.3.8項「重複しない値を含むテーブルに基づいて値リストを生成して、Discovererのパフォーマンスを向上させる方法」
第10.3.10項「ワークシートを夜間に実行するようにスケジュールして、Discovererのパフォーマンスを向上させる方法」
第10.3.11項「Oracle Web Cacheを使用してDiscoverer Viewerのパフォーマンスを向上させる方法」
問合せおよびデータの表示にかかる時間は、ワークシートのレイアウト(テーブルまたはクロス集計)、およびワークシートのレイアウトでページ・アイテムが使用されているかどうかに左右されます。
例:
ページ・アイテムを含まないテーブル形式のワークシートの移入では、Discovererは増分フェッチ(100行を一度に取得するなど)を使用するので、サイズの大きな結果セット全体をロードする必要がありません。
ページ・アイテムを表示する際のようにキャッシュしたアイテムに索引付けする必要がないため、ページ・アイテムを含まないテーブル形式のデータはより迅速に表示されます。
ページ・アイテムまたはクロス集計を含むテーブル・ワークシートを移入する場合、一度にフェッチする行数に関係なく、データの表示により長い時間がかかります。これは、キャッシュした結果セット上でページ・アイテムごとに索引を作成する時間が余分にかかり、データの表示までの時間が長くなるためです。
パフォーマンスを向上させるには、Discoverer PlusユーザーがDiscovererワークブックを設計する際、次のガイドラインに従うようにします。
クロス集計レポートよりもテーブル形式のレポートを使用する
レポート内のページ・アイテムの数を最小限にする
広範囲のクロス集計レポートを避ける
膨大な行数が返されるレポートを作成しないようにする
生成されるデータの量を減らすためのパラメータを指定する
ワークブック内のワークシートの数を最小限にする
ワークブックから無関係なワークシートを削除する(特に、エンド・ユーザーがDiscovererのエクスポート・オプションを頻繁に使用する場合)
注意: エンド・ユーザーがDiscoverer PlusまたはDiscoverer Viewerのデータをエクスポートする場合、現行のワークシートまたはすべてのワークシートのいずれかをエクスポートできます。つまり、エクスポートされるワークシートを選択することはできません。エンド・ユーザーがすべてのワークシートをエクスポートする際に不要なデータが含まれないように、無関係なワークシートは削除しておきます。
次のワークシート設定はすべて、索引作成でのオーバーヘッドを増やすため、Discovererのパフォーマンスに影響します。
広範囲のクロス集計
ページ軸アイテム
値の多いページ軸アイテム
Discoverer Plusエンド・ユーザーが問合せを作成する際、ユーザーがアクセス権を持つビジネスエリア、フォルダおよびアイテムのリストが、DiscovererによってDiscoverer Plus Item Navigatorに表示されます(詳細は、『Oracle Fusion Middleware Oracle Business Intelligence Discoverer Plusユーザーズ・ガイド』を参照)。このリストの表示前に、フォルダ内で参照されているテーブルへのアクセス権がユーザーにあるかどうかを確認するため、データベース・セキュリティ・チェックが行われます。このセキュリティ・チェックにより、ユーザーが実行できないワークブックを作成することは確実になくなりますが、すべてのビジネスエリアおよびフォルダについてチェックが行われるため、リストが表示されるまでの時間は長くなります。
データベースのセキュリティ・チェックを遅延処理するには、pref.txtファイルを編集して、次のようにObjectsAlwaysAccessibleを1に設定します。
ObjectsAlwaysAccessible = 1
注意: pref.txtファイルを編集した後は、プリファレンスの変更を適用するためにapplypreferencesスクリプトを実行する必要があります(詳細は、第9.4項「すべてのユーザーに対するデフォルトのユーザー・プリファレンスを設定する方法」を参照)。その後、Oracle BI Discovererサービスを一度停止して再起動します(詳細は、第4.3項「opmnctlを使用してDiscovererプリファレンス・サーバー・コンポーネントを起動、停止および再起動する方法」を参照)。
ObjectAlwaysAccessibleの値が0以外の場合は、問合せの作成時にはセキュリティ・チェックは実行されず、ユーザーはテーブルへのアクセス権を持っているものと見なされます。
注意: データベース・セキュリティは常に考慮されます。セキュリティ・チェックは、問合せの作成時ではなく、問合せの実行時に行われます。
その結果、フォルダのリストの表示にかかる時間が短縮されます。ユーザーのアクセス権があまり変更されないシステムでは、セキュリティ・チェックを無効にすることをお薦めします。
注意: ユーザーがデータベース・アクセス権を持たないテーブルに基づくフォルダを選択しても、問合せの実行時にデータベース・セキュリティが適用されて行は返されません。
Discovererサマリー・フォルダを正しく使用すると、問合せレスポンス時間が大幅に短縮します。たとえば、サマリー・フォルダを使用しないで問合せを実行した場合、結果が返されるまでに数時間かかるケースでも、サマリー・フォルダを使用することで結果が数秒で返されることがあります。サマリー・フォルダの管理は、Discoverer実装でパフォーマンスを向上させるための重要な要素となります。
サマリー・フォルダは、マテリアライズド・ビューまたはサマリー・テーブルを基礎にすることができ、動作に関して次のように異なります。
Discovererの問合せに、マテリアライズド・ビューを基礎としたサマリー・フォルダが含まれている場合、データベースによって、マテリアライズド・ビューを使用するように問合せが自動的に書きなおされます。
Discovererの問合せに、サマリー・テーブルを基礎としたサマリー・フォルダが含まれている場合、Discovererによって、サマリー・テーブルを使用するように問合せが自動的に書きなおされます(サマリー・テーブルがEULに登録されていることを前提とします)。
「SQLインスペクタ」ダイアログを使用して問合せのパスを表示し、データベースによって問合せが書きなおされたかどうかを確認できます。
Discovererによるサマリー・フォルダの管理方法の詳細は、『Oracle Fusion Middleware Oracle Business Intelligence Discoverer管理者ガイド』を参照してください。
Discovererでは、問合せのパフォーマンスを向上させるため、次の3つの領域で、生成するSQLを最適化できます。
アイテムの切捨て
問合せSQL内の無関係な列または使用されていない列および式への参照を削除して、パフォーマンスを向上させます。アイテムの切捨てを有効にするには、ユーザー・プリファレンスのSQLItemTrimの値を1に設定します。
結合の切捨て
結果セットに影響を与えずに、問合せから結合を検出および削除して(可能な場合)、問合せパフォーマンスを向上させます。結合の切捨てを有効にするには、ユーザー・プリファレンスのSQLJoinTrimの値を1に設定します。
フラット化
問合せSQL内のインライン・ビューの使用を最小限にし、データベースでより簡単にSQLを解析し、最適な実行パスを選択できるようにします。フラット化を有効にするには、ユーザー・プリファレンスのSQLFlattenの値を1に設定します。
詳細は、次の資料を参照してください。
ユーザー・プリファレンスのSQLItemTrim、SQLJoinTrimおよびSQLFlattenの詳細は、第9.6項「Discovererユーザー・プリファレンスのリスト」を参照してください。
パフォーマンスの向上のために選択する結合プロパティの詳細は、『Oracle Fusion Middleware Oracle Business Intelligence Discoverer管理者ガイド』を参照してください。
Discovererのパフォーマンスを向上させるため、Discoverer AdministratorのSQL文にヒントを追加して(カスタム・フォルダの使用など)、データベース・オプティマイザに特定のパスを使用するように強制できます。詳細は、『Oracle Fusion Middleware Oracle Business Intelligence Discoverer管理者ガイド』を参照してください。
ユーザーが問合せに条件を追加する場合、「大文字小文字の区別」オプションを選択できます。「大文字小文字の区別」オプションを選択しない場合、条件の両側にUPPER関数を置くことにより、大文字と小文字を区別して検索を実行できます。たとえば、次のような条件があるとします。
where Department in ('VIDEO SALES', 'VIDEO RENTALS')
これが次のようになります。
where Upper(Department) in (Upper('VIDEO SALES'), Upper('VIDEO RENTALS'))
ただし、UPPER関数を使用すると、データベースの索引を使用できなくなります。したがって、索引を使用してパフォーマンスを向上する方法は利用できません。
データがすべて大文字またはすべて小文字でデータベースに保存されていることがわかっている場合は、Discoverer Administratorを使用してアイテムの「保存形式」プロパティを設定します。
たとえば、データベース内のRegionデータがすべて大文字で保存されていることがわかっている場合は、Discoverer Administratorで、Regionアイテムの「保存形式」プロパティを「すべて大文字」に設定します。これで、データがすべて大文字で保存されていて、条件の左側にはUPPER関数が置かれていない(列名がUPPER関数で囲まれていない)と想定されます。たとえば、次のような条件があるとします。
where Department in ('VIDEO SALES', 'VIDEO RENTALS')
これが次のようになります。
where Department in (Upper('VIDEO SALES'), Upper('VIDEO RENTALS'))
列名がUPPER関数で囲まれていないため、問合せでデータベースの索引を使用できます。
データベースから多数の行(たとえば、数千行)を取り出す可能性が高い場合は、Discovererによって使用されるフェッチ行の配列サイズを拡大することでパフォーマンスが向上します。
配列のデフォルト・サイズを変更するには、pref.txtファイルを編集して、MaxRowsPerFetchを次のように必要な値に設定します。
MaxRowsPerFetch = <array size>
多数の行を取得する可能性が高い場合は、MaxRowsPerFetchを「500」または「1000」に設定して配列サイズを増やします。
注意: Discovererエンド・ユーザーは、pref.txtでMaxRowsPerFetchによって指定されているデフォルト値を、次のように上書きできます。
Discoverer Plusでは、「ツール」→「オプション」→「クエリー管理」の順に選択し、「データを取り出すときの単位」フィールドを使用します。
Discoverer Viewerでは、「プリファレンス」リンクを選択して「プリファレンス」ページを表示し、「データを取り出すときの単位」フィールドを使用します。
注意
テーブル・ワークシートの場合、見かけのパフォーマンスと実際のパフォーマンスは一致しません。テーブル・ワークシートでは、最初の配列が取得された後すぐデータが表示されるので、MaxRowsPerFetchを「100」に設定した方が、MaxRowsPerFetchを「1000」に設定した場合よりもDiscovererのエンド・ユーザーに最初の100行が速く表示されるためです。
pref.txtファイルを編集した後は、プリファレンスの変更を適用するためにapplypreferencesスクリプトを実行する必要があります(詳細は、第9.4項「すべてのユーザーに対するデフォルトのユーザー・プリファレンスを設定する方法」を参照)。その後、Oracle BI Discovererサービスを一度停止して再起動します(詳細は、第4.3項「opmnctlを使用してDiscovererプリファレンス・サーバー・コンポーネントを起動、停止および再起動する方法」を参照)。
デフォルトでは、Discovererの値リスト(LOV)は、基礎となるデータ・テーブルについて問合せのSELECT DISTINCT文を使用して生成されます。LOVを生成するために、重複しない値のリストを表示できるように、すべての行がスキャンされます。ただし、このデフォルトの問合せは、行数が多いが重複しない値は相対的に少ない列からLOVを生成する場合には、効率がよくありません。
パフォーマンスを向上させるには、ファクト・テーブルの列に基づくアイテムでLOVを作成しないようにします。そのかわりに、次のオプションの使用を検討します。
ファクト表に添付された小さな'ディメンション'表(重複しない許容値のみが含まれるテーブル)の列に基づくアイテムで、LOVを作成する。このような表が存在しない場合は、SQL*Plusを使用して表を作成して値を移入します。
許容値のリストが小さい場合や変更されることが比較的少ない場合は、SYS.DUALから許容値を選択するSQL文に基づくカスタム・フォルダを作成して、Discoverer Administrator内でLOVを定義します。
たとえば、Video Storesデータ内のすべての地域を含むLOVを作成する手順は、次のとおりです。
次のSQL文に基づいて、すべての地域をリストするカスタム・フォルダを作成します。
Select 'NORTH' Region FROM sys.dual UNION Select 'SOUTH' Region FROM sys.dual UNION Select 'EAST' Region FROM sys.dual UNION Select 'WEST' Region FROM sys.dual
作成したカスタム・フォルダを値リストとして使用するように、Regionアイテムのアイテム・クラスを編集します。
カスタム・フォルダとアイテム・クラスの作成方法の詳細は、『Oracle Fusion Middleware Oracle Business Intelligence Discoverer管理者ガイド』を参照してください。
各ユーザー・セッションについて、データベースから取得されるデータが中間層のDiscovererキャッシュに格納されます。キャッシュにより、Discovererの回転機能、ドリル機能およびローカル計算機能がサポートされます。
キャッシュの動作は、pref.txtファイル内の次の設定を使用して制御します(構成ファイルの場所の詳細は、第A.1項「Discovererファイルの場所」を参照)。
設定名 | デフォルト値 | 説明 |
---|---|---|
CacheFlushPercentage |
25 |
キャッシュが完全に満たされた場合に、フラッシュされるキャッシュの割合(%)。 |
MaxVirtualDiskMem |
1024000000 |
データ・キャッシュに使用できるディスク・メモリーの最大量。 |
MaxVirtualHeapMem |
5120000 |
データ・キャッシュに使用できるヒープ・メモリーの最大量。 |
使用可能なメモリーを活用できるように、デフォルトのキャッシュ・サイズは大きく設定されています。システムでより多くのリソースが利用可能な場合、デフォルトのメモリー値を増やすことができます(ただし、これは問合せが大きな結果セットを返す場合にのみ利点があります)。デフォルト値は、各ユーザーに対して設定する必要がありますが、Discovererプリファレンス・コマンドライン・ユーティリティdis51prを使用して、特定のユーザーの値を変更できます(詳細は、第9.5項「各ユーザーのユーザー・プリファレンスを設定する方法」を参照)。
注意
pref.txtファイルを編集した後は、プリファレンスの変更を適用するためにapplypreferencesスクリプトを実行し、その後Oracle BI Discovererサービスを一度停止して再起動する必要があります(詳細は、第4.3項「opmnctlを使用してDiscovererプリファレンス・サーバー・コンポーネントを起動、停止および再起動する方法」を参照)。
1人のDiscovererユーザーについて使用可能なシステム・リソースを増やした場合、他のDiscovererユーザーまたは他のOracle Fusion Middlewareアプリケーションのユーザーに弊害が生じる場合があります。
一日ごとに正確なデータを取得する必要がある場合は、オフピーク時にワークシートを処理するようにスケジュールしてピーク時のサーバーへの負荷を軽減することにより、Discovererのパフォーマンスを向上できます。ワークブックのスケジュールの詳細は、『Oracle Fusion Middleware Oracle Business Intelligence Discoverer Plusユーザーズ・ガイド』を参照してください。
ワークブックが比較的安定した状態で維持される場合は、Oracle Web Cacheを使用してDiscoverer Viewerのパフォーマンスを大幅に向上させることができます。Oracle Web Cacheの詳細は、第7章「Oracle Web CacheとのDiscoverer Viewerの使用」を参照してください。
Discoverer Portlet Providerのパフォーマンスを向上させるには、Oracle Enterprise Manager Fusion Middleware Controlの「Discoverer Portlet Provider構成」ページで次の設定値を調整します。
最大セッション数(例: 20)
最大セッション停止時間(例: 10)
最大セッション継続時間(例: 2)
最大待機時間(例: 120)
詳細は、第4.6.1項「Discovererクライアント層コンポーネントを構成する方法」を参照してください。
注意: また、configuration.xml内の<server> <activation>セクションのmaxSessions設定の値を設定して、同時に実行できるDiscovererセッションの最大数(Discoverer Plus、Discoverer Viewer、Discoverer Portlet ProviderおよびDiscoverer Webサービスの場合)も指定できます。
この項でのパフォーマンスのヒントを実行してもパフォーマンスの問題が解決しない場合、次の1つまたは複数を実行してください。
Discovererのクエリー予測機能がDiscovererのパフォーマンスに影響を与えている場合、まず、EXPLAIN PLANを使用するようにクエリー予測モードを変更します。EXPLAIN PLANを使用するようにクエリー予測モードを変更してもパフォーマンスが向上しない場合、クエリー予測をオフにします。
Discoverer PlusでEXPLAIN PLANを使用するようにクエリー予測モードを変更するには、QPPObtainCostMethodプリファレンスの値を0に設定します(詳細は、第9.4項「すべてのユーザーに対するデフォルトのユーザー・プリファレンスを設定する方法」を参照)。
Discoverer Plusでクエリー予測をオフにするには、QPPEnableプリファレンスの値を0に設定します(詳細は、第9.4項「すべてのユーザーに対するデフォルトのユーザー・プリファレンスを設定する方法」を参照)。クエリー予測の詳細は、『Oracle Fusion Middleware Oracle Business Intelligence Discoverer管理者ガイド』を参照してください。
Discoverer Administratorで必要に応じてサマリーがリフレッシュされることを確認します。詳細は、『Oracle Fusion Middleware Oracle Business Intelligence Discoverer管理者ガイド』を参照してください。
Discovererデータ・キャッシュに利用可能なメモリー容量を増やします(pref.txtのMaxVirtualDiskMemプリファレンスを使用します)。詳細は、第9.4項「すべてのユーザーに対するデフォルトのユーザー・プリファレンスを設定する方法」を参照してください。
Discovererのワークブック・ダイアログ(「データベースからワークブックを開く」ダイアログなど)は更新に時間がかかるため、古いワークブックとワークシートが不要になったときには、Discovererエンド・ユーザーが削除するようにします。
Discovererのユーザー・ダイアログ(Discoverer Plus Relationalの「ワークブックの共有」ダイアログなど)は更新に時間がかかるため、古いデータベース・アカウントとロールが不要になったときには、Discovererマネージャが削除するようにします。
記録されるDiscovererログ情報の量を最小にします。記録されるログ情報の量を変更する方法の詳細は、第11.3項「Fusion Middleware Controlを使用してDiscovererのログ・ファイルを表示する方法」および第11.4項「Discovererコンポーネント・ログ出力のログ・レベルを設定する方法」を参照してください。
Discovererサーバーが稼働中であれば、Discoverer中間層マシン上で、利用可能なメモリーの容量を増やすか、スワップ領域の容量を増やします。詳細は、Discoverer中間層マシンのオペレーティング・システムのドキュメントを参照してください。
注意
Discoverer EUL Command Line for Javaのコマンドの一部は、Discoverer Administratorでの同等のコマンドまたは操作よりも、実行に時間を要することがあります。
Discovererのパフォーマンスの問題を診断する場合、使用中のネットワークのタイプ、およびOracle BIマシンとクライアント・ブラウザ・マシンとの間の距離によってパフォーマンスが影響を受けることに注意してください。たとえば、一般に、LAN経由でDiscovererを使用すると、インターネット経由でDiscovererを使用するよりも動作が高速になります。
Oracleのスケーラブルなアーキテクチャにより、Discovererサービス層を複数のマシンにインストールできます(複数のマシンへのOracle BI Discovererのインストールの詳細は、第6章「複数マシン環境または複数インスタンス環境におけるDiscovererの管理」を参照)。
次のいずれかを使用して、複数のマシン間でロード・バランシングを行うことができます。
Oracle Web Cache
標準のHTTP/IPルーター・ロード・バランサ
詳細は、『Oracle Fusion Middlewareパフォーマンスおよびチューニング・ガイド』を参照してください。