問合せパフォーマンスのチューニング
問合せのパフォーマンスを調整して、問合せを最適化し、問合せの実行時間を高速化できます。
問合せとパフォーマンスについて
分析が実行されると、データベースの集計および処理に優先順位が付けられ、処理を増やすために「BIサーバー」に可能なかぎり少ないデータが送信されます。 分析を作成する際は、この原則を堅持してパフォーマンスを最大化する必要があります。
問合せの実行時に、発生する3つのフェーズを次に示します。
- SQLコンパイル。
- データベースSQLの実行
- 結果セットが取得され、分析に表示されます。
問合せの実行時に発生するステップを含む問合せアーキテクチャを次に示します。
![otbi_query_arch_phases.pngの説明が続きます otbi_query_arch_phases.pngの説明が続きます](img/otbi_query_arch_phases.png)
図otbi_query_arch_phases.pngの説明
フェーズ | ステップ | 説明 |
---|---|---|
1 | 1 | 1つ以上のサブジェクト領域の列を使用して分析を作成し、適切なフィルタおよびグラフを追加して実行します。 |
1 | 2 | 「プレゼンテーション・サービス」はリクエストを受信し、サブジェクト領域および列に基づいて論理SQL文を「BIサーバー」に送信します。 |
1 | 3 | 「BIサーバー」は次のことを実行します:
|
2 | 4 | 集計やデータ・セキュリティを含むデータベース問合せがデータベースで実行されます。 |
2 | 5 | 集計されたデータセットがBIサーバーに戻され、その結果がマージされ、追加の計算またはフィルタが適用されます。 |
3 | 6 | 最終データセットは「プレゼンテーション・サービス」に戻され、表示用に書式設定されて分析に表示されます。 |
問合せのパフォーマンスの最大化
分析の設計方法は、「BIサーバー」が物理問合せをどのように構築するかに影響します。これにより、パフォーマンスを最大化するためにデータベースにどのくらいの処理が集中しているかが決まります。
ここでは、アドホック分析を作成する際に、いくつかのファクタを考慮する必要があります。
分析のパフォーマンスを改善するためには、次の点が重要です。
- 必要なサブジェクト領域と列のみを選択してください。 選択内容によって、データベース問合せで使用するビュー・オブジェクトとデータベース表が決まります。 不要な表があれば、処理対象の問合せや結合が増えます。
- 適切なフィルタを追加してデータベースの索引を使用し、BIサーバーに返される結果データを削減します。
- 不要なビジュアル・グラフを削除します。
- 使用されていないデータ列を削除します。 ビジュアル・グラフで使用されていない列が物理SQLの実行に含まれると、データベース問合せの処理オーバーヘッドが増加する場合があります。
問合せのパフォーマンスを低下させる可能性がある要因と、その改善のために何ができるかを次に示します。
ファクタ | 説明 | 提案 |
---|---|---|
セキュリティ | 広範なセキュリティ権限があるユーザーの場合は分析のパフォーマンスがよくなり、制限がある場合は悪化する場合があります。 | セキュリティをレビューして簡素化します。 ロールの数を最小限に抑え、データ・セキュリティを強制するために複雑なカスタム問合せを使用しないようにします。 |
サブジェクト領域間 | 複数のサブジェクト領域を含む分析は、パフォーマンスに影響を与える可能性があります。 | 分析をレビューして、問合せのサブジェクト領域をいくつか削除できるかどうかを検討してください。 すべてのサブジェクト領域が必要ですか。 分析を作成したときに、特定のサブジェクト領域の追加中にパフォーマンスに影響がありましたか。 |
階層 | 階層(特に大きい階層)は、パフォーマンスに影響を与える可能性があります。
ツリーおよびマネージャなどの階層ディメンションに対する問合せは、パフォーマンスに影響を与えることがあります。 「BIサーバー」では、列フラット化アプローチを使用して、階層内の特定のノードのデータをすばやくフェッチします。 ただし、階層の異なるレベルについては事前集計されません。 |
階層を削除して、パフォーマンスが向上するかどうかを確認してください。 すべての問合せを慎重に作成し、十分なフィルタを適用して、結果セットを小さく維持することも重要です。 |
属性数 | 多くの場合、不必要な大量の列が分析で使用されています。 | 基準内の列数をできるだけ少なくしてください。 |
フレックスフィールド | 分析で使用するフレックスフィールドが多すぎると、パフォーマンスが低下する場合があります。 | フレックスフィールドを削除して、パフォーマンスが向上するかどうかを確認します。 フィルタでフレックスフィールドを使用しないでください。 |
データ量 | 大量のデータの問合せに時間がかかるかを分析します。 すべてのレコードを問い合せる場合もありますが、数行のみを返すため、データベースまたは「BIサーバー」で多くの処理が必要になります。 | 特にデータベース内の索引がある列について、分析にフィルタを追加することを検討してください。
ブラインド問合せはフィルタなしで実行され、大規模なデータsets.All問合せを大きいトランザクション表に対してフェッチする必要があるため、時間制限を回避してください。 たとえば、時間ディメンション・フィルタと、就業者などのキー・ディメンションによって制限する追加フィルタを含めます。 トランザクション表のデータベース索引がある列にフィルタを適用します。 これにより、「BIサーバー」から問合せに対して適切な実行計画が生成されます。 |
副問合せ(NOT IN、IN) | 別の問合せの結果に基づいてIN (またはNOT IN)のフィルタを適用すると、メイン問合せのすべての行に対して副問合せが実行されます。 | NOT INまたはINの問合せを論理和集合演算子または論理SQLで置換します。 |
計算メジャー | メジャーの計算には、多くのデータの問合せが含まれる場合があります。 | 可能な場合は、サブジェクト領域で事前定義済のメジャーを使用します。 |
フィルタ | フィルタまたはフィルタがない分析で大量のデータが致命的になると、パフォーマンスが低下する可能性があります。 | フィルタを追加し、フィルタ列に関数またはフレックスフィールドを適用しないようにします。 可能な場合は、フィルタに索引付き列を使用します。
オファリングのOTBIサブジェクト領域の系統を参照し、各サブジェクト領域の索引付けされた列をドキュメント化します。 |
My Oracle Support (ドキュメントID 2679006.1)の分析およびレポートの考慮事項に関する詳細なガイドラインを確認します。
サブジェクト領域を使用したパフォーマンスの診断
これらの例は、OTBI Usage Real TimeおよびPerformance Real Timeサブジェクト領域を使用して使用状況とパフォーマンスを理解する方法を示しています。これにより、パフォーマンスのボトルネックを診断し、分析の実行速度が遅いか最適化できるかを理解できます。
OTBI使用状況リアルタイム・サブジェクト領域は、ユーザー、分析およびダッシュボード、サブジェクト領域別にOTBIの使用状況トレンドを監視します。 OTBIパフォーマンス・リアルタイム・サブジェクト領域は、使用状況、分析実行時間、実行エラーおよびデータベース物理SQL実行統計を監視します。 「OTBIの使用およびパフォーマンス・サブジェクト領域のリファレンス」を参照してください。
OTBIの使用サブジェクト領域は、2つのジョブ・ロール用にプロビジョニングされます: ITセキュリティ・マネージャおよびアプリケーション実装コンサルタント。 これらを他のジョブ・ロールに使用するには、セキュリティ・コンソールでOTBI使用トランザクション分析職務およびOTBIパフォーマンス・トランザクション分析職務をカスタム・ジョブ・ロールに付与します。 各サブジェクト領域のセキュリティ詳細を確認するには、特定のサブジェクト領域ガイドを参照してください。
レポートのパフォーマンスのチューニング
SQL問合せチューニングを使用して、レポートのパフォーマンスを改善できます。
問合せのパフォーマンスを低下させる可能性があるいくつかの要因と、改善のための提案を次に示します。
ファクタ | 説明 | 提案 |
---|---|---|
フィルタ | 大量のデータを許容するフィルタを使用するレポートや、フィルタを使用しないレポートでは、パフォーマンスが悪化する可能性があります。 | データを制限するには、フィルタ条件を使用します。 |
結合 | 多数の表を結合するレポートの実行速度は遅くなる可能性があります。 | 不要な結合があれば削除します。 |
データ量 | 大量のデータを許容するフィルタを使用するレポートや、フィルタを使用しないレポートでは、パフォーマンスが悪化する可能性があります。 | データを制限するためのフィルタ条件を追加します。可能な場合はデータベース索引のある列を使用します。 小さい表にはキャッシュを使用します。 |
索引 | データベース索引を使用するフィルタにより、パフォーマンスを向上させることができます。 | SQLヒントを使用して、使用する索引を管理します。 |
サブクエリー | サブクエリーはパフォーマンスに影響を与える可能性があります。 |
|
集計 | これは、データベース内の集計に優先順位を付けるのに役立ちます。 |
|
分析で使用されるSQL文のレビュー
次のステップを使用して、論理SQL文および物理SQL文を確認できます。
論理SQLは、分析のために「BIサーバー」に発行されるソース固有のSQLではありません。 論理問合せでは、リポジトリ(RPD)メタデータのプレゼンテーション・レイヤーのサブジェクト領域からの列名を使用します。 論理リクエストに基づいて、「BIサーバー」は、最適化されたソース固有のSQLを、メタデータの物理レイヤーの実際のデータ・ソースに発行します。 管理権限がある場合、分析のための論理SQLと物理SQLの両方をレビューできます。
- 分析の編集時に論理SQLを表示する場合:
- レポートおよびアナリティクス作業領域で、「編集」をクリックしてアナリティクスを編集のために開き、「拡張」タブをクリックします。
- 「発行されたSQL」セクションで、論理SQL文を確認します。
- 「管理」ページからSQL文を表示する場合。