問合せとパフォーマンス
分析の実行時には、追加処理のためにBIサーバーに送信するデータをできるだけ少なくするために、データベースの集計および処理に優先順位が付けられます。 分析を作成する際は、この原則を堅持してパフォーマンスを最大化する必要があります。
問合せの実行時に、発生する3つのフェーズを次に示します。
-
SQLのコンパイル
-
データベースSQLの実行
-
データ・セットの取得および分析での表示
フェーズ |
ステップ |
摘要 |
---|---|---|
1 |
1 |
1つ以上のサブジェクト領域の列を使用して分析を作成し、適切なフィルタおよびグラフを追加して実行します。 |
1 |
2 |
BIプレゼンテーション・サービスはリクエストを受け取り、サブジェクト領域および列に基づいた論理SQL文をBIサーバーに送信します。 |
1 |
3 |
BIサーバーでは、次のことが実行されます。
|
2 |
4 |
集計やデータ・セキュリティを含むデータベース問合せがデータベースで実行されます。 |
2 |
5 |
集計されたデータ・セットがBIサーバーに返され、結果がマージされて、追加の計算やフィルタが適用されます。 |
3 |
6 |
最終的なデータ・セットがBIプレゼンテーション・サービスに戻され、表示用に書式設定されて、分析に表示されます。 |
パフォーマンスを最大化する方法
分析の設計方法は、BIサーバーによる物理問合せの作成方法に影響します。これにより、どれくらいの処理をデータベースにフォーカスして、最大のパフォーマンスを発揮できるかが決まります。 アドホック分析を作成するときは、その他の要因も考慮する必要があります。
分析のパフォーマンスを改善するためには、次の点が重要です。
-
必要なサブジェクト領域と列のみを選択してください。 選択内容によって、データベース問合せで使用するビュー・オブジェクトとデータベース表が決まります。 不要な表があれば、処理対象の問合せや結合が増えます。
-
適切なフィルタを追加してデータベースの索引を使用し、BIサーバーに返される結果データを削減します。
-
不要なビジュアル・グラフを削除します。
-
使用されていないデータ列を削除します。 ビジュアル・グラフで使用されていない列が物理SQLの実行に含まれると、データベース問合せの処理オーバーヘッドが増加する場合があります。
問合せのパフォーマンスを低下させる可能性がある要因と、その改善のために何ができるかを次に示します。
要因 |
摘要 |
提案 |
---|---|---|
セキュリティ |
広範なセキュリティ権限があるユーザーの場合は分析のパフォーマンスがよくなり、制限がある場合は悪化する場合があります。 |
セキュリティをレビューして簡素化します。 ロールの数を最小限に抑え、データ・セキュリティを強制するために複雑なカスタム問合せを使用しないようにします。 |
サブジェクト領域間 |
複数のサブジェクト領域を含む分析は、パフォーマンスに影響を与える可能性があります。 |
分析をレビューして、問合せのサブジェクト領域をいくつか削除できるかどうかを検討してください。 すべてのサブジェクト領域が必要ですか。 分析を作成したときに、特定のサブジェクト領域の追加中にパフォーマンスに影響がありましたか。 |
階層 |
階層(特に大きい階層)は、パフォーマンスに影響を与える可能性があります。 ツリーおよびマネージャなどの階層ディメンションに対する問合せは、パフォーマンスに影響を与えることがあります。 BIサーバーでは、列水平化アプローチを使用して階層内の特定ノードのデータを迅速に取り出します。 ただし、階層の異なるレベルについては事前集計されません。 |
階層を削除して、パフォーマンスが向上するかどうかを確認してください。 すべての問合せを慎重に作成し、十分なフィルタを適用して、結果セットを小さく維持することも重要です。 |
属性数 |
多くの場合、不必要な大量の列が分析で使用されています。 |
基準内の列数をできるだけ少なくしてください。 |
フレックスフィールド |
分析で使用するフレックスフィールドが多すぎると、パフォーマンスが低下する場合があります。 |
フレックスフィールドを削除して、パフォーマンスが向上するかどうかを確認します。 フィルタでフレックスフィールドを使用しないでください。 |
データ量 |
大量のデータの問合せに時間がかかるかを分析します。 すべてのレコードを問い合せて数行のみが返される処理かある場合は、データベースまたはBIサーバーで多くの処理を必要とします。 |
特にデータベース内の索引が設定された列の分析にフィルタを追加することを検討してください。 ブラインド問合せはフィルタなしで実行されて、大きなデータ・セットがフェッチされるので、使用しないでください。 大規模なトランザクション表に対するすべての問合せには、時間制限を付ける必要があります。 たとえば、時間ディメンション・フィルタと追加のフィルタを含め、作業員などの主要ディメンションによって制限します。 トランザクション表のデータベース索引がある列にフィルタを適用します。 これにより、BIサーバーからの問合せに対して適切な実行プランが生成されます。 |
副問合せ(NOT IN、IN) |
別の問合せの結果に基づいてIN (またはNOT IN)のフィルタを適用すると、メイン問合せのすべての行に対して副問合せが実行されます。 |
NOT INまたはINの問合せを論理和集合演算子または論理SQLで置換します。 |
計算メジャー |
メジャーの計算には、多数のデータの問合せが含まれる可能性があります。 |
可能なかぎり、サブジェクト領域の事前定義済メジャーを使用します。 |
フィルタ |
大量のデータを許容するフィルタを使用する分析や、フィルタを使用しない分析では、パフォーマンスが悪化する可能性があります。 |
フィルタを追加し、関数またはフレックスフィールドをフィルタ列に適用しないようにしてください。 可能な場合は、索引付き列にフィルタを使用します。 各サブジェクト領域の索引付けされた列の説明は、ご使用のオファリングのOTBIサブジェクト領域系統を参照してください。 |
分析およびレポートに関する詳細なガイドラインについては、My Oracle Support (文書ID 2679006.1)を参照してください。