Kapitel 8 Anfragebearbeitung

Slides:



Advertisements
Ähnliche Präsentationen
Kapitel 8 Anfragebearbeitung
Advertisements

ER-Datenmodell und Abfragen in SQL
Deduktive Datenbanken
Kapitel 8 Anfragebearbeitung Logische Optimierung Physische Optimierung Kostenmodelle Tuning.
© A. Kemper / A. Eickler1 Fehlerbehandlung (Recovery) 1.Lokaler Fehler in einer noch nicht festgeschriebenen (committed) Transaktion Wirkung muss zurückgesetzt.
© A. Kemper / A. Eickler1 Kapitel 5: Datenintegrität Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung.
Moderne Betriebliche Anwendungen von Datenbanksystemen
5. Sortier-Algorithmen Vorbemerkungen:
Bauinformatik II Softwareanwendungen 1
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
Grundlagen Datenbanken
Anfrage-Optimierung und -Bearbeitung in Verteilten DBMS
Lehrstuhl Informatik III, DatenbanksystemeMartin Wimmer Übung zu Architektur und Implementierung von Datenbanksystemen 1 Implementierungen des Join- Operators.
Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme
Übung Datenbanksysteme SQL-Anfragen (2)
Aufgabe April 2004Übung Data Warehousing2 1: Accounts 'gruppe ' auf ' morawetz ' (IP: !) Oracle-Account gleichen Namens SQL*Plus:
Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.
Rel-Modell Relationenspezifische Operationen (11|21) Definition: natural join (natürlicher Verbund) Geg.: zwei Relationen r 1 : (A) und.
Übung 1: SQL Übungen finden bei Bedarf anstelle der Vorlesungen statt
- Schnittmengenbildung -
SQL - Ausführungspläne Matthias Jauernig (03INB), Michael Lahl (03IND)
Interoperable Informationssysteme - 1 Klemens Böhm Systeme 2: Query Processing - Grundlagen.
Vorlesung Datenbanksysteme vom Anfragebearbeitung Kostenmodelle Tuning.
WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 Vorlesung #4 Anfragebearbeitung (Teil 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.
SQL Überblick Abfragen aus einer Tabelle
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #4 SQL (Teil 1)
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #6 SQL (Teil 3)
WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R Vorlesung #10 Physische Datenorganisation.
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #7 SQL (Teil 2)
WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R Vorlesung #3 Relationale Anfragesprachen.
WS 2011/12 Datenbanksysteme Mi 15:15 – 16:45 R Vorlesung #9 Physische Datenorganisation.
Vorlesung #4 SQL (Teil 1).
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #8 Anfragebearbeitung.
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #5 Relationale Anfragesprachen.
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #6 SQL (Teil 1)
WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)
WS 2013/14 Datenbanksysteme Fr 17:00 – 18:30 R Vorlesung #3 Das relationale Modell (Teil 2)
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #9 Anfragebearbeitung.
WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R Vorlesung #9 Anfragebearbeitung (Teil 1)
WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R Vorlesung #5 SQL (Teil 2)
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #3 Das relationale Modell (Teil 2)
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #4 SQL (Teil 1)
Datenbanksysteme für hörer anderer Fachrichtungen
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)
Vorlesung #10 Physische Datenorganisation
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 Anfragebearbeitung.
SQL - Structured Query Language AIFB SS (1/9) Join-Operationen in SQL-92(1/9) Syntax einer Join-Operation: join-op := CROSS JOIN | [NATURAL]
Vorlesung Datenbanksysteme vom Anfragebearbeitung Logische Optimierung Physische Optimierung.
Vorlesung #2 Physische Datenorganisation
Structured Query Language
WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 Vorlesung #3 Anfragebearbeitung (Teil 1)
Vorlesung #5 SQL (Teil 2).
Wiederholung Der wichtigste Befehl zur Datenmanipulation lautet:
Algebraische Optimierung (1)
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
Vorlesung Datenbanksysteme vom Anfragebearbeitung  Logische Optimierung.
Vorlesung Datenbanksysteme vom : Wiederholung Anfragebearbeitung  Logische Optimierung.
WS 2014/15 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 SQL Zusammenfassung.
Datenbanken abfragen mit SQL
Vorlesung Datenbanksysteme vom Anfragebearbeitung 2  Architektur eines DBMS  Logische Optimierung  Physische Optimierung  Kostenmodelle.
Kapitel 8 Anfragebearbeitung  Logische Optimierung  Physische Optimierung  Kostenmodelle  „Tuning“
Vorlesung #9 Anfragebearbeitung
Vorlesung #4 Relationales Kalkül und SQL (Teil 1)
Vorlesung #5 SQL (Teil 2).
Vorlesung #9 Anfragebearbeitung
Vorlesung #6 SQL (Teil 3).
Indexierung Oracle: indexes Indexierung.
 Präsentation transkript:

Kapitel 8 Anfragebearbeitung Logische Optimierung Physische Optimierung Kostenmodelle „Tuning“

Ablauf der Anfrageoptimierung Deklarative Anfrage Scanner Parser Sichtenauflösung Algebraischer Ausdruck Anfrage- Optimierer Auswertungs- Plan (QEP) Codeerzeugung Ausführung © A. Kemper / A. Eickler

Kanonische Übersetzung A1, ..., An P  select A1, ..., An from R1, ..., Rk where P Rk   R3 R1 R2 © A. Kemper / A. Eickler

Kanonische Übersetzung select Titel from Professoren, Vorlesungen where Name = ´Popper´ and PersNr = gelesenVon Titel Name = ´Popper´ and PersNr=gelesenVon  Vorlesungen Professoren Titel (Name = ´Popper´ and PersNr=gelesenVon (Professoren  Vorlesungen)) © A. Kemper / A. Eickler

Erste Optimierungsidee select Titel from Professoren, Vorlesungen where Name = ´Popper´ and PersNr = gelesenVon Titel PersNr=gelesenVon  Name = ´Popper´ Vorlesungen Professoren Titel (PersNr=gelesenVon ((Name = ´Popper´ Professoren)  Vorlesungen)) © A. Kemper / A. Eickler

Optimierung von Datenbank- Anfragen 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 wie‘s 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“ © A. Kemper / A. Eickler

