Teradataのは、要約に参加します

Teradataの参加
ANSI結合構文を文の1.SELECTを
:新しいバージョンV2R2は、Teradataのは、ANSI構文や外部接続に参加サポート
SELECT COLNAME [、COLNAME、...]
tabnameのFROM [ANAME]
[INNER]は、JOIN
JOINをLEFT [OUTER]を
RIGHT [OUTER] JOINの
FULLを[OUTER] JOIN
JOIN CROSSを
tabname1 [ANAME]
条件条件のためにオン;

内部結合:全て一致する行を。
LEFT OUTER JOINを表の左側を優先するために、線の右側は、充填NULLと一致することができない。
RIGHT OUTER JOIN:表の右側にある被写体を、行の左側が充填NULLと一致することができない。
FULL OUTER JOINを:テーブルの両方修飾するために使用し、拡張NULLSである。
CROSS JOINを:デカルト製品の製品に参加したりしよう。

ANSIおよびTeradataのの2.Exampleは、構文のJOIN
:ANSI语法
SELECT D.Department_Number AS "部門番号"
、D.Department_Name AS "部門名"
、E.Last_Name AS "姓"
"Empの部門"、E.Department_Number ASを
部門のD
INNER従業員E JOIN
ON E.Department_Number = D.Department_Numberと、

Teradataの構文:
SELECT D.Department_Number AS "ナンバー部門"
、D.Department_Name AS "部門名"
、e.LAST_NAME AS "姓"
、E.Department_Number AS "Empの部門"
D部門の
、従業員E
WHERE E.Department_Number = D.Department_Number;
注:上記のSQL、内部結合として明示的に定義され、しかし内部結合としてテラパーサがまだ解釈されないが。

処理3.Joinは
、テーブルとテーブルの間の外側への参加には、以下の形態である左:
- 、参加製品
-参加マージ、
-ハッシュに参加
-巣に参加
-除外が参加
し、より一般的には、製品で参加し、マージ結合。

参加行は同じAMPに行う必要があります。
スプールと共通のAMPに移動した場合には、所望のシステムは、1つまたは複数の行のコピーを作成し、
任意のソーステーブルのデータを移動したり変更決して処理接続。

:最適化は、参加する最善の方法を選択するには、次の原則に基づいて
有用な指標の
統計(収集された統計やダイナミックサンプル)

比較4種類の2つのアレイ間の差に類似していてもよいジョイン説明:
Aは、B二つの配列は、今や同じアレイ内の2つの要素を必要とすると仮定すると、以下の方法がある:
。アルゴリズム1:A、Bが最初にソートされているが、比較を行う
アルゴリズムの複雑さ:O(nlogn)は-------->マージジョイン
アルゴリズム2:A、Bは、ソートされていない、比較
アルゴリズムの複雑さ:はO(n ^ 2)------ - >製品は、結合
アルゴリズム3:ソート、Bソートされていない、二分法によるB比較
------>ハッシュその間アルゴリズム複雑フロント間の結合
注:製品を選択参加またはマージは、主に参加しますソートに比較的長い時間または長い時間を見て。

4.Optimizer最小限スプール使用
オプティマイザは空間スプール最小限にするために、以下の方法を使用することができます
のみ投影(コピー)クエリ列のニーズ
。最初のシングル関連テーブルを行う(縮小データ線)を
可能な限り、スプールにのみ小さなスペースシート。

スプールスペースを最小に参加行う前に、オプティマイザ:
。設定された第1の条件(WHERE)を適用
する列のみで使用され、必要な時には、スプールされています。

5.Row選択
行選択基準が場合長くできる限り、合流
、プリ参加常にラインに参加する通常最初の選択肢を投影記載されている。
ヒント:の行の数を減らし参加が大幅結合の効率を高めることができる参加します。

