Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Kapitel 8 Anfragebearbeitung Logische Optimierung Physische Optimierung Kostenmodelle Tuning.

Ähnliche Präsentationen


Präsentation zum Thema: "Kapitel 8 Anfragebearbeitung Logische Optimierung Physische Optimierung Kostenmodelle Tuning."—  Präsentation transkript:

1 Kapitel 8 Anfragebearbeitung Logische Optimierung Physische Optimierung Kostenmodelle Tuning

2 2 Ablauf der Anfrageoptimierung Scanner Parser Sichtenauflösung Anfrage- Optimierer Codeerzeugung Ausführung Deklarative Anfrage Algebraischer Ausdruck Auswertungs- Plan (QEP)

3 3 Kanonische Übersetzung select A1,..., An from R1,..., Rk where P R1R2 R3 Rk P A1,..., An

4 4 Kanonische Übersetzung select Titel from Professoren, Vorlesungen where Name = ´Popper´ and PersNr = gelesenVon Professoren Vorlesungen Name = ´Popper´ and PersNr=gelesenVon Titel Titel ( Name = ´Popper´ and PersNr=gelesenVon (Professoren Vorlesungen))

5 5 Erste Optimierungsidee select Titel from Professoren, Vorlesungen where Name = ´Popper´ and PersNr = gelesenVon Professoren Vorlesungen PersNr=gelesenVon Titel Titel ( PersNr=gelesenVon (( Name = ´Popper´ Professoren) Vorlesungen)) Name = ´Popper´

6 6 Grundsätze: Sehr hohes Abstraktionsniveau der mengenorientierten Schnittstelle (SQL). Sie ist deklarativ, nicht-prozedural, d.h. es wird spezifiziert, was man finden möchte, aber nicht wie. Das wie bestimmt sich aus der Abbildung der mengenorientierten Operatoren auf Schnittstellen- Operatoren der internen Ebene (Zugriff auf Datensätze in Dateien, Einfügen/Entfernen interner Datensätze, Modifizieren interner Datensätze). Zu einem was kann es zahlreiche wies geben: effiziente Anfrageauswertung durch Anfrageoptimierung. i.Allg. wird aber nicht die optimale Auswertungsstrategie gesucht (bzw. gefunden) sondern eine einigermaßen effiziente Variante Ziel: avoiding the worst case Optimierung von Datenbank- Anfragen

