データ シップについて

データ シップの最適化は、フェデレーテッド クエリをローカルで実行される SQL オペレーションに変換することで、効率的なフェデレーテッド クエリの実行を実現します。SQL オペレーションに非常に大きなテーブル (数百万行または数十万行) と、行数が大幅に少ない小さなテーブルが含まれる場合、TDV Server は、小さなテーブルのコピーを大きなテーブルのデータ ソースに送信することで、クエリのパフォーマンスを向上します。この最適化により、従来のフェデレーテッド クエリよりも大幅に高速な結果が得られます。

次の SQL オペレーターでは、データシップの最適化を利用できます。

JOIN
UNION
INTERSECT
EXCEPT

データシップの最適化が有効になっている場合、TDV クエリ エンジンは、明示的に定義されたクエリ オプションをヒントを含んでいる可能性があるクエリを、クエリの依存関係に関して収集された関連するすべてのデータ ソース統計情報を使用して評価し、データシップの最適化を使用することで最適なパフォーマンスが得られるかどうかを判断します。データシップの最適化により、分析と設定に従って実行時間が短縮される場合、クエリを実行すると、データ ソース固有の命令が送信され、小さなテーブルがあるデータベースからターゲット データ ソースの一時テーブルにテーブルのコピー (または実行の結果セット) が移動されます。クエリの処理は、大きなソース テーブルがあるデータ ソースで行われます。フェデレーテッド クエリの両側が単一のデータ ソースに存在するため、処理効率が高まり、結果セットがより高速に返されます。

クエリが TDV に送信されると、TDV はそのクエリを評価し、データシップの最適化を使用せずに実行プランを生成します。このプランは、データシップ前のプランです。TDV は、このプランのフェッチ ノードを調べ、データシップの最適化を使用するかどうかを判断します。データシップの最適化は、次の場合に使用されます。

フェッチ ノードに対応するデータ ソースは、データ シップをサポートします。
クエリ ヒントを使用するクエリでは、データ シップが無効になっていません。
データ ソースは、データ シップ ソースまたはターゲットとして構成されます。

関連するすべてのノードの中で、TDV は 1 つのノードをターゲット専用として、それ以外のすべてのノードをソースとして使用します。TDV は、ターゲット データ ソースに一時テーブルを作成し、その他のノードからこの一時テーブルにデータを移動します。以前のプランのフェデレーテッド SQL オペレーションをターゲット データ ソースに転送する代替クエリ プランが生成されます。

ターゲットノードは、以下の条件に基づいて決定されます。

フェッチ ノードに対応するデータ ソースは、ソースまたはターゲットとして構成されます。
データ シップの下限と上限のセットでデータを取得するコスト。