Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Vorlesung Datenbanksysteme vom 18.10.2004 Anfragebearbeitung Logische Optimierung Physische Optimierung.

Ähnliche Präsentationen


Präsentation zum Thema: "Vorlesung Datenbanksysteme vom 18.10.2004 Anfragebearbeitung Logische Optimierung Physische Optimierung."—  Präsentation transkript:

1 Vorlesung Datenbanksysteme vom 18.10.2004 Anfragebearbeitung Logische Optimierung Physische Optimierung

2 2 Architektur eines DBMS DML-CompilerDDL-Compiler Abfrageoptimierung Datenbankmanager Schemaverwaltung Dateiverwaltung LogdateienIndexeDatenbasisData Dictionary Mehrbenutzersynchronisation Fehlerbehandlung Interactive AbfrageAPI/PräcompilerVerwaltungswerkzeug

3 3 Pull-based Query Evaluation open next Return Ergebnis

4 4 Pipelining vs. Pipeline-Breaker RS... T

5 5 Pipeline-Breaker Unäre Operationen sort Duplikatelimination (unique,distinct) Aggregatoperationen (min,max,sum,...) Binäre Operationen Mengendifferenz Je nach Implementierung Join Union

6 6 Beispiele: Op6Employee A DNO = Dnumber Department Op7 Department A MgrSSN = SSN Employee Zu betrachten allgemein: Implementierungs-Varianten für R A A=B S JOIN - Implementierung

7 7

8 8 J1 nested (inner-outer) loop brute force-Algorithmus foreach r R foreach s S if s.B = r.A then Res := Res (r s) Nested Loop Join

9 9

10 10 Block-Nested Loop Join- Algorithmus m-k R k S kkkkk

11 11 J2 Zugriffsstruktur auf S Index Nested Loop Join in jedem Durchlauf von R werden nur die in S qualifizierenden Tupel gelesen dazu ist ein Index auf B erforderlich foreach r R foreach s S[B=r.A] Res := Res (r s) Index Nested Loop Join

12 12

13 13 J3 Sort-Merge Join erfordert zwei Sortierungen 1. R muss nach A und 2. S nach B sortiert sein sehr effizient falls A oder B Schlüsselattribut ist, wird jedes Tupel in R und S nur genau einmal gelesen (wenn Duplikate eliminiert werden) Sort-Merge-Join R S Ergebnis:

14 14

15 15 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R 2 3 44 5 76 90 13 17 42 88 S 44 17 97 4 6 27 2 13 3 R S Nested Loop: O(N 2 ) Sortieren: O(N log N) Partitionieren und Hashing

16 16 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R 2 3 44 5 76 90 13 17 42 88 S 44 17 97 4 6 27 2 13 3 R S R 3 90 42 76 13 88 2 44 5 17 Mod 3

17 17 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R 2 3 44 5 76 90 13 17 42 88 S 44 17 97 4 6 27 2 13 3 R S R 3 90 42 76 13 88 2 44 5 17 S 6 27 3 97 4 13 44 17 2 Mod 3

18 18 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R 2 3 44 5 76 90 13 17 42 88 S 44 17 97 4 6 27 2 13 3 R S R 3 90 42 76 13 88 2 44 5 17 S 6 27 3 97 4 13 44 17 2 Mod 3

19 19 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R S R 3 90 42 76 13 88 2 44 5 17 S 6 27 3 97 4 13 44 17 2 6 27 3 Mod 5 Build- Phase Hashtabelle

20 20 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R S = {3, } R 3 90 42 76 13 88 2 44 5 17 S 6 27 3 97 4 13 44 17 2 6 27 3 Mod 5 Probe- Phase

21 21 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R S = {3, } R 3 90 42 76 13 88 2 44 5 17 S 6 27 3 97 4 13 44 17 2 97 13 4 Mod 5 Build-Phase 2. Partition

22 22 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R S = {3, } R 3 90 42 76 13 88 2 44 5 17 S 6 27 3 97 4 13 44 17 2 97 13 4 Mod 5 Probe-Phase 2. Partition

23 23 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R S = {3, 13 } R 3 90 42 76 13 88 2 44 5 17 S 6 27 3 97 4 13 44 17 2 97 13 4 Mod 5 Probe-Phase 2. Partition

24 24 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R 2 3 44 5 76 90 13 17 42 88 S 44 17 97 4 6 27 2 13 3 R 3 90 42 76 13 88 2 44 5 17 S 6 27 3 97 4 13 44 17 2 Mod 3 R S = {3, 13, 2, 44, 17 }

25 25 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 Hash-Join

26 26 Hash-Join RS r1r1 5 s1s1 5 r4r4 5 s4s4 5 10s3s3 r2r2 7 s2s2 7 r3r3 8 h(A)h(A)h(B ) Bucket 3 Bucket 2Bucket 1

27 27 Normaler blockierender Hash- Join mit Überlauf: Partitionieren Send R Send S receive P1 P2P3 Partition h(R.A) P1 P2 P3 Partition h(S.A) receive

