![Page 1: 1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets](https://reader036.vdocuments.site/reader036/viewer/2022081602/55204d7549795902118c9984/html5/thumbnails/1.jpg)
1
J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h
– angewendet auf R.A und S.B – auf (dieselben) Hash-Buckets abgebildet
Hash-Buckets sind i.Allg. auf Hintergrundspeicher (abhängig von der Größe der Relationen)
Zu verbindende Tupel befinden sich dann im selben Bucket
Wird (nach praktischen Tests) nur vom Merge-Join „geschlagen“, wenn die Relationen schon vorsortiert sind
Implementierung der Verbindung: Strategien
![Page 2: 1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets](https://reader036.vdocuments.site/reader036/viewer/2022081602/55204d7549795902118c9984/html5/thumbnails/2.jpg)
2
Implementierung der Verbindung: Strategien
A r1 5 r2 7 r3 8 r4 5
R SB 5 s1
7 s2
10 s3
5 s4
r1 5
s15
r4 5
s45
10 s3
r2 7
s27
r3 8
h(A) h(B )
Bucket 3Bucket 2Bucket 1
![Page 3: 1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets](https://reader036.vdocuments.site/reader036/viewer/2022081602/55204d7549795902118c9984/html5/thumbnails/3.jpg)
3
„Normaler“ blockierender Hash-Join mit Überlauf: Partitionieren
Send
R
Send
S
receive
P1
P2
P3
Partitionh(R.A)
P1
P2
P3
Partitionh(S.A)
receive
![Page 4: 1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets](https://reader036.vdocuments.site/reader036/viewer/2022081602/55204d7549795902118c9984/html5/thumbnails/4.jpg)
4
„Normaler“ blockierender Hash-Join mit Überlauf: Build/Probe
Send
R
Send
S
P1
P2
P3
Partitionh(R.A)
P1
P2
P3
build
Hashtabelle
probe
Lade Blöcke von P1
![Page 5: 1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets](https://reader036.vdocuments.site/reader036/viewer/2022081602/55204d7549795902118c9984/html5/thumbnails/5.jpg)
5
![Page 6: 1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets](https://reader036.vdocuments.site/reader036/viewer/2022081602/55204d7549795902118c9984/html5/thumbnails/6.jpg)
6
![Page 7: 1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets](https://reader036.vdocuments.site/reader036/viewer/2022081602/55204d7549795902118c9984/html5/thumbnails/7.jpg)
7
![Page 8: 1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets](https://reader036.vdocuments.site/reader036/viewer/2022081602/55204d7549795902118c9984/html5/thumbnails/8.jpg)
8
![Page 9: 1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets](https://reader036.vdocuments.site/reader036/viewer/2022081602/55204d7549795902118c9984/html5/thumbnails/9.jpg)
9
Mengendurchschnitt (~Join) mit einem Hash/Partitionierungs-Algorithmus
R23
445
769013174288
S44179746
272
133
R S
• Nested Loop: O(N2)
• Sortieren: O(N log N)
• Partitionieren und Hashing
![Page 10: 1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets](https://reader036.vdocuments.site/reader036/viewer/2022081602/55204d7549795902118c9984/html5/thumbnails/10.jpg)
10
Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus
R23
445
769013174288
S44179746
272
133
R SR3
90427613882
445
17
Mod
3
![Page 11: 1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets](https://reader036.vdocuments.site/reader036/viewer/2022081602/55204d7549795902118c9984/html5/thumbnails/11.jpg)
11
Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus
R23
445
769013174288
S44179746
272
133
R SR3
90427613882
445
17
S6
273
974
1344172
Mod
3
Mod
3
![Page 12: 1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets](https://reader036.vdocuments.site/reader036/viewer/2022081602/55204d7549795902118c9984/html5/thumbnails/12.jpg)
12
Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus
R23
445
769013174288
S44179746
272
133
R SR3
90427613882
445
17
S6
273
974
1344172
Mod
3
Mod
3
![Page 13: 1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets](https://reader036.vdocuments.site/reader036/viewer/2022081602/55204d7549795902118c9984/html5/thumbnails/13.jpg)
13
Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus
R SR3
90427613882
445
17
S6
273
974
1344172
6273
Mod 5
Build-Phase
Hashtabelle
![Page 14: 1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets](https://reader036.vdocuments.site/reader036/viewer/2022081602/55204d7549795902118c9984/html5/thumbnails/14.jpg)
14
Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus
R S = {3, }R3
90427613882
445
17
S6
273
974
1344172
6273
Mod 5
Probe-Phase
![Page 15: 1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets](https://reader036.vdocuments.site/reader036/viewer/2022081602/55204d7549795902118c9984/html5/thumbnails/15.jpg)
15
Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus
R S = {3, }R3
90427613882
445
17
S6
273
974
1344172
97134
Mod 5
Build-Phase2. Partition
![Page 16: 1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets](https://reader036.vdocuments.site/reader036/viewer/2022081602/55204d7549795902118c9984/html5/thumbnails/16.jpg)
16
Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus
R S = {3, }R3
90427613882
445
17
S6
273
974
1344172
97134
Mod 5
Probe-Phase2. Partition
![Page 17: 1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets](https://reader036.vdocuments.site/reader036/viewer/2022081602/55204d7549795902118c9984/html5/thumbnails/17.jpg)
17
Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus
R S = {3, 13 }R3
90427613882
445
17
S6
273
974
1344172
97134
Mod 5
Probe-Phase2. Partition
![Page 18: 1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets](https://reader036.vdocuments.site/reader036/viewer/2022081602/55204d7549795902118c9984/html5/thumbnails/18.jpg)
18
Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus
R23
445
769013174288
S44179746
272
133
R3
90427613882
445
17
S6
273
974
1344172
Mod
3
Mod
3
R S = {3, 13, 2, 44, 17 }
![Page 19: 1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets](https://reader036.vdocuments.site/reader036/viewer/2022081602/55204d7549795902118c9984/html5/thumbnails/19.jpg)
19
Vergleich: Sort/Merge-Join versus Hash-Join
R run run S
merge m
erge
R partition partition S
![Page 20: 1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets](https://reader036.vdocuments.site/reader036/viewer/2022081602/55204d7549795902118c9984/html5/thumbnails/20.jpg)
Radix-Join: Erhöhung der Cache-Lokalität durch Partitionierung
![Page 21: 1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets](https://reader036.vdocuments.site/reader036/viewer/2022081602/55204d7549795902118c9984/html5/thumbnails/21.jpg)
Wiederholte Partitionierung
![Page 22: 1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets](https://reader036.vdocuments.site/reader036/viewer/2022081602/55204d7549795902118c9984/html5/thumbnails/22.jpg)
Technische Universität München
Range partitioning of private input
919
7
19
3211
17
2234
318
2026
21
17
23
31
2026
chun
k of
wor
ker
W1
chun
k of
wor
ker
W2
histogram of worker W1
7 = 00111 <16≥16
17 = 10001
histogram of worker W2
<16≥16
43
34
prefix sum of
worker W100
prefix sum of
worker W243
W1
W2
W1
W2
1
19
19=10011
22
5
2=00010
2
![Page 23: 1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets](https://reader036.vdocuments.site/reader036/viewer/2022081602/55204d7549795902118c9984/html5/thumbnails/23.jpg)
Technische Universität München
Range partitioning of private input
919
73
211
17
2234
318
2026
chun
k of
wor
ker
W1
chun
k of
wor
ker
W2
histogram of worker W1
7 = 00111 <16
17 = 10001
histogram of worker W2
<16
43
34
prefix sum of
worker W100
prefix sum of
worker W243
73
9
1
4
17
31
2
8
21
23
2026
W1
W2
W1
W2
1
19
19=10011
23
≥16
≥165
2=00010
![Page 24: 1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets](https://reader036.vdocuments.site/reader036/viewer/2022081602/55204d7549795902118c9984/html5/thumbnails/24.jpg)
Technische Universität München
Real C hacker at work …
![Page 25: 1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets](https://reader036.vdocuments.site/reader036/viewer/2022081602/55204d7549795902118c9984/html5/thumbnails/25.jpg)
Technische Universität München
Paralleler Hash-Join ohne Partitionierung
25