7 7 1. Aufbrechen von Konjunktionen im Selektionsprädikat c 1 c 2... c n (R ) c 1 ( c 2 (…( c n (R )) …)) 2. ist kommutativ c 1 ( c 2 ((R )) c 2 ( c 1 ((R )) 3. -Kaskaden: Falls L 1 L 2 … L n, dann gilt L 1 ( L 2 (…( L n (R )) …)) L 1 (R ) 4. Vertauschen von und Falls die Selektion sich nur auf die Attribute A 1, …, A n der Projektionsliste bezieht, können die beiden Operationen vertauscht werden A 1, …, A n ( c (R )) c ( A 1, …, A n (R )) 5.,, und A sind kommutativ R A c S S A c R Äquivalenzerhaltende Transformationsregeln

8 8 6. Vertauschen von mit A Falls das Selektionsprädikat c nur auf Attribute der Relation R zugreift, kann man die beiden Operationen vertauschen: c (R A j S) c (R) A j S Falls das Selektionsprädikat c eine Konjunktion der Formc 1 c 2 ist und c 1 sich nur auf Attribute aus R und c 2 sich nur auf Attribute aus S bezieht, gilt folgende Äquivalenz: c (R A j S) c (R) A j ( c 2 (S)) Äquivalenzerhaltende Transformationsregeln

9 9 7. Vertauschung von mit A Die Projektionsliste L sei: L = {A 1,…,A n, B 1,…,B m }, wobei A i Attribute aus R und B i Attribute aus S seien. Falls sich das Joinprädikat c nur auf Attribute aus L bezieht, gilt folgende Umformung: L (R A c S) ( A 1, …, A n (R)) A c ( B 1, …, B n (S)) Falls das Joinprädikat sich auf weitere Attribute, sagen wir A 1 ', …, A p ', aus R und B 1 ', …, B q ' aus S bezieht, müssen diese für die Join-Operation erhalten bleiben und können erst danach herausprojiziert werden: L (R A c S) L ( A 1, …, A n, A 1, …, A n (R) A c B 1, …, B n, B 1, …, B n (R)) Für die -Operation gibt es kein Prädikat, so dass die Einschränkung entfällt. Äquivalenzerhaltende Transformationsregeln

10 10 8. Die Operationen A,,, sind jeweils (einzeln betrachtet) assoziativ. Wenn also eine dieser Operationen bezeichnet, so gilt: (R S ) T R (S T ) 9. Die Operation ist distributiv mit,,. Falls eine dieser Operationen bezeichnet, gilt: c (R S) ( c (R)) ( c (S)) 10. Die Operation ist distributiv mit. c (R S) ( c (R)) ( c (S)) Äquivalenzerhaltende Transformationsregeln

11 Die Join- und/oder Selektionsprädikate können mittels de Morgan's Regeln umgeformt werden: (c 1 c 2 ) ( c 1 ) ( c 2 ) 12. Ein kartesisches Produkt, das von einer Selektions- Operation gefolgt wird, deren Selektionsprädikat Attribute aus beiden Operanden des kartesischen Produktes enthält, kann in eine Joinoperation umgeformt werden. Sei c eine Bedingung der Form A B, mit A ein Attribut von R und B ein Attribut aus S. c (R S ) R A c S Äquivalenzerhaltende Transformationsregeln

12 12 1. Mittels Regel 1 werden konjunktive Selektionsprädikate in Kaskaden von -Operationen zerlegt. 2. Mittels Regeln 2, 4, 6, und 9 werden Selektionsoperationen soweit nach unten propagiert wie möglich. 3. Mittels Regel 8 werden die Blattknoten so vertauscht, dass derjenige, der das kleinste Zwischenergebnis liefert, zuerst ausgewertet wird. 4. Forme eine -Operation, die von einer -Operation gefolgt wird, wenn möglich in eine -Operation um 5. Mittels Regeln 3, 4, 7, und 10 werden Projektionen soweit wie möglich nach unten propagiert. 6. Versuche Operationsfolgen zusammenzufassen, wenn sie in einem Durchlauf ausführbar sind (z.B. Anwendung von Regel 1, Regel 3, aber auch Zusammenfassung aufeinanderfolgender Selektionen und Projektionen zu einer Filter-Operation). Heuristische Anwendung der Transformationsregeln

13 13 Anwendung der Transformationsregeln 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

14 14 Aufspalten der Selektionsprädikate sh v p p.Name = ´Sokrates´ and... s.Semester sh v p p.PersNr=v.gelesenVon s.Semester p.Name = ´Sokrates´ s.MatrNr=h.MatrNr v.VorlNr=h.VorlNr

15 15 Verschieben der Selektionsprädikate Pushing Selections sh v p p.PersNr=v.gelesenVon s.Semester p.Name = `Sokrates` s.MatrNr=h.MatrNr v.VorlNr=h.VorlNr sh v p p.PersNr=v.gelesenVon s.Semester p.Name = ´Sokrates´ s.MatrNr=h.MatrNr v.VorlNr=h.VorlNr

16 16 Zusammenfassung von Selektionen und Kreuzprodukten zu Joins sh v p p.PersNr=v.gelesenVon s.Semester p.Name = ´Sokrates´ s.MatrNr=h.MatrNr v.VorlNr=h.VorlNr sh v p A s.MatrNr=h.MatrNr A p.PersNr=v.gelesenVon s.Semester p.Name = ´Sokrates´ A v.VorlNr=h.VorlNr

17 17 Optimierung der Joinreihenfolge Kommutativität und Assoziativität ausnutzen s h v p A s.MatrNr=h.MatrNr A p.PersNr=v.gelesenVon s.Semester p.Name = ´Sokrates´ A v.VorlNr=h.VorlNr sh v p A p.PersNr=v.gelesenVon s.Semester p.Name = ´Sokrates´ A v.VorlNr=h.VorlNr A s.MatrNr=h.MatrNr

18 18 Was hat´s gebracht? s h v p A s.MatrNr=h.MatrNr A p.PersNr=v.gelesenVon s.Semester p.Name = ´Sokrates´ A v.VorlNr=h.VorlNr sh v p A p.PersNr=v.gelesenVon s.Semester p.Name = ´Sokrates´ A v.VorlNr=h.VorlNr A s.MatrNr=h.MatrNr

19 19 Einfügen von Projektionen s h v p A s.MatrNr=h.MatrNr A p.PersNr=v.gelesenVon s.Semester p.Name = ´Sokrates´ A v.VorlNr=h.VorlNr s h v p A s.MatrNr=h.MatrNr A p.PersNr=v.gelesenVon s.Semester p.Name = ´Sokrates´ A v.VorlNr=h.VorlNr h.MatrNr

20 20 Eine weitere Beispieloptimierung

21 21

22 22

23 23

24 24

25 25

26 26

27 27

28 28 Pull-based Query Evaluation open next Return Ergebnis

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

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

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

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

33 33 Literatur: E. Elmasri and S. Navathe: Fundamentals of Database Systems. Benjamin Cummings, 1999, Redwood City, CA. G. Moerkotte: Konstruktion von Anfrageoptimierer für Objektbanken. Shaker-Verlag, 1995, Aachen. G. Graefe: Query Evaluation Techniques for Large Databases, ACM Computing Surveys, 1993, volume 25, number 2, pages Ein ganz toller Übersichtsartikel Pflichtlektüre Optimierung zentralisierter Anfragen

34 34

35 35 J1 nested (inner-outer) loop brute force-Algorithmus foreach r R foreach s S if s.B = r.A then Res := Res (r s) Implementierung der Verbindung: Strategien

36 36

37 37 Block-Nested Loop Algorithmus Implementierung der Verbindung: Strategien m-k R k S kkkkk

38 38 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) Implementierung der Verbindung: Strategien

39 39

40 40 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 Implementierung der Verbindung: Strategien R S Ergebnis:

41 41

42 42 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 von J3 geschlagen, wenn die Relationen schon vorsortiert sind Implementierung der Verbindung: Strategien

43 43 Implementierung der Verbindung: Strategien 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

44 44 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

45 45 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

46 46

47 47

48 48

49 49

50 50 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

51 51 Hybrid Hash-Join RS P1 P2 P3 Hashtabelle

52 52 Hybrid Hash-Join RS P3 P1 P2 Hashtabelle

53 53 Hybrid Hash-Join RS P2 P3 P1 Hashtabelle

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

55 55 Parallele Anfragebearbeitung: Hash Join A´B´ scan split Ai Bi join merge A´´B´´ scan split Aj Bj join merge

56 56 Paralleler Hash Join – im Detail 1.An jeder Station werden mittels Hash-Funktion h1 die jeweiligen Partitionen von A und B in A1,...,Ak und B1,...,Bk zerlegt zh1 muss so gewählt werden, dass alle Ai´s aller Stationen in den Hauptspeicher passen 2.Für alle 1 <= i <= n: Berechne jetzt den Join von Ai mit Bi wie folgt a.Wende eine weitere Hash-Funktion h2 an, um Ai auf die l Stationen zu verteilen zSende Tupel t an Station h2(t) b.Eintreffende Ai-Tupel werden in die Hash-Tabelle an der jeweiligen Station eingefügt c.Sobald alle Tupel aus Ai verschickt sind, wird h2 auf Bi angewendet und Tupel t an Station h2(t) geschickt d.Sobald ein Bi-Tupel eintrifft, werden in der Ai-Hashtabelle seine Joinpartner ermittelt.

57 57 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R S R S Nested Loop: O(N 2 ) Sortieren: O(N log N) Partitionieren und Hashing

58 58 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R S R S R Mod 3

59 59 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R S R S R S Mod 3

60 60 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R S R S R S Mod 3

61 61 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R S R S Mod 5 Build- Phase Hashtabelle

62 62 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R S = {3, } R S Mod 5 Probe- Phase

63 63 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R S = {3, } R S Mod 5 Build-Phase 2. Partition

64 64 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R S = {3, } R S Mod 5 Probe-Phase 2. Partition

65 65 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R S = {3, 13 } R S Mod 5 Probe-Phase 2. Partition

66 66 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R S R S Mod 3 R S = {3, 13, 2, 44, 17 }

67 67 Parallelausführung von Aggregat- Operationen Min: Min(R.A) = Min ( Min(R1.A),..., Min(Rn.A) ) Max: analog Sum: Sum(R.A) = Sum ( Sum(R1.a),..., Sum(Rn.A) ) Count: analog Avg: man muß die Summe und die Kardinalitäten der Teilrelationen kennen; aber Vorsicht bei Null-Werten! Avg(R.A) = Sum(R.A) / Count(R) gilt nur wenn A keine Nullwerte enthält.

68 False drops 6 Bit (realistisch |R|*k Bits) Join mit Hashfilter (Bloom-Filter) R1 R2 partitionieren S1 S2 partitionieren

69 69.. 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| j b-1

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

71 71 Illustration: Externes Sortieren

72 72 Illustration: Externes Sortieren

73 73 Illustration: Externes Sortieren

74 74 Illustration: Externes Sortieren sort

75 75 Illustration: Externes Sortieren sort run

76 76 Illustration: Externes Sortieren run

77 77 Illustration: Externes Sortieren sort run

78 78 Illustration: Externes Sortieren run

79 79 Illustration: Externes Sortieren sort run

80 80 Illustration: Externes Sortieren merge run

81 81 Illustration: Externes Sortieren merge run

82 82 Illustration: Externes Sortieren merge run

83 83 Illustration: Externes Sortieren merge run

84 84 Illustration: Externes Sortieren merge run

85 85 Illustration: Externes Sortieren run

86 86 Externes Sortieren: Merge mittels Heap/Priority Queue merge run 3 52

87 87 Externes Sortieren: Merge mittels Heap/Priority Queue merge run 2 53

88 88 Externes Sortieren: Merge mittels Heap/Priority Queue run 2 53

89 89 Externes Sortieren: Merge mittels Heap/Priority Queue run Ganz wichtig: aus dem grünen Run nachladen (also aus dem Run, aus dem das Objekt stammte)

90 90 Externes Sortieren: Merge mittels Heap/Priority Queue run 3 513

91 91 Externes Sortieren: Merge mittels Heap/Priority Queue run 3 513

92 92 Externes Sortieren: Merge mittels Heap/Priority Queue run

93 93 Externes Sortieren: Merge mittels Heap/Priority Queue run

94 94 Mehrstufiges Mischen / Merge

95 95 Replacement Selection während der Run-Generierung Ersetze Array durch Einen Heap

96 96 Replacement Selection während der Run-Generierung Heap 97

97 Replacement Selection während der Run-Generierung Heap

98 98 Replacement Selection während der Run-Generierung Heap

99 99 Replacement Selection während der Run-Generierung Heap

100 100 Replacement Selection während der Run-Generierung Heap

101 101 Replacement Selection während der Run-Generierung Heap

102 102 Replacement Selection während der Run-Generierung Heap

103 103 Replacement Selection während der Run-Generierung Heap

104 104 Replacement Selection während der Run-Generierung Heap

105 105 Replacement Selection während der Run-Generierung Heap

106 106 Replacement Selection während der Run-Generierung Heap

107 107 Replacement Selection während der Run-Generierung Heap

108 108 Replacement Selection während der Run-Generierung Heap Nächster Run, kleiner als 17

109 109 Replacement Selection während der Run-Generierung Heap Nächster Run, kleiner als 17

110 110 Replacement Selection während der Run-Generierung Heap

111 111 Replacement Selection während der Run-Generierung Heap

112 112 Replacement Selection während der Run-Generierung Heap

113 113 Replacement Selection während der Run-Generierung Heap

114 114 Replacement Selection während der Run-Generierung Heap

115 115 Replacement Selection während der Run-Generierung Heap

116 116 Replacement Selection während der Run-Generierung Heap

117 117 Replacement Selection während der Run-Generierung Heap

118 118 Replacement Selection während der Run-Generierung Heap

119 119 Replacement Selection während der Run-Generierung Heap

120 120 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) ??