6.Join再配布
二つのテーブル、二つのフィールドに関連付けられている彼らはPIの二つのテーブルに関連付けられていない場合は、次のいずれかを実行する必要があります:
1>再配布:PIフィールドがセットに関連付けられている、データを再配分を行います。
2>小さなテーブルのコピー:小さなAMPにテーブルの内容をコピーし、AMP最終的にはすべての小さなテーブルには、すべてのデータが含まれています

二つのテーブルがマージ結合を行うと、3例があります。
最良の場合:二つのテーブルのPIの結合列に関与している、操作はすぐに実行することができる参加
-データが同じAMPを持ち、他のAMPへの転送データには必要ありません。 ;
-データ保存列操作をソートする必要はありません、ハッシュに従ってソートされている。
続いて:表が存在するPIに関与する列を結合する、他のではない。
非- PIが結合列値に関連するデータテーブルに従って行わなければなりませんターゲットAMPへのハッシュの再分布;
-それは小さなテーブルがある場合、すべてのAMPにそうするように参加するために、表全体をコピー;
-テーブルが大きい場合は、コピーラインがターゲットAMPに関与。
最悪の事態:参加に参加。PIテーブルない列
-二つのテーブルを合わせて作られていますが、再分配フィールド(小さなテーブルまたはコピー)に参加します

スプールに表を7.Duplicating
オプティマイザは各AMPに小さなテーブルをコピーすることもできます、マージ結合する。
製品の結合、オプティマイザは、常にすべてのAMPにテーブルをコピーします。
上記の2例では、各AMPでなければなりませんデータがコピーされていることを保証するのに十分なスペースがあります。

参加8.Merge
データラインは、同じAMPに関連していることがある:
。ブロックマージからの読み取りの両方一度だけのテーブルに参加し
通常状態条件ANのための平等のために選ばれた参加。
参加最後の中で、一般的に製品Aより効率的。
マージは、以下の工程参加:
。小さなテーブルを特定し
た場合所望により:
-一方または両方のテーブルの置き予選データのスプール(S)に変換する。
-移動に基づいて、AMPのにスプール行列ハッシュに参加。
- INTO替えスプール行列ハッシュ・シーケンスに参加する。
データと一致しないハッシュ値を使用。

9.関連する(ネストされたが参加)ネストされた
特定の関連付けられた。
常に相関すべてのAMPに関連していないだけ。
システムリソースから、それが最も効率的な方法です。
ほとんどのOLTPアプリケーション良い選択の
入れ子の参加を選択します以下の情報を持っている必要がありオプティマイザ:
- 。同等の最初のテーブル(UPIまたはUSI)
-ユニークな値を持つ列のインデックスへの第2のテーブルの相対
システムテーブル1は、データ列であった。
一致するハッシュテーブル2を使用してデータ行に価値がある。
例:
SELECT e.name、にd.name
E従業員FROM
INNER JOINカテゴリーD
ON E.Dept = D.Dept
E.Enum 5 =。 ;

10.参加乘积(製品が参加)
下列情况均可产生製品参加:
句が欠落しているWHERE。
参加条件は平等に基づいていない(<>、LESS THAN、GREATER THAN)。
条件はOR一緒に参加。
条件に参加少なすぎるがあります。
参照されるテーブルは、任意の結合条件で指定されていません。
表の別名が正しく使用されています。
オプティマイザは、それが他の参加のタイプよりも安価であることを決定します。


行をソートしません。
AMPのメモリサイズを超えた場合は、1つのテーブルから再読み込みブロックがあります。
これは、すべての適格表2行にすべての予選表1の列を比較します。
WHERE条件に一致するものは、スプールに保存されます。
合計=#修飾行表1 *#修飾行表2比較:ので、それは参加プロダクトと呼ばれる
AMPメモリが一度に保持できるよりも多くの行があると、内部に比較は非常に高価になるが。
彼らは一般的に意図しないであり、しばしば無意味な出力を与えます。
:製品のプロセスに参加し
、より小さなテーブルを特定し、すべてのAMPにスプールにそれを複製します- 。
-大きな表のためのすべての行に小規模表のための各スプール行に参加。

