データ・ソースへのプッシュダウンの問題にリンクされた照会のパフォーマンスが低下する
Data Virtualization のビューからの結果の受信に遅延が生じることがあります。これは、 SAP HANA と Db2 データ・ソースの間で SQL ダイアレクトが一致しないためです。
症状
クエリー するビューがリモート・データ・ソースからのものである場合、結果が戻されるまでに時間がかかります。 SAP HANA
原因
Data Virtualization は、 SQL ダイアレクトの不一致のために、 SAP HANA に クエリー をプッシュダウンしていません。 その結果、フェデレーションは述部または関数をリモート・データ・ソースにプッシュダウンする代わりにローカルに適用し、 クエリー を複数の分岐に分割することもあります。
クエリー が複数の分岐に分割されているかどうかを判別するには、 db2expln コマンドを使用して Explain プランを生成し、結果を表示します。 リモート・データ・ソースにプッシュダウンされる クエリー には、 2 つのボックスのみが表示されます。
詳しくは、 db2expln - SQL および XQuery Explain コマンド を参照してください。
問題の解決
この問題を解決するには、リモート・ビューを使用して表を クエリー します。 リモート・ビューを使用できない場合は、照会をネイティブに仮想化してみてください。 最後に、ネイティブに仮想化できない クエリー ごとに、ネイティブ クエリー が参照する各リモート表を仮想化します。 次に、元のリモート表の代わりにこれらの仮想表を参照する同等の Data Virtualization クエリー を構成して最適化します。
- 1 次ソリューション: リモート・ビューを使用する
- この問題を解決するには、リモート・ビューを使用して、 SAP HANA から直接表を クエリー します。 Data Virtualization は、ビューを直接指す仮想表を照会します。これは、リモート・データ・ソースが基礎となる クエリー を実行することを意味します。
- 2 次ソリューション: 表をネイティブに仮想化する
- リモート・ビューを使用して表を クエリー できない場合は、以下のステップを実行して、表をネイティブに仮想化します。
- 仮想化する必要がある照会または仮想表を判別してから、以下を検討します。
- 照会によっては、位置パラメーターや変数を参照する照会のように、ネイティブに仮想化できないものもあります。また、アプリケーションを変更して、 クエリー のために単一の抽象オブジェクト (仮想表など) を参照できるようにすることもできません。 このような場合、参照されるリモート表を仮想化してから、仮想表に対する同等の クエリー を最適化する必要があります。 オプションの第 3 の解決策: クエリー パフォーマンスの向上 を参照してください。
- 仮想化されたネイティブ照会で参照された表のうち、別個に仮想化された表を特定します。 仮想化されたネイティブ照会の外部でこれらの仮想表を クエリー する必要がない場合は、不要な仮想表を維持しないようにするために、これらの表を削除することを検討してください。
VIRTUALIZENATIVEQUERYストアード・プロシージャーを実行して、リモート・ クエリー を仮想表として仮想化し、 Federation が SAP HANA に クエリー を複数のブランチに分割したり、述部や関数をローカルに適用したりすることなく送信できるようにします。ストアード・プロシージャーを実行するには、 VIRTUALIZENATIVEQUERY ストアード・プロシージャー を参照してください。
- 仮想化するリモート クエリー ごとにストアード・プロシージャーを実行します。
- ストアード・プロシージャーを実行した後、
SELECT * FROM <VTSCHEMA>.<VTNAME>を使用して、他の仮想化テーブルや クエリー と同じ方法で仮想テーブルに対して照会を実行できます。<VTSCHEMA> を仮想表のスキーマに置き換え、 <VTNAME> を仮想表の名前に置き換えます。
- 仮想化する必要がある照会または仮想表を判別してから、以下を検討します。
- オプションの第 3 の解決策: クエリー パフォーマンスの向上
- 照会をネイティブに仮想化できない場合は、ネイティブ クエリー が参照する各リモート表を仮想化します。 次に、元のリモート表の代わりに、新しく作成した仮想表を参照する同等の Data Virtualization クエリー を作成します。 クエリー する前に、仮想表を最適化するために、以下のステップを検討してください。
MAX_PUSHDOWNクエリー モードを使用可能にします。このモードでは、 SQL ダイアレクトの相違にかかわらず、 クエリー 処理の多くをデータ・ソースにプッシュダウンしようとします。MAX_PUSHDOWNを有効にする方法については、 Data Virtualization での クエリー モードの設定 を参照してください。注: クエリー 結果の問題が発生しており、MAX_PUSHDOWNを使用可能にできない場合は、『 フェデレーション・サーバー・オプションの設定』を参照して、以下のプッシュダウン・プロパティーを調整してください。db2_maximal_pushdownvarchar2_compatdb2_varchar_blankpadded_comparisonvarchar_no_trailing_blankscollating_sequence
- 共通表式 (CTE)、オンライン分析処理 (OLAP) 関数、または Db2 に固有のその他の関数などの複雑な構造を避けることにより、 SQL 照会を単純化します。 これにより、 クエリー がデータ・ソースと同じ SQL ダイアレクトと互換性を持ち、より効率的にプッシュダウンできるようになります。
- クエリーSAP HANA