28 28 Normaler blockierender Hash-Join mit Überlauf: Build/Probe Send R Send S P1 P2P3 Partition h(R.A) P1 P2 P3 build Hashtabelle probe Lade Blöcke von P1

29 29

30 30 Nested-Loop JoinHash Join

31 31

32 32 Hybrid Hash-Join Fange so an, als wenn der Build-Input S vollständig in den Hauptspeicher passen würde Sollte sich dies als zu optimistisch herausstellen, verdränge eine Partition nach der anderen aus dem Hauptspeicher Mindestens eine Partition wird aber im Hauptspeicher verbleiben Danach beginnt die Probe-Phase mit der Relation R Jedes Tupel aus R, dessen potentielle Join-Partner im Hauptspeicher sind, wird sogleich verarbeitet Hybrid Hash-Join ist dann besonders interessant, wenn der Build-Input knapp größer als der Hauptspeicher ist Kostensprung beim normalen Hash-Join Wird oft auch Grace-Hash-Join genannt, weil er für die Datenbankmaschine Grace in Japan erfunden wurde

33 33 Hybrid Hash-Join RS P1 P2 P3 Hashtabelle

34 34 Hybrid Hash-Join RS P3 P1 P2 Hashtabelle

35 35 Hybrid Hash-Join RS P2 P3 P1 Hashtabelle

36 36 Hybrid Hash-Join R P2P3 Partition h(R.A) P2 P3 Hashtabelle probe Wenn r zur ersten Partition gehört

37 37 1 1 1 1 0 0 1 1 1 1 0 0 False drops 6 Bit Join mit Hashfilter (Bloom-Filter) R1 R2 partitionieren S1 S2 partitionieren

38 38.. Join mit Hashfilter (False Drop Abschätzung) Wahrscheinlichkeit, dass ein bestimmtes Bit j gesetzt ist W. dass ein bestimmtes r R das Bit setzt: 1/b W. dass kein r R das Bit setzt: (1-1/b) |R| W. dass ein r R das Bit gesetzt hat: 1- (1-1/b) |R| 0 1.. j b-1

39 39 Vergleich: Sort/Merge-Join versus Hash-Join R run S merge R partition S

40 40 Illustration: Externes Sortieren 97 17 3 5 27 16 2 99 13

41 41 Illustration: Externes Sortieren 97 17 3 5 27 16 2 99 13

42 42 Illustration: Externes Sortieren 97 17 3 5 27 16 2 99 13 97 17 3

43 43 Illustration: Externes Sortieren 97 17 3 5 27 16 2 99 13 3 17 97 sort

44 44 Illustration: Externes Sortieren 97 17 3 5 27 16 2 99 13 3 3 17 97 17 97 sort run

45 45 Illustration: Externes Sortieren 97 17 3 5 27 16 2 99 13 5 3 17 97 27 16 run

46 46 Illustration: Externes Sortieren 97 17 3 5 27 16 2 99 13 5 3 17 97 5 16 27 16 27 sort run

47 47 Illustration: Externes Sortieren 97 17 3 5 27 16 2 99 13 2 3 17 97 5 16 27 99 13 run

48 48 Illustration: Externes Sortieren 97 17 3 5 27 16 2 99 13 2 3 17 97 5 16 27 2 13 99 13 99 sort run

49 49 Illustration: Externes Sortieren 3 3 17 97 5 16 27 2 13 99 5 2 merge run

50 50 Illustration: Externes Sortieren 2 3 3 17 97 5 16 27 2 13 99 5 2 merge run

51 51 Illustration: Externes Sortieren 2323 3 3 17 97 5 16 27 2 13 99 5 13 merge run

52 52 Illustration: Externes Sortieren 235235 17 3 17 97 5 16 27 2 13 99 5 13 merge run

53 53 Illustration: Externes Sortieren 235235 17 3 17 97 5 16 27 2 13 99 16 13 merge run

54 54 Illustration: Externes Sortieren 2 3 5 13 17 3 17 97 5 16 27 2 13 99 16 13 run

55 55 Mehrstufiges Mischen / Merge

56 56 Replacement Selection während der Run-Generierung 97 17 3 5 27 16 2 99 13 Ersetze Array durch Einen Heap

57 57 Replacement Selection während der Run-Generierung 97 17 3 5 27 16 2 99 13 Heap 97

58 58 Replacement Selection während der Run-Generierung 97 17 3 5 27 16 2 99 13 Heap 1-97 1-17

59 59 Replacement Selection während der Run-Generierung 97 17 3 5 27 16 2 99 13 Heap 1-17 1-97

60 60 Replacement Selection während der Run-Generierung 97 17 3 5 27 16 2 99 13 Heap 1-17 1-971-3

61 61 Replacement Selection während der Run-Generierung 97 17 3 5 27 16 2 99 13 Heap 1-3 1-971-17

62 62 Replacement Selection während der Run-Generierung 97 17 3 5 27 16 2 99 13 3 Heap 1-3 1-971-17

