2011-08-16 6 views
2

左の深い結合ツリーは、並行性に関する限り右の深いツリーよりもあまり好ましくありません。この参加ツリーで左のデータベースクエリオプティマイザと並列処理の深い結合ツリー

  X 
     /\ 
     / \ 
     X  r6 
    /\ 
    / \ 
    X r5 
/ 
/ \ 
r0  r1 

を次のように与えられる 理由は文献によれば、ハッシュは

1. HashTable on r0 and then probe using r1 
2. HashTable on r0 X r1 then hash probe using r5 
3. HashTable on r0 X r1 X r5 and hash probe using r6 

、以下のように実行されるジョインしかし、これは参加行うための簡単な並列方法は

あります
1. HashTable on r1, r5, r6 independently 
2. HashProbe r1 using r0, use result to hash probe r5 and then r6 
    This can be nicely pipelined. 

なぜこのようにすることができないのですか? 明白なものがありませんか?

参考: http://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=1BBIHNuObz9vsFxaCtpKUeDg-Xif2kqRVnb0Mr_3IUah-RyTceFCANTq8drXW&hl=en_US(後藤ページ18)

また、私は本の中で同じようなことを読む:http://www.amazon.com/Principles-Database-Processing-Applications-Management/dp/1558604340

答えて

0

私はその仮定を持って、私はこれを読んでいるすべての場所、私はそれがどのように動作するかだと思いますHashBuild操作は常に左の関係で行われます。 これは、右ディープ・ジョイン・ツリーが左ディープ・ジョイン・ツリーよりも優れた並列実行計画を持つ理由を説明しています。