11.Cartesian製品
これが制約されていない製品が参加しています。
表1の各行は、表2のすべての行に結合されています。
デカルト製品は、重要なシステムリソースを消費参加します。
デカルト製品はほとんど実用的なビジネスユースを持っていない参加します。
:デカルト製品は、ときに発生頻繁に参加
Aは条件が欠落している参加または少なすぎるがある条件に参加します- 。
-参加条件は平等に基づいていません。
-いずれかの結合条件でA参照されるテーブルは名前が付いていません。
-表の別名が誤って使用されています。
それは、ユーザのスプールの制限を超えた場合、トランザクションが中止されます。

12.Hash参加
ハッシュ結合:係る行に小さなハッシュテーブルが順次格納され、その後再分散又はAMPと処理データの各ラインの大きなテーブルの全てに複製、必要大きなハッシュテーブルは、ストレージの順序に従って存在しない
次のDBSを使用ヌルハッシュがオープン列に参加し、ハッシュのためのスペースを割り当てるには参加:
HTMemAlloc
SkewAllowanceの
最適化技術は、その後、大規模なスプールテーブルが並べ替えに参加していないキャッシュに効果的に小さなテーブルとすることができます。
ハッシュ・プロセスに参加行:
小さい識別します表。
再配布や重複AMPの間のメモリが小さい表。
ソートキャッシュメモリには、ハッシュシーケンス列の行に参加。
ホールド行のメモリで。
利用ザ・マッチ用のバイナリ検索のメモリに大きな表のハッシュ列行に参加します。
このクラスは、大規模なソートテーブルを避けるために参加、時には大きなテーブルは、コピーや再配布しました。

13.Exclusionジョイン
戻り一致するレコードを。
おそらくマージ結合または製品。
原因とNOT演算の単語をEXCEPT
列に3つの論理値を使用して、空であってもよい。
テーブルの構造はしていない動作することが可能である場合コラムプラスNOT NULL属性
説明:COLNAMEフィールドに結合条件でくださいNULLでない場合は追加して空にすることができます。

除外は(NOT IN)の3つのルールのジョイン:
いずれかTrue -フィルター
どれ不明-フィルタから
すべての偽-予約。


14(マルチテーブル関連)、N-表ジョイン
オプティマイザは、2つだけのテーブルを処理することができる。
参加結果を第3表に参加する。ん
テーブルに関連付けられているすべてのマルチテーブルが接続された二つに分解する
オプティマイザ自動的結合順序を最善を決定しようとしている。
フィールドには、オプティマイザのメイクの選択肢を助けることができる関連の統計を収集します。

選択する …。Table_A、Table_B、Table_C、TABLE_D FROM。;


PPI 15.Joinと考慮事項
PPIは、既存のアプリケーションTeardata木の拡張に基づいているので、すべてのアルゴリズムは、PPIがサポートされている参加
NPPIでは、PPIの時間と比較して、クエリの制約た場合、多数のパーティションは、行を排除していませんハッシュマージは、性能が比較的悪くなることがありましょう。

理由:
NPPIと比較すると、行ハッシュマージアルゴリズムPPI参加は複雑であり、(有効なデータ・ブロックの数と同じ数を仮定して)より多くのリソースを必要とします。
行はパーティションではなく、/注文ハッシュで、ハッシュないようにしているので、オペレーティング。

对两个PPI不同的表做关联、对一个PPI表和一个NPPI表做关联、有以下三种方法:
1つの選択肢は、非PPIスプールファイルにPPIテーブル(または両方PPI・テーブル)をスプールする
準備伝統的なマージのために参加します。
第二の選択肢(常に利用可能ではない)は、非PPIテーブルをスプールすることである(または2つのPPIの
製造の残りのテーブルと同一パーティションと、テーブル)PPIスプールファイルへの
参加のrowKeyベースのマージのため。
第三のアプローチは、いずれか一方をスプールすることなく、表の結合をスライディングウィンドウを使用することです。
オプティマイザは、すべての合理的な戦略は、に参加を検討し、最良の推定性能を有するものを選択します。