121 121 Algorithmen auf sehr großen Datenmengen R S R S Nested Loop: O(N 2 ) Sortieren: O(N log N) Partitionieren und Hashing

122 122 Ü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]

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

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

125 125 Ein Auswertungsplan Ein Auswer- tungsplan

126 126 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

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

128 128 Kostenbasierte Optimierung Generiere alle denkbaren Anfrageausertungspläne Enumeration Bewerte deren Kosten Kostenmodell Statistiken Histogramme Kalibrierung gemäß verwendetem Rechner Abhängig vom verfügbaren Speicher Aufwands-Kostenmodell Durchsatz-maximierend Nicht Antwortzeit-minimierend Behalte den billigsten Plan

129 129

130 130 Sind verschiedene Strategien anwendbar, so benötigt man zur Auswahl eine Kostenfunktion. Sie basiert auf dem Begriff der Selektivität. Die Selektivität eines Suchprädikats schätzt die Anzahl der qualifizierenden Tupel relativ zur Gesamtanzahl der Tupel in der Relation. Beispiele: die Selektivität einer Anfrage, die das Schlüsselattribut einer Relation R spezifiziert, ist 1/ #R, wobei #R die Kardinalität der Relation R angibt. Wenn ein Attribut A spezifiziert wird, für das i verschiedene Werte existieren, so kann die Selektivität als (#R/i) / #Roder 1/i abgeschätzt werden. Selektivität

