Θέματα Hash Join

55
1 Θέματα Hash Join Κώστας Λίλλης Ελένη Γεώργα

description

Θέματα Hash Join. Κώστας Λίλλης Ελένη Γεώργα. Θεματολόγιο. Binary Hash Joins Binary Hash Joins with Aggregation Multi-Way Hash Joins Implementation Details False Drop Analysis XJoin. Θεματολόγιο. Binary Hash Joins Binary Hash Joins with Aggregation Multi-Way Hash Joins - PowerPoint PPT Presentation

Transcript of Θέματα Hash Join

Page 1: Θέματα  Hash Join

1

Θέματα Hash Join

Κώστας Λίλλης

Ελένη Γεώργα

Page 2: Θέματα  Hash Join

2

Θεματολόγιο

Binary Hash Joins Binary Hash Joins with Aggregation Multi-Way Hash Joins Implementation Details False Drop Analysis XJoin

Page 3: Θέματα  Hash Join

3

Θεματολόγιο

Binary Hash Joins Binary Hash Joins with Aggregation Multi-Way Hash Joins Implementation Details False Drop Analysis XJoin

Page 4: Θέματα  Hash Join

4

Binary Hash Joins

Η μία σχέση (build input) χωράει στη μνήμη Διαβάζεται η build input και δημιουργείται ο πίνακας

κατακερματισμού με βάση το πεδίο της συνένωσης Διαβάζονται μία-μία οι εγγραφές της άλλης σχέσης

(probe input) και παράγεται το αποτέλεσμα της συνένωσης

Το build input δεν χωράει στη μνήμη Διαβάζονται οι δύο σχέσεις και διαμερίζονται

αναδρομικά με βάση μια συνάρτηση κατακερματισμού στο πεδίο της συνένωσης σε διαμερίσεις που χωράνε στη μνήμη

Πραγματοποιείται Binary Hash Join μεταξύ των αντίστοιχων διαμερίσεων των δύο σχέσεων

Page 5: Θέματα  Hash Join

5

Διαμέριση (Partitioning)

0

1

2

……

……

n-3

n-2

n-1

R

X …

4 …

21 …

6 …

9 …

18 …

27 …

S

… X

… 27… 9… 18… 4… 6… 18

21 …27 …

4 …6 …9 …18 …

Hash Table

.

.

.

.

.

.

.

.

.

.

.

.

21 …27 …

4 …6 …9 …18 …

.

.

.

.

.

.

Partitions of R

27 …

9 …6 …4 …18 …18 …

.

.

.

.

.

.

Partitions of S

R X S

Page 6: Θέματα  Hash Join

6

Binary Hash Joins

Η πρώτη περίπτωση ονομάζεται in-memory hash join

Η δεύτερη περίπτωση Όταν δεν χρειάζονται πολλαπλά επίπεδα διαμέρισης

ονομάζεται Grace hash join Όταν χρειάζονται πολλαπλά επίπεδα διαμέρισης

ονομάζεται recursive hash join Συνδυασμός των δύο περιπτώσεων ονομάζεται

hybrid hash join Κάποια buckets (που χωράνε στη μνήμη) γίνονται

build και probe στη μνήμη, ενώ οι εγγραφές που ανήκουν στα υπόλοιπα buckets (που δεν χωράνε στη μνήμη) τοποθετούνται (spill) σε διαμερίσεις στο δίσκο

Οι spilled διαμερίσεις συνενώνονται με Grace ή recursive hash join

Page 7: Θέματα  Hash Join

7

Θεματολόγιο

Binary Hash Joins Binary Hash Joins with Aggregation Multi-Way Hash Joins Implementation Details False Drop Analysis XJoin

Page 8: Θέματα  Hash Join

8

Binary Hash Joins with Grouping/Aggregation Ερωτήσεις που περιέχουν ένα join και ένα group by Παράδειγμα ερώτησης: συνολική τιμή όλων των

παραγγελιών ομαδοποιημένες με βάση την πόλη.

select c.City, sum(o.Value)

from Customer c, Order o

where c.C# = o.C#

group by c.City;