:NPPI PPIと等価結合ない
ケースA)を、以下のパーティション:
テラデータブロックNPPI保持テーブル、各パーティションPPI 1のデータテーブル、性能を改善するために参加
ないパーティションが除去されていない場合でも、パフォーマンステーブルへNPPI接続テーブルむしろNPPI(最小のパーティションを想定)
-ディスクI / O( -複数のデータ線に対応するハッシュ値を除外珍しいケース)同じ数の
高いメモリ要件を-
- CPUの使用を少し
-結合された場合制限をゾーニング、クエリの効率がはるかに高くなります。

2)、状況はよりパーティションで
メモリーに多くのブロックPPIテーブルとして、テラ保持ブロックNPPIテーブル、スクロールウィンドウの技術を使用して、最適な結合効率でき
、このような接続の効率はNPPIに参加するテーブルに一般NPPIであります制限をゾーニングない限り低いが大幅に作業負荷を低減することができる
。 -ディスクI / Oのより多くを(NPPIテーブルデータブロックは、複数のスキャンを繰り返さなければならない)
(P / K:NPPI PPI表は、I / Oがある数に参加します* D1)+ D2
NPPIとNPPIテーブルは、I / Oの数を接合である:D1 + D2
(説明:D1 =データブロック番号NPPIテーブル
データブロックの数D2 = PPI表
P =参加は、パーティションの数参加
K = PPIテーブル)メモリパーティションの数に加えてもよい
-より多くのメモリを必要とする
-より多くのCPUリソースを必要と
制限区画の大部分を除去するために可能な限りクエリで、より良好な性能を得るために
-のP / Kの値できるだけ小さくなるように、できるだけメモリにデータに付加された番号
3)、スライディングウィンドウ
最も直接的な接続方法NPPI PPIテーブルのは、に関連付け全体を変更するPPIテーブル・バイ・パーティション相関的とNPPIテーブル、すなわち、あります関連するサブ一連。
このような操作の効率は、低くてもよい場合は特に、特に大きなテーブルNPPI


処理概要16.Join
の製品コンセプト参加とマージ・ジョイン
、左テーブルの右に関連する各レコード(すなわち、のがデカルト積前記)テーブルを関連付けるすべてのレコード、その後に従ってため、関連製品であるプラクティス参加1)製品関連分野、関連する基準を満たすレコードが出て画面。この方法の欠点は、この関連の支払いにCPUとIOシステムのためのコストが(理由はデカルト積の)大きいことであるが、マージがTeradataのように、左右のテーブルは、ソートする必要がないという利点を参加反対側にそれがありますレコードのみの小さな数とバイトフィールドの数権利テーブル誘導された生成物におけるオプティマイザ(フィールドの数を介して測定されるような一般的な経験則は、レコードの数が25未満以下では、バイトではなく)、または関連する状態は、関連付けられた又は非相関式を含みます製品参加選択時とOR条件、
マージ結合を合わせたアプローチと関連している)2を表右、それぞれ左及びソートし、次いで関連する条件に基づいてマッチングを関連付けることです。各テーブルのレコードを大幅にCPUとIOのコストを低減すること、一つまたは右テーブルに関連付けられているいくつかのレコードを有する場合に利点が残されるが、欠点が非常に大きいため、レコード数が少ない場合の右側のテーブルでありますテーブルは、廃棄物データベースのリソースよりも左にソートされます。全体として、マージは、より高い効率との相関アルゴリズムを結合のでレコードだけ右テーブルの小さな数とフィールド派生製品状況バイトの数を使用して製品にオプティマイザが使用するマージ結合通常の状況下でテラ加わります