131 131

132 132 Abschätzung für einfache Fälle

133 133 Parametrisierte Verteilung Histogramm

134 134

135 135 I/O-Kosten: Block Nested Loop Join

136 136 Tuning von Datenbanken Statistiken (Histogramme, etc.) müssen explizit angelegt werden Anderenfalls liefern die Kostenmodelle falsche Werte In Oracle … analyze table Professoren compute statistics for table; Man kann sich auch auf approximative Statistiken verlassen Anstatt compute verwendet man estimate In DB2 … runstats on table …

137 137 Analysieren von Leistungsengpässen Geschätzte Kosten von Oracle

138 138 Baumdarstellung

139 139 Beispiel Anfrage SELECT* FROMA, B, C WHERE A.a = B.a AND B.b = C.a ; Blätter Tabellen innere Knoten Operatoren Annotation Ausführungsorte ship client IdxNLJ 1 idxscan 3 fscan 2 fscan 1 A1A1 C3C3 B2B2 HashJ 1 Auswertungsplan

140 140 Algorithmen - Ansätze Erschöpfende Suche Dynamische Programmierung (System R) A* Suche Heuristiken (Planbewertung nötig) Minimum Selectivity, Intermediate Result,... KBZ-Algorithmus, AB-Algorithmus Randomisierte Algorithmen Iterative Improvement Simulated Annealing

