17.00 - 17.05 - スターおよびスノーフレークの結合の最適化 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLリクエストおよびトランザクション処理

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Published
2020年6月
Content Type
プログラミング リファレンス
ユーザー ガイド
Publication ID
B035-1142-170K-JPN
Language
日本語 (日本)

スター結合およびスノーフレーク結合の最適化について

スターおよびスノーフレーク結合は、各種の大きなテーブル/小さなテーブルの結合の記述に使用される用語です。スターおよびスノーフレークの結合を最適化するときに、以下の概念が適用されます。
  • 大きい/小さいとは、比較上の用語です。

    一般に、大さなテーブルのカーディナリティと小さなテーブルのカーディナリティの比率は、100:1から1,000:1の範囲です。

    これらのカーディナリティの比は、結合されるテーブルの結果に当てはまるのであって、述部の限定によって縮小される前の基本テーブルに適用されるのではありません。

  • すべての小さなテーブルが最初に結合される結合計画は、通常、小さなテーブルがプロダクト ジョインによって結合され、その結果が、通常、マージ結合によって大さなテーブルと結合されるため、積 / マージ結合計画と呼ばれます。
スター/スノーフレークまたはLT/ST結合を含むクエリーのEXPLAINテキストには、明示的には言及されていません。

スター結合

スター結合スキーマは、ファクト テーブルと呼ばれる大さなテーブルを、ディメンション テーブルと呼ばれるより小さな一連のテーブルに結合します。

ファクト テーブルには複合プライマリ インデックスがあります。あるファクト テーブルに関連するディメンション テーブルのセットには、それぞれに単一の単純なプライマリ インデックスがあり、そのファクト テーブル内の複合プライマリ インデックスの構成要素の1つと正確に対応します。

スター結合問合わせでは、選択基準は直接ディメンション テーブルには配置されません。代わりに、ファクト テーブルに格納されているディメンション テーブルのプライマリ インデックスに対してIN条件が配置されます。INリストはディメンション テーブルであるかのように動作するため、通常はディメンション テーブルが必要な場合にスター結合処理が可能になります。

最適化ルーチンでは、ファクト テーブルのプライマリ インデックス列/NUSI列のサブセットをディメンション テーブルに結合するリクエストに対してスター結合処理を適用し、残っているプライマリ インデックス列/NUSI列をIN条件に照らして判断することができます。

スター結合とは、相対的に少数のカーディナリティの3つかそれ以上のリレーションが、より多くの相対カーディナリティを持つ別の関係に結合されているもののことを言います。次元モデル用語では、大さなテーブルのことをファクト テーブル、小さい方のテーブルのことを次元テーブルと呼びます。

大きな関係と小さな関係の違いは、カーディナリティの比によって定義され、最低100:1のオーダーで定義されます。スター結合における小さい方の関係は、必ずしも少ないカーディナリティを持つ基本テーブルから来るとは限りません。それは、中程度のまたは大きな基本テーブルに条件を適用した中間結果である場合もあります。

スターという用語は、その種の結合の図形的な表現から来ています。これは、次の図に示すように、単純な星の絵に似ています。

そのような結合を図形的に表現すると、次のように星型(star)の略図に似ていることがわかります。

スター結合の図

物理データベース設計におけるスター スキーマとディメンション データベース モデルの詳細については、<Teradata Vantage™ - データベースの設計、B035-1094>を参照してください。

スター結合のプライマリ ターゲットとセカンダリ ターゲット

スター結合は、次元データベース モデルの基盤となる構成要素です。そのため、スター結合処理の主要なターゲットは、複合列セットを構築するための、多数の小さな関係のプロダクト ジョインになります。その複合列セットを使用すると、そのプライマリ インデックスまたはセカンダリ インデックスとして、直接大きなリレーションにアクセスすることができます。

スター結合方式は、以下の状況で役立ちます。
  • 複数の大きな関係を含む複合的なケース。
  • 使用可能なインデックスが存在しない場合に、ローカルでスプールされた大きな関係とのマージ結合またはハッシュ結合を許可するための、いくつかの小さな関係のプロダクト ジョイン。

スノーフレーク結合

スノーフレーク結合とは、1つの大さなテーブルが、3つかそれ以上の小さな基本テーブルまたは結合関係と結合し、それら小さなテーブルの一部または全部が、さらに小さな3つ以上の基本テーブルまたは結合関係に結合しているものです。スノーフレークの別の見方は、それを、正規化された次元テーブルを持つ星(star)と考えることです。

物理データベース設計のスノーフレーク体系の概念は、<Teradata Vantage™ - データベースの設計、B035-1094>で説明されています。

スター結合と同じように、テーブルまたは結合関係が大きいか小さいかは、カーディナリティの比によって決まります。大さなテーブル: 小さなテーブルの関係を定義する最小のカーディナリティの比は100:1です。

このような結合のグラフィック表現は、スノーフレークに似ています。

スノーフレーク結合の図化

物理データベース設計のスノーフレーク体系の概念は、<Teradata Vantage™ - データベースの設計、B035-1094>で説明されています。

スター結合の最適化

スター結合の最適化を使用した場合には、最適化ルーチンは、小さなテーブルすべてが最初に結合されてから、その結果生成される関係が大さなテーブルと結合されるように、よりよい結合計画を捜します。そこで、最適化ルーチンは、最低見積もりコストの方式を持つ結合計画を使用します。

スター結合の最適化を使用しない場合には、最適化ルーチンは、1つまたは2つの小さなテーブルを大さなテーブルに結合する適切な処理を実行します。しかし、3つ以上の小さなテーブルを大さなテーブルに結合するときは、通常、最適化ルーチンは、小さなテーブル(または小さなテーブルの結合の結果)を直接大さなテーブルに結合する結合計画を生成します。

大さなテーブルに1つ以上のIN条件が指定されると、最適化ルーチンはINリストをまず小さいテーブルと組み合わせすることを選択することがあります。問合わせ計画は、その結果の結合リレーションを大さなテーブルと結合することになります。その結果はスター結合になり、ディメンション テーブルの数は問合わせで明示的に指定された数より多くなります(結合の順序の確認のステップ6を参照)。

スター結合の最適化の例

以下の図は、4つのテーブルの非最適化スター結合の計画を示しています。テーブルの相対カーディナリティは、それぞれのテーブル内(円で表わされている)で整数として指定されます。各結合の相対コストは、結合済みの関係と接続する線上の整数として指定されます。

この例の結合は、最初の結合は大さなテーブルと1つの小さなテーブルとの間のものです。この結合の相対コストは、1 x 106です。次は、結合されたこの関係と、別の小さなテーブルとの結合です。その相対コストは、1 x 105です。最終的にこの関係は、相対コスト1 x 103で最後の小さなテーブルと結合されます。


4つのテーブルの非最適化スター結合の計画

次の図は、同じテーブル セットに関する最適化された結合計画を示しています。この計画では、大さなテーブルと接続する前に、未接続の(小さな)テーブルすべての折衷結合が使用されます。

最初の結合の相対コストは1 x 102、2番目の相対コストは1 x 104、最後の結合(大さなテーブルとその結合済みの小さなテーブルとの関係)の相対コストは、1 x 103です。


相対コスト図


非最適化スター結合のコストの式

最適化スター結合のコストの式

この例の場合の結果は、同一の4つのテーブルに関して、最適化スター結合の計画は非最適化スター結合の計画と比べてはるかにコストがかからないことを示しています。

スター結合の類別

スター結合は、大きなテーブル/小さなテーブル(LT/ST)結合とも呼ばれます。LT/ST結合には、次の2つの基本タイプがあります。