Categories: 未分類

ネストされたループをブロックする

Block_nested_loop
ブロックネストされたループ(BNLは)あるアルゴリズムするために使用されるジョインに2つの関係をリレーショナルデータベース。
このアルゴリズムは、2つの関係を結合するために使用される単純なネストされたループ結合のバリエーションです。 {R}
と {S}(それぞれ「外部」および「内部」結合オペランド)。仮定する
| | {| R | 。従来のネストされたループ結合では、 {S}
のタプルごとに1回スキャンされます {R}
。予選が多い場合 {R}
タプル、特に結合キーに適用可能なインデックスがない場合 {S}
、この操作は非常に費用がかかります。
ブロックネストループ結合アルゴリズムは、スキャンするだけで単純なネストループ結合を改善します {S}
すべてのために一度グループの {R}
タプル。たとえば、ブロックネストループ結合の1つのバリアントは、次のページ全体を読み取ります。 {R}
タプルをメモリに入れ、ハッシュテーブルにロードします。次にスキャンします {S}
、およびハッシュテーブルをプローブして検索します {S}
の現在のページのタプルのいずれかに一致するタプル {R}
。これにより、のスキャン数が減少します {S}
それが必要です。
このアルゴリズムのより積極的な変形は、 {R}
使用可能なメモリに収まるように、そのようなタプルをすべてハッシュテーブルにロードしてから、繰り返しスキャンします。 {S}
。これにより、のスキャン数がさらに削減されます。 {S}
それが必要です。実際、このアルゴリズムは本質的に、古典的なハッシュ結合アルゴリズムの特殊なケースです。
ブロックネストループはで実行されます O ((NS / )。
{O(P_ {r} P_ {s} / M)}
I / Oの場所 {M}
内部メモリの使用可能なページ数であり、 {P_ {r}}
と {P_ {s}}
のサイズです {R}
と {S}
それぞれページで。ブロックネストループはで実行されることに注意してください O (( NS+ NS)。
{O(P_ {r} + P_ {s})}
I / O if {R}
使用可能な内部メモリに収まります。

参考文献
^ 「8.2.1.14ブロックネストループおよびバッチキーアクセス結合」。MySQL5.6リファレンスマニュアル。オラクル株式会社。
^ 「ネストされたループ結合をブロックする」。MariaDB。MariaDB CorporationAb 。

admin

Share
Published by
admin

Recent Posts

Bqosta

Bqosta Bqosta(ア…

4週間 ago

Bqerzla

Bqerzla Bqerzla…

4週間 ago

Bqarqacha

Bqarqacha Bqarq…

4週間 ago

Bqaatouta

Bqaatouta  「Bqa…

4週間 ago

Bqaa Safrine

Bqaa_Safrine Bq…

4週間 ago

ベルギー郵政

Bpost  「Bpost」 …

4週間 ago