141 141 Problemgröße Suchraum (Planstruktur) 1.# Bushy-Pläne mit n Tabellen [Ganguly et al. 1992]: nenen (2(n-1))!/(n-1)! ,76* ,85 * ,3*10 27 (2(n-1))! (n-1)! 2. Plankosten unterscheiden sich um Größenordnungen 3. Optimierungsproblem ist NP-hart [Ibaraki 1984]

142 142 Dynamische Programmierung II Identifikation von 3 Phasen 1.Access Root - Phase: Aufzählen der Zugriffspläne 2.Join Root - Phase: Aufzählen der Join-Kombinationen 3.Finish Root - Phase: sort, group-by, etc.

143 143 Optimierung durch Dynamische Programmierung Standardverfahren in heutigen relationalen Datenbanksystemen Voraussetzung ist ein Kostenmodell als Zielfunktion I/O-Kosten CPU-Kosten DP basiert auf dem Optimalitätskriterium von Bellman Literatur zu DP: D. Kossmann und K. Stocker: Iterative Dynamic Programming, TODS, 2000 to appear (online) OS-O Optimaler Subplan Optimaler Subplan

144 144 DP - Beispiel IndexPläne {ABC} {BC} {AC} {AB} {C} {B} {A} 1. Phase: Zugriffspläne ermitteln

145 145 DP - Beispiel IndexPläne {ABC} {BC} {AC} {AB} {C}scan(C) {B}scan(B), iscan(B) {A}scan(A) 1. Phase: Zugriffspläne ermitteln

146 146 DP - Beispiel IndexPläne {ABC} {BC}... {AC}s(A) A s(C), s(C) A s(A) {AB}s(A) A s(B), s(A) A is(B), is(B) A s(A),... {C}scan(C) {B}scan(B), iscan(B) {A}scan(A) Pruning 2. Phase: Join-Pläne ermitteln (2-fach,...,n-fach)

147 147 DP - Beispiel IndexPläne {ABC} (is(B) A s(A)) A s(C) {BC}... {AC} s(A) A s(C) {AB} s(A) A is(B), is(B) A s(A) {C}scan(C) {B}scan(B), iscan(B) {A}scan(A) 3. Phase: Finalisierung

148 148 Enumeration Effiziente Enumeration [Vance 96] anstatt zunächst alle 2-elem, 3-elem,..., n-elem Pläne sequentiell zu enumerieren: effizientes Interleaving nur Pläne aus bereits berechneten Zeilen notwendig Beispiel: 1. A 2. B 3. AB 4. C 5. AC 6. BC 7. ABC


Herunterladen ppt "Kapitel 8 Anfragebearbeitung Logische Optimierung Physische Optimierung Kostenmodelle Tuning."

Ähnliche Präsentationen


Google-Anzeigen