再配布または完全コピーが
テラ並列データベースが分散型データベースであるため、レコードがどのように関連アルゴリズム(即ち、使用に加えて、関連動作を実現するために、特定のフィールドの値に応じてAMPの複数にわたって分散ハッシュを介して計算されますどの製品が参加またはマージ)が...問題だけでなく、複数の問題AMPに配布左右のテーブルを結合する、または。分布表は、通常の状況下ではPI値をしたが、リンクされていないときです。
1)小の権利テーブルレコード番号の場合には、テラ・オプティマイザは、コピーした後、データベーステーブル50 AMP、10件のデータベースレコードがある場合と言うことであるAMPの別のコピー、右テーブルの各々を記録しますそこに500枚のレコードは、この全体のアプローチは、コピーすることです。このようなアプローチは、同じ製品を想像することができ、より右側のテーブル内のレコード数の場合、より多くのシステムリソースの浪費とIO SPOOLスペースとして、参加するが、それはまた良いですが、利点は、再分配を避けることができるということである下記(表を左コンセプト)。
2)権利は、パーティションテーブルのエクスポートテーブルは、テラ・オプティマイザは、メインインデックスに関連付けられている場合を除いて、ある場合には、配布することができない常に正しいテーブルどの完全なコピー方法。
3)大量のレコード権利テーブル場合、パーティションはエクスポートテーブルないが場合、テラ約オプティマイザ意志テーブルが基づくハッシュ値関連付けられたフィールドを再計算し、すなわち、別のフィールドに関連付けられているが、テーブルに関連するマスターインデックスPIスプール空間となる。この方法は、再配分と呼ばれ、ハッシュ値に応じたAMPの配布を行います。利点は、システム及びSPOOL IO(前部及び不変リア重量配分のテーブルレコード番号)の空間リソースの使用を低減することであるが、欠点はせながら、ノード間の負荷が増加し、データの移動とBYNETその結果、再分配によるものですAMPデータの偏在。

マルチ関連SQL
左およびテーブル(プライマリ・テーブル)に対しては、常に右テーブルの複数(テーブル寸法、アソシエーションテーブル)、テラ相関と関連している、すなわち、取得新しい左右テーブルを生成するテーブルに関連付けられた左テーブル1、及び右の表が完成関連付けられるまでのは、など左右のテーブル2相関新しい左の表で新しいテーブルを使用し、してみましょう。この方法の効率は非常に問題があります。左テーブルと右テーブルのマイナーなケースは、それぞれ1つの関連付けを行うと、ハッシュ化または再配布フルコピーするだけでなく、テーブルのフルスキャン、資源の大きな浪費を行うことをしなければなりません。

最適化に関するいくつかの提案
は極めて小さく、右の表のレコード番号の場合は左表1)は、再配布して、左側のデータテーブルの不均一な分布を避けるために、パーティションテーブルを導出するの完全なコピーを使用して最適化された必須のTeradataを提案しました
2)右に大きなテーブルのためのそれは、パーティションなしのお勧め一時テーブルの輸出パーティションテーブルの場合、Teradataのオプティマイザの使用を避けるために、左と一時テーブルを関連付けることによって、一時的なテーブルにテーブルをエクスポートするための最初のパーティションでありますフルコピーモード
SQLよりもマルチに関連する3)、あなたは(デカルト積によって制御テーブルの多数の点に注意してください。大きなテーブルを形成するために、まず小さな右のテーブルの複数の一時テーブルを作成することができ、効果は一般千万を良好に制御され)、その後、右の関連テーブルに関連付ける良いにテーブルを残しました。

テーブル・レベルのためのテラは、外側左SQL最適化に参加する
一般的に:外側の左テーブルとテーブル間の結合を4つの形式がある:製品はハッシュ、マージ・ジョイン、ジョインジョインとネストが参加し、より一般的には製品が参加し、マージされ参加。

おすすめ

転載: www.cnblogs.com/cmbk/p/12073481.html