Äquivalenzerhaltende Transformationsregeln 1. Aufbrechen von Konjunktionen im Selektionsprädikat c1c2 ... cn (R )  c1(c2 (…(cn(R )) …)) 2.  ist kommutativ c1(c2 ((R ))  c2 (c1((R )) 3.  -Kaskaden: Falls L1  L2  …  Ln, dann gilt L1( L2 (…( Ln(R )) …))  L1 (R ) 4. Vertauschen von  und  Falls die Selektion sich nur auf die Attribute A1, …, An der Projektionsliste bezieht, können die beiden Operationen vertauscht werden A1, …, An (c(R ))  c (A1, …, An(R )) 5. , ,  und A sind kommutativ R Ac S  S Ac R © A. Kemper / A. Eickler

Äquivalenzerhaltende Transformationsregeln …. 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: © A. Kemper / A. Eickler

Heuristische Anwendung der Transformationsregeln 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). © A. Kemper / A. Eickler

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 s.Semester p.Name = ´Sokrates´ and ...  p   v s h © A. Kemper / A. Eickler

Aufspalten der Selektionsprädikate s.Semester s.Semester p.PersNr=v.gelesenVon p.Name = ´Sokrates´ and ... v.VorlNr=h.VorlNr  s.MatrNr=h.MatrNr p.Name = ´Sokrates´ p     v p  s h v © A. Kemper / A. Eickler s h

Verschieben der Selektionsprädikate „Pushing Selections“ s.Semester s.Semester p.PersNr=v.gelesenVon p.PersNr=v.gelesenVon v.VorlNr=h.VorlNr s.MatrNr=h.MatrNr  p.Name = ´Sokrates´ v.VorlNr=h.VorlNr   p.Name = `Sokrates`  s.MatrNr=h.MatrNr p p v   v s h © A. Kemper / A. Eickler s h

Zusammenfassung von Selektionen und Kreuzprodukten zu Joins s.Semester p.PersNr=v.gelesenVon s.Semester Ap.PersNr=v.gelesenVon  v.VorlNr=h.VorlNr p.Name = ´Sokrates´  Av.VorlNr=h.VorlNr s.MatrNr=h.MatrNr p p.Name = ´Sokrates´ v  As.MatrNr=h.MatrNr p s h v © A. Kemper / A. Eickler s h

Optimierung der Joinreihenfolge Kommutativität und Assoziativität ausnutzen s.Semester s.Semester As.MatrNr=h.MatrNr Ap.PersNr=v.gelesenVon Av.VorlNr=h.VorlNr s Av.VorlNr=h.VorlNr p.Name = ´Sokrates´ Ap.PersNr=v.gelesenVon As.MatrNr=h.MatrNr p h v p.Name = ´Sokrates´ s h v p © A. Kemper / A. Eickler

Was hat´s gebracht? As.MatrNr=h.MatrNr Ap.PersNr=v.gelesenVon s.Semester s.Semester 4 4 As.MatrNr=h.MatrNr Ap.PersNr=v.gelesenVon 4 13 Av.VorlNr=h.VorlNr s Av.VorlNr=h.VorlNr 3 p.Name = ´Sokrates´ 13 Ap.PersNr=v.gelesenVon As.MatrNr=h.MatrNr p 1 h v p.Name = ´Sokrates´ s h v p © A. Kemper / A. Eickler

Einfügen von Projektionen s.Semester s.Semester As.MatrNr=h.MatrNr As.MatrNr=h.MatrNr h.MatrNr s Av.VorlNr=h.VorlNr s Av.VorlNr=h.VorlNr Ap.PersNr=v.gelesenVon Ap.PersNr=v.gelesenVon h h p.Name = ´Sokrates´ p.Name = ´Sokrates´ v v p p © A. Kemper / A. Eickler

© A. Kemper / A. Eickler

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

Implementierung der Verbindung: Strategien J1 nested (inner-outer) loop „brute force“-Algorithmus foreach r  R foreach s  S if s.B = r.A then Res := Res  (r  s) © A. Kemper / A. Eickler

© A. Kemper / A. Eickler

© A. Kemper / A. Eickler

© A. Kemper / A. Eickler

Implementierung der Verbindung: Strategien 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 © A. Kemper / A. Eickler

Partitionieren und Hashing Join (auch Mengendurchschnitt) mit einem Hash/Partitionierungs-Algorithmus R  S S 44 17 97 4 6 27 2 13 3 R 2 3 44 17 97 13 42 4 Nested Loop: O(N2) Sortieren: O(N log N) Partitionieren und Hashing Siehe auch Kap. 7 © A. Kemper / A. Eickler

Join mit einem Hash/Partitionierungs-Algorithmus R join S R 2 3 44 17 97 13 42 4 S 44 17 97 4 6 27 2 13 3 R 3 42 97 13 88 2 44 17 S 6 27 3 97 4 13 44 17 2 Mod 3 Mod 3 © A. Kemper / A. Eickler

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

Übersetzung der logischen Algebra NestedLoopR.A=S.B MergeJoinR.A=S.B R [Bucket] [SortR.A] [SortS.B] S R S R S AR.A=S.B IndexJoinR.A=S.B HashJoinR.A=S.B R [HashS.B | TreeS.B] R S S © A. Kemper / A. Eickler

Übersetzung der logischen Algebra IndexSelectP R P R SelectP R © A. Kemper / A. Eickler

Übersetzung der logischen Algebra [IndexDup] [Hash | Tree] Projectl R [SortDup] Sort Projectl R l R [NestedDup] Projectl R © A. Kemper / A. Eickler

Ein Auswer-tungsplan Ein Auswertungsplan © A. Kemper / A. Eickler

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 s.Semester p.Name = ´Sokrates´ and ...  p   v s h © A. Kemper / A. Eickler

Ap.PersNr=v.gelesenVon s.Semester As.MatrNr=h.MatrNr Av.VorlNr=h.VorlNr s Ap.PersNr=v.gelesenVon h p.Name = ´Sokrates´ v p © A. Kemper / A. Eickler

© A. Kemper / A. Eickler

Selektivität 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) / #R oder 1/i abgeschätzt werden. © A. Kemper / A. Eickler

Parametrisierte Verteilung Histogramm © A. Kemper / A. Eickler

© A. Kemper / A. Eickler

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

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

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

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