集計の問合せの候補を特定するためのOracle BIサマリー・アドバイザの使用
Oracle Exalytics Machine上でOracle Analytics Serverを実行している場合、Oracle BIサマリー・アドバイザ機能を使用して、問合せのパフォーマンスが向上するのはどの集計であるのか特定し、推奨集計を作成するスクリプトを生成できます。Oracle Exalytics Machine上でOracle Analytics Serverを実行していない場合、Oracle BIサマリー・アドバイザ機能は使用できません。
このセクションには次のトピックが含まれます:
Oracle BIサマリー・アドバイザについて
問合せ時間を短縮するために、ロールアップ・データを含む問合せに対して事前に計算された結果を格納する集計表を作成できます。
集計を作成する前に、使用状況トラッキング統計を分析し、問合せのパフォーマンスが向上する可能性があるのはどの集計であるのかを特定する必要があります。サマリー・アドバイザを使用して、特定のリソースの制約を満たしつつ、最大の問合せパフォーマンスを得る可能性がある問合せパターンに基づいた集計表の最適なリストを取得できます。サマリー・アドバイザによって集計作成スクリプトが生成され、それを実行すると、推奨集計表を作成できます。
このセクションには次のトピックが含まれます:
サマリー・アドバイザ統計の収集
サマリー・アドバイザで推奨を生成するには、その前に、サマリー・アドバイザが使用する使用状況統計の代理サンプルを取得する必要があります。
使用状況トラッキングとサマリー・アドバイザ・ロギングを有効化すると、本番システムのパフォーマンスにわずかに影響します。
次のいずれかのアプローチを実行して、サマリー・アドバイザ統計を収集します。
-
本番システム上で使用状況トラッキングおよびサマリー・アドバイザ・ロギングを有効にして、ユーザーが数日間にわたってOracle BIサーバーに対する問合せを実行できるようにします。サマリー・アドバイザ統計表に、使用状況統計が移入されます。使用状況トラッキングの有効化およびサマリー・アドバイザ・ロギングの有効化を参照してください。
-
テスト環境で、Oracle BIサーバーに対して代理ワークロードを実行し、サマリー・アドバイザ統計を収集します。代理ワークロードは、一般的に要求される論理SQL文のリストです。通常、代理ワークロードは本番環境から取得します。
代理ワークロードが用意できたら、テスト環境のOracle BIサーバーで使用状況トラッキングとサマリー・アドバイザ・ロギングを有効化し、
nqcmd
ユーティリティを使用してそのOracle BIサーバーに対してワークロードを実行します。リポジトリのテストおよび絞込みのためのnqcmdの使用を参照してください。サマリー・アドバイザ統計表に、使用状況統計が移入されます。
サマリー・アドバイザの推奨の生成と使用
サマリー・アドバイザ統計表に代理データが移入された後、サマリー・アドバイザによってデータを分析し、集計の推奨を生成して問合せを高速化できます。
管理ツールのOracle BIサマリー・アドバイザ・ウィザードを実行して集計指定を生成し、nqcmd
を使用してその集計指定を使用して集計を作成します。集計指定スクリプトの生成および集計指定スクリプトの実行を参照してください。
Oracle BIサマリー・アドバイザでは、Oracle TimesTen In-Memory DatabaseやOracle Analytics Serverで、またはOracle ExalyticsでのOracle Database In-Memoryの使用時に集計の作成がサポートされます。
サマリー・アドバイザのオプションをファイルに保存し、同じオプションを再入力することなく、後でOracle BIサマリー・アドバイザ・ウィザードを再実行することもできます。
メジャー・サブセットの推奨事項について
集計および特定のメジャーを含むサマリー・アドバイザの使用について学習します。
サマリー・アドバイザ・ウィザードで、「問合せで使用されているメジャーのみ含める」オプションが設定されていると、サマリー・アドバイザは、分析済の問合せワークロードに存在していて、集計が作成された場合に問合せワークロードを最適化できる特定のメジャーが含まれている集計のみを推奨します。
-
サマリー・アドバイザには、お薦めされる集計の問合せワークロードで使用されないメジャーは含まれません。
-
集計ファクト表のサイズの見積りは、見積りの際に論理ファクト表のすべてのメジャーを使用するのではなく、推奨メジャー・サブセットに基づいて行われます。
-
サマリー・アドバイザには、お薦めされる集計において集計の永続性に無効なメジャーは含まれません。
統計データベースの設定
Oracle BIサマリー・アドバイザ機能を使用する前に、収集した統計を格納するデータベースを設定する必要があります。
ターゲット・データベースでリポジトリ作成ユーティリティ(RCU)を実行し、必要な統計スキーマを作成する必要があります。
Oracle Analytics Serverのインストールと構成を参照してください。
-
Oracle Analytics Serverとともに使用するためにインストールしたデータベースにはすでにRCUで作成したスキーマが存在するため、このデータベースを統計データベースとして使用します。サマリー・アドバイザ用にRCUで作成した表の名前は、
S_NQ_SUMMARY_ADVISOR
です。 -
また、そのデータベースを、Oracle BIリポジトリの物理レイヤーにインポートすることも必要です。
-
サマリー・アドバイザには、使用状況トラッキングに使用するものと同じデータベースを使用する必要があります。使用状況トラッキング用にデータベースとスキーマをすでに設定済である場合は、この項のステップを省略できます。
リレーショナル・データ・ソースからのメタデータのインポートを参照してください。
リポジトリのアップロード・コマンドを使用して、リポジトリをアップロードし、問合せに使用できるようにします。リポジトリを問合せで使用可能化を参照してください。
S_NQ_SUMMARY_ADVISOR表の列
S_NQ_SUMMARY_ADVISOR表の列を確認します。
列 | 説明 |
---|---|
GROUPBYCOLUMNIDVECTOR |
処理パスでグループ化列を表す論理列オブジェクトのアップグレードID。 処理パスはOracle BIサーバーの内部用語です。これは、1つのファクト論理表ソースを含む副問合せを表します。 |
LOGICALFACTTABLEID |
論理ファクト表のアップグレードID。 |
LOGICALTABLESOURCEIDVECTOR |
論理表ソースのアップグレードID。 |
LOGICAL_QUERY_ID |
|
MEASURECOLUMNIDVECTOR |
処理パスでメジャーを表す論理列オブジェクトのアップグレードID。 |
PROCESSINGTIMEINMILLISEC |
この処理パスで費やされた時間(ミリ秒)。 |
QUERYLEVELIDVECTOR |
処理パスにおける論理レベルのアップグレードID。 |
QUERYSTATUS |
内部使用専用。 |
ROW_COUNT |
処理パスで取得された行数。この列のデータは、Oracle BIサマリー・アドバイザが使用するために予約されています。 |
SOURCECELLLEVELIDVECTOR |
論理表ソースにおける論理レベルのアップグレードID。 |
VERSION |
Oracle BIサーバーのバージョン番号。 |
使用状況トラッキングの有効化
サマリー・アドバイザ統計を収集する前に、使用状況トラッキングを有効化する必要があります。
Oracle Analytics Serverの管理の使用状況トラッキングの管理を参照してください。
サマリー・アドバイザ・ロギングの有効化
統計を収集する準備ができたら、サマリー・アドバイザ・ロギングを有効化できます。新しい(アップグレードしたものではない)インストールの場合、サマリー・アドバイザ・パラメータは中央で管理します。アップグレードのお客様の場合は、サマリー・アドバイザ・パラメータはデフォルトでは中央で管理されません。
サマリー・アドバイザ・ロギングの有効化
サマリー・アドバイザのパラメータは、NQSConfig.INI
を使用して管理できます。
これらのパラメータに対して中央管理が無効になっている場合にNQSConfig.INI
でサマリー・アドバイザ・ロギングを有効化するには、次のステップに従います。
- Oracle BIサーバー・コンピュータで、テキスト・エディタを使用して
NQSConfig.INI
ファイルを開きます。このファイルは次の場所にあります:ORACLE_INSTANCE/config/OracleBIServerComponent/coreapplication_obisn
編集する前に、ファイルのバックアップ・コピーを作成します。
-
[USAGE_TRACKING]
セクションで、次のパラメータを更新します。-
SUMMARY_STATISTICS_LOGGING
を次のいずれかのオプションに設定します。-
YES:
サマリー・アドバイザ・ロギングを有効にします。 -
LOG_OUTER_JOINT_QUERIES_ONLY
: 外部結合を含む論理問合せに対してのみサマリー・アドバイザ・ロギングを有効にします。完全なSummary Advisorのロギングを有効にすることによる小さいパフォーマンスへの影響が問題となる場合は、このオプションを使用することを検討してください。
-
-
統計を収集するデータベース表の完全修飾名に
SUMMARY_ADVISOR_TABLE_NAME
を(Oracle BIリポジトリの物理レイヤーに表示されているとおりに)設定します。例:SUMMARY_ADVISOR_TABLE_NAME = "My_DB"."DEV_BIPLATFORM"."S_NQ_SUMMARY_ADVISOR";
指定する表名は、使用状況トラッキングに使用するものと同じデータベース・オブジェクトおよび接続プールに属している必要があります。
-
-
保存してファイルを閉じます。
-
Oracle BIサーバーを再起動します。
-
複数のOracle BIサーバー・インスタンスがある場合は、すべてのOracle BIサーバー・インスタンスについて、各
NQSConfig.INI
ファイルでこれらのステップを繰り返します。
管理ツール・メニューへのサマリー・アドバイザの追加
-
bi-config.xml
を開きます-
Linuxの場合:
$DOMAIN_HOME/config/fmwconfig/biconfig/core/bi-config.xml
-
Windowsの場合:
%DOMAIN_HOME%\config\fmwconfig\biconfig\core\bi-config.xml
-
-
<bi:hw-acceleration>
という属性を検索します。 -
この属性をtrueに設定します。
-
Business Intelligenceサービスを再起動します。これで、メニュー・オプションが表示されるはずです。
集計指定スクリプトの生成
サマリー・アドバイザ統計の生成後に、Oracle BIサマリー・アドバイザ・ウィザードを実行すると、集計指定スクリプトを生成できます。このスクリプトは集計を作成する際に実行できます。
サマリー・アドバイザ・ウィザードは、オンライン・モードでのみで実行できます。また、Oracle BIサマリー・アドバイザ・ウィザードはコマンドラインから実行することもできます。nqaggradvisorユーティリティを使用したOracle BIサマリー・アドバイザの実行を参照してください。
サマリー・アドバイザ・ウィザードを実行する前に、集計を作成するために使用するターゲット・データベースを物理レイヤーにマップする必要があります。必要なデータベース、接続プールおよび物理スキーマ・オブジェクトを手動で作成する必要があります。
Oracle BIサマリー・アドバイザ・ウィザードを以前に使用したことがあり、フィルタ基準、ターゲットおよびその他のオプションをXMLファイルとして保存してある場合は、「ファイルからパラメータのロード」をクリックし、前に保存したオプションを現在のウィザード・セッションにロードできます。
Oracle BIサマリー・アドバイザ・ウィザードは、Oracle Analytics Serverを実行している場合、またはOracle ExalyticsでOracle Database In-Memoryを使用している場合に使用できます。Oracle Exalytics上のOracle Database In-Memoryをターゲットとして使用して、集計スクリプト(サマリー・アドバイザによって推奨された集計または手動で定義した集計)を実行できます。
サマリー・アドバイザ表(システムMBeanブラウザのSummaryAdvisorTableName
、またはNQSConfig.INI
のSUMMARY_ADVISOR_TABLE_NAMEパラメータで指定)が空の場合、サマリー・アドバイザは続行できません。
サマリー・アドバイザ設定の推奨事項
サマリー・アドバイザの「その他」ページでは、次のようにすることをお薦めします。
-
「代理キーの使用」を選択して、集計を使用する問合せのパフォーマンスを向上させます。
-
「優先オプティマイザ見積り」を選択して、サマリー・アドバイザの処理時のパフォーマンスを向上させます。
「優先オプティマイザ見積り」オプションにより、サマリー・アドバイザは、可能なときには実際の行数問合せを発行するかわりに、データベース問合せオプティマイザから発生するカーディナリティの見積りを使用するようになります。「優先オプティマイザ見積り」オプションは、Oracle Databaseで使用できます。
データベース問合せオプティマイザの見積りを使用するサマリー・アドバイザは、関連データベース・オブジェクトの最新の統計情報を取得します。詳細は、Oracle Databaseのドキュメントを参照してください。
「優先オプティマイザ見積り」オプションを選択していないと、サマリー・アドバイザはバックエンドのデータ・ソースに行数問合せを発行して、そのデータ・ソースの特定の問合せの行数(カーディナリティ)を取得しますが、この実行には時間がかかることがあります。最良の見積りを取得する方法のガイドラインについては、適切なデータベースのドキュメントを参照してください。たとえば、Oracle Databaseを使用している場合は、複数列の問合せのカーディナリティ見積りを改善するために、列グループ機能の使用が必要になることがあります。
特定のグレインに対するエントリがサマリー・アドバイザのキャッシュ・ファイルにすでに存在している場合は、実際の行数問合せであるか、カーディナリティ見積りの問合せであるかに関係なく、そのグレインのサンプリングを試みる問合せはサマリー・アドバイザでは発行されません。
「優先オプティマイザ見積り」オプションの選択時または選択解除時には、サマリー・アドバイザのキャッシュ・ファイルを削除してください。これを行うには、Oracle BI管理ツールのコンピュータで、次のディレクトリにある
NQAggregate.Stats.Cache.txt
およびNQAggregate.LTS.Stats.Cache.txt
を削除します。ORACLE_INSTANCE\bifoundation\OracleBIServerComponent\ coreapplication_obisn\aggr
-
「問合せで使用されているメジャーのみ含める」を選択し、問合せで使用されているメジャーを含めます。「メジャー・サブセットの推奨事項について」を参照してください。
このオプションを選択しないと、論理ファクト表内のすべてのメジャーが推奨事項内に含まれます。これには、サマリー・アドバイザで分析済のワークロードで使用されないメジャーも含まれます。
「サマリー・アドバイザの停止基準による実行の制約」を参照してください。
Oracle BIサマリー・アドバイザのパフォーマンスと結果に影響を及ぼす可能性のあるモデリングの問題がリポジトリに含まれないよう、モデル・チェック・マネージャを実行することをお薦めします。モデル・チェック・マネージャを使用したモデリングの問題のチェックを参照してください。
モデル・チェックは、オフピークの期間に実行することをお薦めします。モデル・チェック・マネージャは、いくつかのチェックのためにバックエンド・データ・ソースに対する問合せを実行します。巨大なリポジトリに対してモデル・チェック・マネージャを実行すると、時間がかかることがあります。パフォーマンスを向上させるには、「統計によるフィルタ処理」を使用するか、選択したオブジェクトに対してのみモデル・チェック・マネージャを実行するようにしてください。
集計指定スクリプトの実行を参照してください。
サマリー・アドバイザの停止基準による実行の制約
サマリー・アドバイザ・ウィザードの「停止基準」ページでは、推奨のセットに対する実行の制約を指定できます。
次の点を考慮してください。
-
サマリー・アドバイザが結果を返すまでの最大時間を指定できます。
-
新しい集計を追加する際に、そのワークロードで影響を受けるすべての問合せのパフォーマンスに対する最小向上パーセンテージを指定できます。
サマリー・アドバイザは、反復最適化アルゴリズムを使用します。サマリー・アドバイザでは、反復の回ごとに、異なるセットの集計が評価されます。この画面で最小向上パーセンテージを指定すると、サマリー・アドバイザによって、2つの連続する回の推定される向上が比較され、その向上が、指定した最小パーセンテージに満たない場合は停止されます。
各回の推定される向上を示す計算式は次のとおりです。
Estimated Gain = [(total query time at the beginning of the round) - (total query time at the end of the round)] / (Initial total query time prior to the first round)
例:
-
初期合計問合せ時間= 1000秒
-
1回目の終わり:
合計問合せ時間= 500秒
向上= (1000 - 500)/1000 = 50%
-
2回目の終わり:
合計問合せ時間= 250秒
向上= (500 - 250)/1000 = 25%
-
nqaggradvisorユーティリティを使用したOracle BIサマリー・アドバイザの実行
Oracle BI管理ツールを使用するかわりに、コマンドラインからOracle BIサーバー・ユーティリティnqaggradvisor
を使用して、サマリー・アドバイザを実行できます。
サマリー・アドバイザ統計を生成した後、nqaggradvisor
を使用して集計指定スクリプトを生成し、それを実行して集計を作成できます。nqaggradvisor
ユーティリティは、Oracle Analytics ServerをOracle Exalytics Machine上で実行している場合にのみ使用できます。
nqaggradvisor
ユーティリティの場所は、次のとおりです。
BI_DOMAIN/bi/bitools/bin
構文
nqaggradvisor
ユーティリティは次のパラメータを取ります。
nQAggrAdvisor -d dataSource | -u userName | -o outputFile | -c tupleInQuotes [-p password] [-F factFilter] [-z maxSizeAggr] [-g gainThreshold] [-l minQueryTime] [-t timeoutMinutes] [-s startDate] [-e endDate] [-C on/off] [-M on/off] [-K on/off]
説明:
dataSourceは、接続してサマリー・アドバイザを実行するOracle BIサーバーのODBCデータ・ソース名です。
userNameは、データ・ソースにログインするユーザー名です。指定されたユーザーは、管理ツールをオンライン・モードでオープンし、Oracle BIサマリー・アドバイザを使用するために必要な権限を持つ必要があります。
outputFileは、集計指定スクリプトの出力の完全修飾パスおよびファイル名です。
tupleInQuotesは、集計の永続性ターゲットです。完全修飾接続プール、完全修飾スキーマ名およびMB単位の容量を指定する必要があります。
passwordは、userNameに対応するパスワードです。これを指定しないと、nQAggrAdvisor
を実行する際に、ユーザーがパスワードを求められます。
factFilterは、ファクト・フィルタ・ファイル名です。ファクト・フィルタ・ファイルには、サマリー・アドバイザの推奨事項を生成する論理表の完全修飾名が含まれます。個々の論理ファクト表の完全修飾名を、別々の行に追加します。ファクト・フィルタを指定しないと、リポジトリ内のすべての論理ファクト表が分析に含められます。
maxSizeAggrは、集計のMB単位の最大サイズです。
gainThresholdは、反復最適化アルゴリズムに新しい集計を追加する場合に、サマリー・アドバイザに必要なワークロード内で影響を受けるすべての問合せのパフォーマンス・ゲインが改善された割合の最少パーセンテージです。この値が満たされない場合、サマリー・アドバイザが停止します。デフォルト値は1です。
minQueryTimeは、サマリー・アドバイザ・プロセスに含まれる前に、各論理表ソースで必要な秒単位の最少の問合せ時間しきい値です。デフォルト値は0です。
timeoutMinutes
は、結果を返すまでのサマリー・アドバイザの分単位の最長実行時間です。0を指定すると、無制限になります。デフォルト値は0です。
startDateは、サマリー・アドバイザ・プロセスに含める統計の開始日です。
endDateは、サマリー・アドバイザ・プロセスに含める統計の終了日です。
-C
は、オプティマイザの予測を使用するかどうかを指定します。onまたはoffを指定します。デフォルトはoff
です。
-M
は、推奨事項にどのメジャーを含めるかを指定します。onを指定して、ワークロードで使用中のメジャーを含めます。offを指定すると、論理ファクト表内のすべてのメジャーが含められ、これには、サマリー・アドバイザで分析済のワークロードで使用されないメジャーも含まれます。デフォルトはoffです。
-K
は、代用キーを使用するかどうか指定します。onまたはoffを指定します。デフォルトはonです。
例
次の例では、tupleInQuotes
パラメータを正常に指定する方法を示します。
nQAggrAdvisor -d "AnalyticsWeb" -u "Administrator" -p "ADMIN" -o "C:\temp\aggr_advisor.out.txt" -c "DW_Aggr"."Connection Pool","DW_Aggr".."AGGR",1000
次の例では、gainThreshold
、startDate
およびendDate
パラメータを正常に指定する方法を示します。
nQAggrAdvisor -d "AnalyticsWeb" -u "Administrator" -p "ADMIN" -o "C:\temp\aggr_advisor.out.txt" -F "C:\temp\fact_filter.txt" -g 10 -c "TimesTen_instance1"."Connection Pool","dbo",2000 -s "2011-05-02 08:00:00" -e "2011-05-07 18:30:00" -C on -M on -K off