Blocați îmbinarea buclei imbricate

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Îmbinarea în buclă imbricată în bloc (BNL) este un algoritm , o variantă a îmbinării simple în buclă imbricată , care tamponează rândurile citite în bucla exterioară pentru a reduce de câte ori trebuie citită tabela din bucla interioară. De exemplu, dacă 10 rânduri sunt stocate într-un buffer și trecute la bucla interioară, fiecare rând din bucla interioară poate fi comparat cu toate cele 10 din buffer, reducând numărul de accesări la masa interioară cu un ordin de mărime.

Diferențe față de îmbinarea cu buclă imbricată

Presupunând că avem două relații R și S, R externe și S interne, cu | R | <| S | unde | R | este numărul de tupluri implicate în R și | S | cea a tuplurilor implicate în S, în algoritmul NLJ S este scanată de fiecare dată pentru fiecare tuplu de R. Această operație este foarte costisitoare. Cu algoritmul BNL, îmbunătățirea se obține prin scanarea S o dată pentru fiecare grup de tupluri ale lui R. O versiune a acestui algoritm încarcă tuplele lui R în memorie, într-un tabel hash, apoi trece la S și examinează tabelul hash pentru a găsi tuplele de S care se potrivesc cu orice tupl de R. Acest lucru reduce numărul de scanări de S necesare. În cazul utilizării tabelului hash, acest algoritm poate fi văzut ca o variantă a algoritmului hash join .

Bibliografie