63 63 Replacement Selection während der Run-Generierung 97 17 3 5 27 16 2 99 13 3 Heap 1-5 1-971-17

64 64 Replacement Selection während der Run-Generierung 97 17 3 5 27 16 2 99 13 3535 Heap 1-5 1-971-17

65 65 Replacement Selection während der Run-Generierung 97 17 3 5 27 16 2 99 13 3535 Heap 1-27 1-971-17

66 66 Replacement Selection während der Run-Generierung 97 17 3 5 27 16 2 99 13 3535 Heap 1-27 1-971-17

67 67 Replacement Selection während der Run-Generierung 97 17 3 5 27 16 2 99 13 3535 Heap 1-17 1-971-27

68 68 Replacement Selection während der Run-Generierung 97 17 3 5 27 16 2 99 13 3 5 17 Heap 1-17 1-971-27

69 69 Replacement Selection während der Run-Generierung 97 17 3 5 27 16 2 99 13 3 5 17 Heap 2-16 1-971-27 Nächster Run, kleiner als 17

70 70 Replacement Selection während der Run-Generierung 97 17 3 5 27 16 2 99 13 3 5 17 Heap 2-16 1-971-27 Nächster Run, kleiner als 17

71 71 Replacement Selection während der Run-Generierung 97 17 3 5 27 16 2 99 13 3 5 17 Heap 1-27 1-972-16

72 72 Replacement Selection während der Run-Generierung 97 17 3 5 27 16 2 99 13 3 5 17 27 Heap 1-27 1-972-16

73 73 Replacement Selection während der Run-Generierung 97 17 3 5 27 16 2 99 13 3 5 17 27 Heap 2-2 1-972-16

74 74 Replacement Selection während der Run-Generierung 97 17 3 5 27 16 2 99 13 3 5 17 27 Heap 2-2 1-972-16

75 75 Replacement Selection während der Run-Generierung 97 17 3 5 27 16 2 99 13 3 5 17 27 97 Heap 1-97 2-22-16

76 76 Replacement Selection während der Run-Generierung 97 17 3 5 27 16 2 99 13 3 5 17 27 97 Heap 1-99 2-22-16

77 77 Replacement Selection während der Run-Generierung 97 17 3 5 27 16 2 99 13 3 5 17 27 97 99 Heap 1-99 2-22-16

78 78 Replacement Selection während der Run-Generierung 97 17 3 5 27 16 2 99 13 3 5 17 27 97 99 Heap 2-13 2-22-16

79 79 Replacement Selection während der Run-Generierung 97 17 3 5 27 16 2 99 13 3 5 17 27 97 99 Heap 2-2 2-132-16

80 80 Replacement Selection während der Run-Generierung 97 17 3 5 27 16 2 99 13 3 5 17 27 97 99 2 13 16 Heap 2-2 2-132-16

81 81 Implementierungs-Details Natürlich darf man nicht einzelne Datensätze zwischen Hauptspeicher und Hintergrundspeicher transferieren Jeder Round-Trip kostet viel Zeit (ca 10 ms) Man transferiert größere Blöcke Mindestens 8 KB Größe Replacement Selection ist problematisch, wenn die zu sortierenden Datensätze variable Größe habe Der neue Datensatz passt dann nicht unbedingt in den frei gewordenen Platz, d.h., man benötigt eine aufwendigere Freispeicherverwaltung Replacement Selection führt im Durchschnitt zu einer Verdoppelung der Run-Länge Beweis findet man im [Knuth] Komplexität des externen Sortierens? O(N log N) ??

82 82 Übersetzung der logischen Algebra RS A R.A=S.B RS HashJoin R.A=S.B RS MergeJoin R.A=S.B [Sort R.A ][Sort S.B ] R S IndexJoin R.A=S.B [Hash S.B | Tree S.B ] R S NestedLoop R.A=S.B [Bucket]

83 83 Übersetzung der logischen Algebra P R Select P R IndexSelect P R

84 84 Übersetzung der logischen Algebra l R [NestedDup] Project l R [SortDup] Sort Project l R [IndexDup] [Hash | Tree] Project l R

85 85 Ein Auswertungsplan Ein Auswer- tungsplan

86 86 Wiederholung der Optimierungsphasen select distinct s.Semester from Studenten s, hören h Vorlesungen v, Professoren p where p.Name = ´Sokrates´ and v.gelesenVon = p.PersNr and v.VorlNr = h.VorlNr and h.MatrNr = s.MatrNr sh v p p.Name = ´Sokrates´ and... s.Semester

87 87 s h v p A s.MatrNr=h.MatrNr A p.PersNr=v.gelesenVon s.Semester p.Name = ´Sokrates´ A v.VorlNr=h.VorlNr


Herunterladen ppt "Vorlesung Datenbanksysteme vom 18.10.2004 Anfragebearbeitung Logische Optimierung Physische Optimierung."

Ähnliche Präsentationen


Google-Anzeigen