データ・ソースへのプッシュダウンの問題にリンクされた照会のパフォーマンスが低下する

Data Virtualization のビューからの結果の受信に遅延が生じることがあります。これは、 SAP HANADb2 データ・ソースの間で SQL ダイアレクトが一致しないためです。

症状

クエリー するビューがリモート・データ・ソースからのものである場合、結果が戻されるまでに時間がかかります。 SAP HANA

原因

Data Virtualization は、 SQL ダイアレクトの不一致のために、 SAP HANA に クエリー をプッシュダウンしていません。 その結果、フェデレーションは述部または関数をリモート・データ・ソースにプッシュダウンする代わりにローカルに適用し、 クエリー を複数の分岐に分割することもあります。

クエリー が複数の分岐に分割されているかどうかを判別するには、 db2expln コマンドを使用して Explain プランを生成し、結果を表示します。 リモート・データ・ソースにプッシュダウンされる クエリー には、 2 つのボックスのみが表示されます。

詳しくは、 db2expln - SQL および XQuery Explain コマンド を参照してください。

問題の解決

この問題を解決するには、リモート・ビューを使用して表を クエリー します。 リモート・ビューを使用できない場合は、照会をネイティブに仮想化してみてください。 最後に、ネイティブに仮想化できない クエリー ごとに、ネイティブ クエリー が参照する各リモート表を仮想化します。 次に、元のリモート表の代わりにこれらの仮想表を参照する同等の Data Virtualization クエリー を構成して最適化します。

1 次ソリューション: リモート・ビューを使用する
この問題を解決するには、リモート・ビューを使用して、 SAP HANA から直接表を クエリー します。 Data Virtualization は、ビューを直接指す仮想表を照会します。これは、リモート・データ・ソースが基礎となる クエリー を実行することを意味します。
2 次ソリューション: 表をネイティブに仮想化する
リモート・ビューを使用して表を クエリー できない場合は、以下のステップを実行して、表をネイティブに仮想化します。
  1. 仮想化する必要がある照会または仮想表を判別してから、以下を検討します。
    • 照会によっては、位置パラメーターや変数を参照する照会のように、ネイティブに仮想化できないものもあります。また、アプリケーションを変更して、 クエリー のために単一の抽象オブジェクト (仮想表など) を参照できるようにすることもできません。 このような場合、参照されるリモート表を仮想化してから、仮想表に対する同等の クエリー を最適化する必要があります。 オプションの第 3 の解決策: クエリー パフォーマンスの向上 を参照してください。
    • 仮想化されたネイティブ照会で参照された表のうち、別個に仮想化された表を特定します。 仮想化されたネイティブ照会の外部でこれらの仮想表を クエリー する必要がない場合は、不要な仮想表を維持しないようにするために、これらの表を削除することを検討してください。
  2. VIRTUALIZENATIVEQUERY ストアード・プロシージャーを実行して、リモート・ クエリー を仮想表として仮想化し、 Federation が SAP HANA に クエリー を複数のブランチに分割したり、述部や関数をローカルに適用したりすることなく送信できるようにします。

    ストアード・プロシージャーを実行するには、 VIRTUALIZENATIVEQUERY ストアード・プロシージャー を参照してください。

  3. 仮想化するリモート クエリー ごとにストアード・プロシージャーを実行します。
  4. ストアード・プロシージャーを実行した後、 SELECT * FROM <VTSCHEMA>.<VTNAME> を使用して、他の仮想化テーブルや クエリー と同じ方法で仮想テーブルに対して照会を実行できます。

    <VTSCHEMA> を仮想表のスキーマに置き換え、 <VTNAME> を仮想表の名前に置き換えます。

オプションの第 3 の解決策: クエリー パフォーマンスの向上
照会をネイティブに仮想化できない場合は、ネイティブ クエリー が参照する各リモート表を仮想化します。 次に、元のリモート表の代わりに、新しく作成した仮想表を参照する同等の Data Virtualization クエリー を作成します。 クエリー する前に、仮想表を最適化するために、以下のステップを検討してください。
  1. MAX_PUSHDOWN クエリー モードを使用可能にします。このモードでは、 SQL ダイアレクトの相違にかかわらず、 クエリー 処理の多くをデータ・ソースにプッシュダウンしようとします。

    MAX_PUSHDOWN を有効にする方法については、 Data Virtualization での クエリー モードの設定 を参照してください。

    注: クエリー 結果の問題が発生しており、 MAX_PUSHDOWN を使用可能にできない場合は、『 フェデレーション・サーバー・オプションの設定』を参照して、以下のプッシュダウン・プロパティーを調整してください。
    • db2_maximal_pushdown
    • varchar2_compat
    • db2_varchar_blankpadded_comparison
    • varchar_no_trailing_blanks
    • collating_sequence
  2. 共通表式 (CTE)、オンライン分析処理 (OLAP) 関数、または Db2 に固有のその他の関数などの複雑な構造を避けることにより、 SQL 照会を単純化します。 これにより、 クエリー がデータ・ソースと同じ SQL ダイアレクトと互換性を持ち、より効率的にプッシュダウンできるようになります。
  3. クエリーSAP HANA