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 © A. Kemper / A. Eickler2 Ablauf der Anfrageoptimierung Scanner Parser Sichtenauflösung Anfrage- Optimierer Codeerzeugung Ausführung Deklarative Anfrage Algebraischer Ausdruck Auswertungs- Plan (QEP)

3 © A. Kemper / A. Eickler3 Kanonische Übersetzung select A1,..., An from R1,..., Rk where P R1R2 R3 Rk P A1,..., An

4 © A. Kemper / A. Eickler4 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 © A. Kemper / A. Eickler5 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 © A. Kemper / A. Eickler6 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 © A. Kemper / A. Eickler7 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 © A. Kemper / A. Eickler8 …. 8. Die Operationen A,,, sind jeweils (einzeln betrachtet) assoziativ. Wenn also eine dieser Operationen bezeichnet, so gilt: (R S ) T R (S T ) …. Die formalen Regeln sind für uns nicht so wichtig. Folgende Regeln sollten intuitiv verständlich sein: Äquivalenzerhaltende Transformationsregeln

9 © A. Kemper / A. Eickler9 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 join-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

10 © A. Kemper / A. Eickler10 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

11 © A. Kemper / A. Eickler11 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

12 © A. Kemper / A. Eickler12 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

13 © A. Kemper / A. Eickler13 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

14 © A. Kemper / A. Eickler14 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

15 © A. Kemper / A. Eickler15 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

16 © A. Kemper / A. Eickler16 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

17 © A. Kemper / A. Eickler17

18 © A. Kemper / A. Eickler18 Implementationen des Join-Operators Nested-Loop Index-Join Hash-Join Sort/Merge-Join Wann ein Index-Join benutzt wird, sollten Sie entscheiden können!

19 © A. Kemper / A. Eickler19 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

20 © A. Kemper / A. Eickler20

21 © A. Kemper / A. Eickler21

22 © A. Kemper / A. Eickler22

23 © A. Kemper / A. Eickler23 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

24 © A. Kemper / A. Eickler24 Join (auch Mengendurchschnitt) mit einem Hash/Partitionierungs-Algorithmus R S R S Nested Loop: O(N 2 ) Sortieren: O(N log N) Partitionieren und Hashing Siehe auch Kap. 7

25 © A. Kemper / A. Eickler25 Join mit einem Hash/Partitionierungs-Algorithmus R S R join S R S Mod 3

26 © A. Kemper / A. Eickler26 Vergleich: Sort/Merge-Join versus Hash-Join R run S merge R partition S

27 © A. Kemper / A. Eickler27 Ü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]

28 © A. Kemper / A. Eickler28 Übersetzung der logischen Algebra P R Select P R IndexSelect P R

29 © A. Kemper / A. Eickler29 Übersetzung der logischen Algebra l R [NestedDup] Project l R [SortDup] Sort Project l R [IndexDup] [Hash | Tree] Project l R

30 © A. Kemper / A. Eickler30 Ein Auswertungsplan Ein Auswer- tungsplan

31 © A. Kemper / A. Eickler31 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

32 © A. Kemper / A. Eickler32 s h v p A s.MatrNr=h.MatrNr A p.PersNr=v.gelesenVon s.Semester p.Name = ´Sokrates´ A v.VorlNr=h.VorlNr

33 © A. Kemper / A. Eickler33

34 © A. Kemper / A. Eickler34 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

35 © A. Kemper / A. Eickler35 Parametrisierte Verteilung Histogramm

36 © A. Kemper / A. Eickler36

37 © A. Kemper / A. Eickler37 I/O-Kosten: Block Nested Loop Join

38 © A. Kemper / A. Eickler38 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 …

39 © A. Kemper / A. Eickler39 Analysieren von Leistungsengpässen Geschätzte Kosten von Oracle

40 © A. Kemper / A. Eickler40 Übung mit einigen Anfragen auf Ihrer Projekt-Datenbank: Display Estimated Execution Plan Im Query-Tool vom Management Studio


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

Ähnliche Präsentationen


Google-Anzeigen