Customer(C#, City)

Order(O#, C#, Value)

Page 9: Θέματα  Hash Join

9

Traditional Execution Plan

Βήματα εκτέλεσης Διαμερίζονται οι σχέσεις Customer

και Order με βάση το πεδίο της συνένωσης C#

Πραγματοποιείται η συνένωση των αντίστοιχων διαμερίσεων (partition) και προκύπτει το ενδιάμεσο αποτέλεσμα

Αν το ενδιάμεσο αποτέλεσμα δεν χωράει στη μνήμη διαμερίζεται με βάση το πεδίο City

Πραγματοποιείται η ομαδοποίηση και η συνάθροιση σε κάθε διαμέριση και παράγεται το τελικό αποτέλεσμα

Agg

OrderCustomer

Ptn on C#Ptn on C#

Ptn on City

C#

City

select c.City, sum(o.Value)

from Customer c, Order o

where c.C# = o.C#

group by c.City;

Page 10: Θέματα  Hash Join

10

Generalized Hash Teams

Βήματα εκτέλεσης Διαμερίζεται η σχέση Customer με

βάση το πεδίο City και ταυτόχρονα δημιουργείται ένα bitmap για κάθε διαμέριση

Με βάση τα bitmaps πραγματοποιείται η έμμεση διαμέριση της σχέσης Order (ως προς το City)

Πραγματοποιείται η συνένωση των αντίστοιχων διαμερίσεων (partition) και προκύπτει το ενδιάμεσο αποτέλεσμα

Πραγματοποιείται η ομαδοποίηση και η συνάθροιση σε κάθε διαμέριση και παράγεται το τελικό αποτέλεσμα

Bit-maps(BM)

OrderCustomer

Ptn on City Ptn on BM

Agg

C#

City

select c.City, sum(o.Value)

from Customer c, Order o

where c.C# = o.C#

group by c.City;

Page 11: Θέματα  Hash Join

11

Generalized Hash Teams

Customer

C# City

5 PA

13 M

3 NYC

9 B

17 LA

10 HH

4 NYC

7 LA

6 B

25 M

23 PA

42 HH

Order

O#

C#

Value

23 4 13

27 9 54

7 25 10

59 10 13

10 3 66

22 17 42

43 5 33

6 9 45

19 42 75

40 10 1

28 7 9

33 6 51

42 5 34

24 13 0

3 7 12

B1

0

0

0

1

0

1

0

0

0

0

B2

1

0

1

0

0

0

1

0

0

1

B3

0

0

0

1

1

0

0

1

0

0

1+(4 mod 10) = 5

1+(9 m

od 10) =

10

1+(25 mod 10)

= 6

1+(4

mod

10)

= 5

1+(3 mod 10)

= 4

Page 12: Θέματα  Hash Join

12

Generalized Hash Teams

Customer1

C# City

5 PA

13 M

25 M

23 PAOrder1

O# C# Value

7 25 10

10 3 66

43 5 33

42 5 34

24 13 0

AggrCity

City

Value

PA 33

M 10

C#AggrCity

Page 13: Θέματα  Hash Join

13

Generalized Hash Teams

Customer2

C# City

9 B

10 HH

6 B

42 HHOrder2

O# C# Value

27 9 54

59 10 13

6 9 45

19 42 75

40 10 1

33 6 51

AggrCity

City

Value

B 150

HH 89

C#AggrCity

Page 14: Θέματα  Hash Join

14

Generalized Hash Teams

Customer3

C# City

3 NYC

17 LA

4 NYC

7 LAOrder3

O# C# Value

23 4 13

10 3 66

22 17 42

28 7 9

24 13 0

3 7 12

AggrCity

City Value

NYC

79

LA 63

C#AggrCity

Page 15: Θέματα  Hash Join

15

Generalized Hash Teams – False Drops Η τοποθέτηση μιας πλειάδας της σχέσης η

οποία διαμερίζεται με βάση το bitmap, σε κάποια / ες επιπλέον διαμερίσεις ονομάζεται false drop

Τα false drop δεν επηρεάζουν τη σωστή λειτουργία του αλγορίθμου αλλά έχουν αρνητικό αντίκτυπο στην απόδοση (Ι/Ο)

Ο αριθμός των false drops εξαρτάται από το μήκος του bitmap και τη συνάρτηση κατακερματισμού

Page 16: Θέματα  Hash Join

16

Generalized Hash Teams vs. Traditional Execution Plan Μειώνει το κόστος I/O που προκύπτει από την

διαμέριση του ενδιάμεσου αποτελέσματος όταν αυτό δεν χωράει στην Κύρια Μνήμη

Απαιτούν επιπρόσθετο χώρο στη μνήμη και CPU time για τα bitmaps

Πιθανόν να αυξηθεί το κόστος I/O όταν υπάρχουν false drops

Καταλληλότερα όταν υπάρχει συναρτησιακή εξάρτηση του πεδίου συνάθροισης από το πεδίο συνένωσης Διαφορετικά το κόστος I/O αυξάνεται λόγω της

τοποθέτησης πλειάδων σε πολλαπλές διαμερίσεις (partition overlapping)

Page 17: Θέματα  Hash Join

17

Partition Nested Loops

Βήματα εκτέλεσης1. Η σχέση Customer διαμερίζεται με βάση το πεδίο City2. Διαβάζεται η σχέση Order, προβάλλονται τα σχετικά πεδία,

εφαρμόζονται (αν υπάρχουν) τα predicates και η τροποποιημένη σχέση Order γράφεται στο δίσκο

3. Διαβάζεται η πρώτη διαμέριση της σχέσης Customer και δημιουργείται ένα hash table στη μνήμη με βάση το πεδίο C#. Διαβάζεται η τροποποιημένη σχέση Order (ανά block) και βρίσκονται οι πλειάδες της που αντιστοιχούν στης πλειάδες της διαμέρισης της σχέσης Customer. Ταυτόχρονα εκτελείται η συνάθροιση

4. Επαναλαμβάνεται το βήμα 3 για όλες τις υπόλοιπες διαμερίσεις της σχέσης Customer

Τα βήματα 2 και 3 για την πρώτη διαμέριση της σχέσης Customer μπορούν να εκτελεστούν ταυτόχρονα ώστε μειωθεί το κόστος I/O

Αν δεν κερδίζουμε κάτι από το βήμα 2 αυτό μπορεί να παραλειφθεί

select c.City, sum(o.Value)

from Customer c, Order o

where c.C# = o.C#

group by c.City;

Page 18: Θέματα  Hash Join

18

Partition Nested Loops vs. Generalized Hash Teams Υψηλό κόστος αν η σχέση Customer

είναι μεγάλη (που συνεπάγεται περισσότερες διαμερίσεις άρα και περισσότερες αναγνώσεις της σχέσης Order)

Καλύτερη απόδοση αν αναμένεται να υπάρχουν πολλά false drops

Χρειάζονται λιγότερη μνήμη στη φάση της διαμέρισης (δεν υπάρχουν bitmaps)

Page 19: Θέματα  Hash Join

19

Θεματολόγιο

Binary Hash Joins Binary Hash Joins with Aggregation Multi-Way Hash Joins Implementation Details False Drop Analysis XJoin

Page 20: Θέματα  Hash Join

20

Traditional Multi-Way Hash Join

R AA S T

R

S

A

A

T

A

A

Result

Βήματα εκτέλεσης Διαμερίζονται οι

σχέσεις R, S με βάση το πεδίο A

Συνενώνονται οι αντίστοιχες διαμερίσεις και δημιουργεί-ται το ενδιάμεσο αποτέλεσμα

Διαμερίζονται το ενδιάμεσο αποτέλεσμα και η σχέση Τ

Συνενώνονται οι αντίστοιχες διαμερίσεις και παράγεται το τελικό αποτέλεσμα

R.AR.A

S.AS.A

T.AT.A

Page 21: Θέματα  Hash Join

21

Multi-Way Hash Teams Join

Βήματα εκτέλεσης Διαμερίζονται σε

ένα πέρασμα οι σχέσεις R, S, T

Συνενώνονται οι αντίστοιχες διαμερίσεις (όπως φαίνεται στο σχήμα) και παράγεται το τελικό αποτέλεσμα.

R AA S T

R

S

A

A

T

Result

A

A

S.AS.A

T.AT.A

R.AR.A

Page 22: Θέματα  Hash Join

22

Multi-Way Hash Teams Join vs. Traditional Multi-Way Hash Join

Μείωση του κόστους I/O διότι διαμερίζονται μόνο οι σχέσεις που συνενώνονται και όχι τα ενδιάμεσα αποτελέσματα

Μπορεί να γίνει μόνο αν όλες οι συνενώσεις γίνονται με βάση το ίδιο πεδίο

Λύση Generalized Hash Team Join

Page 23: Θέματα  Hash Join

23

Multi-Way Generalized Hash Teams Join Βήματα εκτέλεσης

Διαμερίζεται η σχέση R με βάση το πεδίο Α

Διαμερίζεται η σχέση S με βάση το πεδίο Α και ταυτόχρονα δημιουργούνται τα bitmaps με βάση το B

Διαμερίζεται η σχέση T με βάση τα bitmaps.

Συνενώνονται οι αντίστοιχες διαμερίσεις (όπως φαίνεται στο σχήμα) και παράγεται το τελικό αποτέλεσμα.

R ΒA S T

R

S

A

A

T

Result

B

B

S.AS.A

BT.BBT.B

R.AR.A

Bitmapson

B(BT.B)

Page 24: Θέματα  Hash Join

24

Multi-Way Generalized Hash Teams Join with Grouping/Aggregation Παράδειγμα ερώτησης με διπλή

συνένωση, group by και aggregation Συνολικό κόστος όλων των παραγγελιών

ομαδοποιημένες με βάση την πόλη

select c.City, sum(l.Price)

from Customer c, Order o, Lineitem l

where c.C# = o.C# and l.O# = o.O#

group by c.City;

Customer(C#, City)

Order(O#, C#, Value)

Lineitem(l#, O#, Price)

Page 25: Θέματα  Hash Join

25

Multi-Way Generalized Hash Teams Join with Grouping/Aggregation Τρόπος εκτέλεσης της ερώτησης (Generalized Hash Team Join)

Διαμερίζεται η σχέση Customer με βάση το πεδίο City και ταυτόχρονα δημιουργούνται τα bitmaps με βάση το πεδίο C#

Διαμερίζεται η σχέση Order με βάση τα bitmaps που δημιούργησε η Customer και ταυτόχρονα δημιουργούνται τα bitmaps με βάση το πεδίο Ο#

Διαμερίζεται η σχέση Lineitem με βάση τα bitmaps που δημιούργησε η Order

Πραγματοποιείται η συνένωση των αντίστοιχων διαμερίσεων

select c.City, sum(l.Price)

from Customer c, Order o, Lineitem l

where c.C# = o.C# and l.O# = o.O#

group by c.City;

Page 26: Θέματα  Hash Join

26

Multi-Way Generalized Hash Teams Join with Grouping/Aggregation Στο παράδειγμά μας οι συνενώσεις

των διαμερίσεων μπορούν να εκτελεστούν με δύο διαφορετικές διατάξεις. Η απόφαση λαμβάνεται με βάση το κόστος εκτέλεσης

Page 27: Θέματα  Hash Join

27

Multi-Way Generalized Hash Teams Join with Grouping/Aggregation Το κόστος μνήμης αυξάνεται λόγω της

διατήρησης δύο συνόλων bitmaps (με βάση το C# και με βάση το O#) Το κόστος αυτό μπορεί να μειωθεί

διαγράφοντας τα bitmaps με βάση το C# μετά τη διαμέριση της σχέσης Order

Στο παράδειγμα υπάρχουν οι συναρτησιακές εξαρτήσεις Ο# C# City άρα το generalized hash team join είναι η κατάλληλη τεχνική (no overlapping partitions)

Page 28: Θέματα  Hash Join

28

Θεματολόγιο

Binary Hash Joins Binary Hash Joins with Aggregation Multi-Way Hash Joins Implementation Details False Drop Analysis XJoin

Page 29: Θέματα  Hash Join

29

Implementation Details – Fine-Tuning the Indirect Partitioning Phase

R

… A

… 4

… 5

… 6

… 3

1 0

0 0

1 0

1 1

0 0

1 0

0 1 0

0 0 0

0 1 0

0 1 1

0 0 0

1 0 0

1

0

0

1

0

0

0

0

0

0

1

0

0

1

0

1

1

Bitmaps

used

collision

B1B

2B

3

used = B1|B2| … | Bn

collision[k]=

1 : if exists ij{1,…,n} s.t. Bi[k]==Bj[k]==1

0 : otherwise

Page 30: Θέματα  Hash Join

30

Teaming up the Hash Join and the Aggregation – Build Phase

HT JoinC# Ptr

HT AggrCity Ptr

Customer1C# City5 PA

13 M25 M23 PA

5

PA

Hash-Area

City Value Hit

PA 0

M 0

M

13

25

23

Page 31: Θέματα  Hash Join

31

Teaming up the Hash Join and the Aggregation – Probe Phase

HT JoinC# Ptr

HT AggrCity Ptr

Customer1C# City5 PA

13 M25 M23 PA

5

PA

Hash-Area

City Value Hit

PA 0

M 0

M

13

25

23 Order1

C# Value25 103 665 335 3413 0

10 1

Page 32: Θέματα  Hash Join

32

Θεματολόγιο

Binary Hash Joins Binary Hash Joins with Aggregation Multi-Way Hash Joins Implementation Details False Drop Analysis XJoin

Page 33: Θέματα  Hash Join

33

F. D. Analysis

C O

C1

C3

C2

O1

O2

O3

..

1

..

0

..

..

0

..

1

..

..

1

..

0

..

B1

B3

B2

i

i

i

j

j

j

h( ) = h( ) = ih( ) = h( ) = j

select c.City, sum(o.Value)

from Customer c, Order o

where c.C# = o.C#

group by c.City;

Page 34: Θέματα  Hash Join

34

False Drop Analysis - Binary Hash Joins with Grouping/Aggregation n : αριθμός διαμερίσεων b : μήκος κάθε bitmap της σχέσης Customer c : πλήθος customers o : πλήθος orders

η πιθανότητα ένας customer να θέσει ένα bit των bitmap

η πιθανότητα ένας customer να μη θέσει το συγκεκριμένο bit των bitmap

η πιθανότητα μόνο ένας customer να έχει θέσει το συγκεκριμένο

bit των bitmap

η πιθανότητα παραπάνω από ένας customer να έχει θέσει το

συγκεκριμένο bit των bitmap πιθανότητα για ένα false drop

bn 1

bn 1

1

11

1

c

bn

11

11

c

bn

Page 35: Θέματα  Hash Join

35

False Drop Analysis - Binary Hash Joins with Grouping/Aggregation ο συνολικός αριθμός των false drops για

όλα τα orders σε όλες τις n -1 διαμερίσεις Υποθέσεις

Η συνάρτηση κατακερματισμού θέτει ομοιόμορφα τα bit σε κάθε bitmap (διαφορετικά ο αριθμός των false drops θα ήταν πολύ μεγάλος)

Οι customers κατανέμονται ομοιόμορφα στις διαμερίσεις (διαφορετικά ο αριθμός των false drops θα μειώνονταν)

Τύπος με μικρότερο υπολογιστικό κόστος

η πιθανότητα δύο customers να θέσουν το ίδιο bit

11

111c

bnno

bn

cno

1

1

bn

c

1

Page 36: Θέματα  Hash Join

36

False Drop Analysis – Multi-way Hash Joins Για τη διαμέριση της σχέσης Order ισχύει η προηγούμενη ανάλυση Κατά τη διαμέριση της σχέσης Lineitem

εμφανίζονται false drops με δύο τρόπους:1. Orders που ανήκουν σε διαφορετικές

διαμερίσεις θέτουν το ίδιο bit στους bitmaps.2. Τα false drops που εμφανίζονται κατά τη

διαμέριση της σχέσης Order προκαλούν false drops κατά τη διαμέριση της σχέσης Lineitem (false drop propagation)

select c.City, sum(l.Price)

from Customer c, Order o, Lineitem l

where c.C# = o.C# and l.O# = o.O#

group by c.City;

Page 37: Θέματα  Hash Join

37

F. D. Analysis

O L

O1

O2

O3

..

1

..

1

..

..

..

..

..

..

..

1

..

1

..

B1

B3

B2

i

i

j

j

h( ) = i

h( ) = j

select c.City, sum(l.Price)

from Customer c, Order o, Lineitem l

where c.C# = o.C# and l.O# = o.O#

group by c.City;

L1

L2

L3

Page 38: Θέματα  Hash Join

38

False Drop Analysis – Multi-way Hash Joins

l : πλήθος lineitems bο : μήκος κάθε bitmap της σχέσης Order fο : εκτίμηση του αριθμού των false drops κατά τη

διαμέριση της σχέσης Order ο αριθμός των false drop για την πρώτη

περίπτωση ο αριθμός των false drop για την δεύτερη

περίπτωση

obn

onl

1

1

select c.City, sum(l.Price)

from Customer c, Order o, Lineitem l

where c.C# = o.C# and l.O# = o.O#

group by c.City;

o

lfo

Page 39: Θέματα  Hash Join

39

Θεματολόγιο

Binary Hash Joins Binary Hash Joins with Aggregation Multi-Way Hash Joins Implementation Details False Drop Analysis XJoin

Page 40: Θέματα  Hash Join

40

Xjoin - Γενικά

Απευθύνεται σε ερωτήσεις πάνω σε ευρέως κατανεμημένες πηγές δεδομένων

Τα δεδομένα (σχέσεις - πλειάδες) προέρχονται από απομακρυσμένες πηγές

Αυτό επιφέρει καθυστέρηση στην παραγωγή αποτελέσματος λόγω Καθυστέρησης στην άφιξη των πρώτων

δεδομένων (πλειάδων) Αργού ρυθμού άφιξης δεδομένων Bursty άφιξης δεδομένων

Page 41: Θέματα  Hash Join

41

Xjoin - Γενικά

Επιτυγχάνει καλύτερη αλληλεπιδραστική απόδοση παράγοντας αποτελέσματα «αυξητικά»

Επιτρέπει την συνεχή εκτέλεση της ερώτησης ακόμα και όταν τα δεδομένα καθυστερούν από μία ή και της δύο πηγές. Πως; Επεξεργασία στο background δεδομένων

που έχουν ληφθεί προηγουμένως, ενώ δεν φθάνουν δεδομένα από τις πηγές

Page 42: Θέματα  Hash Join

42

Xjoin - Θέματα

Διαχείριση ροής δεδομένων μεταξύ μνήμης και σκληρού δίσκου

Έλεγχος της επεξεργασίας που πραγματοποιείται στο background

Παραγωγή όλων των αποτελεσμάτων (πλήρη απάντηση στην ερώτηση)

Απαλοιφή διπλότυπων από το αποτέλεσμα

Page 43: Θέματα  Hash Join

43

Xjoin - Λειτουργία

Κάθε είσοδος (σχέση) της ερώτησης διαμερίζεται σε έναν αριθμό από διαμερίσεις με βάση μια συνάρτηση κατακερματισμού

Κάθε διαμέριση PiA μίας σχέσης A αποτελείται από δύο κομμάτια Ένα κομμάτι που βρίσκεται στη μνήμη MPiA

Ένα κομμάτι που βρίσκεται στο δίσκο DPiA

PiA = MPiA DPiA και MPiA DPiA = Κάθε πλειάδα που φθάνει τοποθετείται στην

αντίστοιχη διαμέριση αν υπάρχει χώρος στη μνήμη διαφορετικά κάποια διαμέριση μεταφέρεται στο δίσκο

Page 44: Θέματα  Hash Join

44

D I S K Tuple B

hash(Tuple B) = n

SOURCE-B

Memory-resident partitions of source B

. . . . . .k1 n

flu

shDisk-resident

partitions of source B

. . . . . .

Disk-residentpartitions of source A

Memory-resident partitions of source A

. . . . . . . . . . . .1

SOURCE-A

M E

M O

R Y

. . .

n

1n1 k n

Tuple A

hash(Tuple A) = 1

Page 45: Θέματα  Hash Join

45

Xjoin - Λειτουργία

Το XJoin αποτελείται από τρία στάδια Το πρώτο στάδιο συνενώνει πλειάδες που βρίσκονται

στη μνήμη Μπλοκάρει όταν δεν φθάνουν δεδομένα από καμία πηγή Τερματίζει όταν έχει λάβει όλες τις πλειάδες από τις δύο

πηγές Το δεύτερο στάδιο συνενώνει πλειάδες της μίας

σχέσης που βρίσκονται στο δίσκο με πλειάδες της άλλης σχέσης που βρίσκονται στη μνήμη Ενεργοποιείται όταν μπλοκάρει το πρώτο στάδιο Σταματάει όταν επανενεργοποιείται το πρώτο στάδιο

Το τρίτο στάδιο παράγει αποτελέσματα τα οποία δεν παράχθηκαν από τα υπόλοιπα στάδια

Page 46: Θέματα  Hash Join

46

XJoin – Στάδιο 1

hash(record B) = j

Partitions of source B

. . . . . . . . .ii

M E

M O

R Y

j

Partitions of source A

j

SOURCE-B

Tuple B

SOURCE-A

Tuple Ahash(record A) = i

. . . . . . . . .

insertinsert probeprobe

Output

Page 47: Θέματα  Hash Join

47

XJoin – Στάδιο 2

Partitions of source BPartitions of source A

M E

M O

R Y

i. . . . . . .

ii

D I

S K

i

Output

. . . . . . .. . . . . . .. . . . . . .

Partitions of source BPartitions of source A

. . . . .. . . . .. . . . .. . . . .

DPiA MPiBprobe

Page 48: Θέματα  Hash Join

48

XJoin - Στάδιο 3

Το πρώτο στάδιο δεν συνενώνει πλειάδες που δεν βρίσκονται ταυτόχρονα στη μνήμη

Το δεύτερο στάδιο δεν συνενώνει δύο πλειάδες αν η μία δεν βρισκόταν στη μνήμη όταν η άλλη μεταφέρθηκε από το δίσκο στη μνήμη

Το τρίτο στάδιο συνενώνει όλες τις διαμερίσεις (που βρίσκονται στη μνήμη ή στο δίσκο) των δύο σχέσεων

Page 49: Θέματα  Hash Join

49

Απαλοιφή διπλοτύπων από το πρώτο στάδιο

Tuple X

Tuple X ATS DTS

Για κάθε πλειάδα συντηρούνται timestamps

ATS : ο χρόνος όταν η πλειάδα έφθασε από την πηγή

DTS : ο χρόνος όταν η πλειάδα μεταφέρθηκε στο δίσκο

Tuple X 99 235

Παράδειγμα

Page 50: Θέματα  Hash Join

50

Ανίχνευση πλειάδων που συνενώθηκαν στο πρώτο στάδιο

Tuple A 102 234

Tuple B1

178 198

Tuples joined in the first stage

DTSATS

Overlapping

Tuple A 102 234

Tuple B2

348 601

Tuples not joined in the first stage

DTSATS

Non-Overlapping

Page 51: Θέματα  Hash Join

51

Απαλοιφή διπλοτύπων από το δεύτερο στάδιο

Για κάθε διαμέριση διατηρείται μια συνδεδεμένη λίστα με στοιχεία της μορφής {DTSlast, ProbeTS} DTSlast : το DTS της τελευταίας πλειάδας

του κομματιού τις διαμέρισης που βρίσκεται στο δίσκο, το οποίο επεξεργαστικέ από το δεύτερο στάδιο

ProbeTS : ο χρόνος εκτέλεσης του δευτέρου σταδίου

Page 52: Θέματα  Hash Join

52

Ανίχνευση πλειάδων που συνενώθηκαν στο δεύτερο στάδιο

Tuple A

DTS

20 340 250 550 300 700100 200

ATS

ProbeTS

DTSlast

Tuple B

DTS

100 300 800 900500 600ATS

Overlap

History list for the corresponding partitions

Page 53: Θέματα  Hash Join

53

Έλεγχος εκτέλεσης του δευτέρου σταδίου Το κόστος από την εκτέλεση του δευτέρου σταδίου

κρύβεται μόνο όταν και οι δύο πηγές (είσοδοι) καθυστερούν

Προτείνεται μηχανισμός για τον περιορισμό του δεύτερου σταδίου στην επεξεργασία μόνο των διαμερίσεων που αναμένεται να παράγουν σημαντικό αποτέλεσμα (μεγάλο αριθμό πλειάδων)

Κατώφλι ενεργοποίησης ποσοστό του συνολικού αριθμού πλειάδων που αναμένεται να παραχθούν από μία διαμέριση ως αποτέλεσμα της συνένωσης της

Παράδειγμα Μια διαμέριση αναμένεται να παράγει 1000 πλειάδες Κατώφλι 0.01 επιτρέπει το δεύτερο στάδιο να εκτελεστεί αν

αναμένεται να παράγει 10 ή παραπάνω πλειάδες Δυναμική ρύθμιση του κατωφλίου: aggressive

conservative

Page 54: Θέματα  Hash Join

54

References

G. Graefe, R. Bunker, S. Cooper: Hash Joins and Hash Teams in Microsoft SQL Server. VLDB 1998. pp. 86-97

A. Kemper, D. Kossmann, C. Wiesner. Generalized hash teams for join and group-by. VLDB 1999. pp. 30-41

T. Urhan, M. J. Franklin. XJoin: A ReactivelyScheduled Pipelined Join Operator. IEEE Data Engineering Bulletin, 23(2):27--33, June 2000

Page 55: Θέματα  Hash Join

55

Ερωτήσεις