Vorlesung Datenbanksysteme vom 18.11.2015 Anfragebearbeitung 2  Architektur eines DBMS  Logische Optimierung  Physische Optimierung  Kostenmodelle.

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

Kapitel 8 Anfragebearbeitung
Kapitel 8 Anfragebearbeitung Logische Optimierung Physische Optimierung Kostenmodelle Tuning.
Kapitel 8 Anfragebearbeitung
Suche in Texten (Stringsuche )
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.
Sortierverfahren Richard Göbel.
Java: Dynamische Datentypen
Sortierverfahren Richard Göbel.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (13 – Offenes Hashing) Prof. Th. Ottmann.
Prof. Dr. T. Kudraß1 Relationen-Algebra. Prof. Dr. T. Kudraß2 Relationale Anfragesprachen Query Language (QL): Manipulation und Retrieval von Daten einer.
Otto-von-Guericke-Universität MagdeburgGamal Kassem Übung 7 Reports mit Datenbankzugriff.
Übung Datenbanksysteme SQL-Anfragen (2)
Einführung Dateisystem <-> Datenbanksystem
Beispielrelation Buchbestellungen H = Menge der bedeutenden Ziele = {a, d} Schwelle T = 4 Stichprobe S = {a, b, a, a, a, a} mit s = |S| = 6 N = Anzahl.
1 Gruppierung (1) Motivation: Bisher existierte nur die gesamte Relation als eine einzige Gruppe. Interessanter ist es, Aggregierungen über Teilmengen.
- Schnittmengenbildung -
Interoperable Informationssysteme - 1 Klemens Böhm Systeme 2: Query Processing - Grundlagen.
EXPLAIN PLAN - Erste Schritte April 2004EXPLAIN PLAN2 Was fehlt noch? Konkretes Beispiel für einen Plan.
Eine Implementierung einer effiziente externe geordnete (!) lineare Liste Operationen: Search(x) Insert(x) Delete(x)
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)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #7 SQL (Teil 2)
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 #6 SQL (Teil 1)
WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #5 SQL (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 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #4 SQL (Teil 1)
Vorlesung Datenbanksysteme vom Physische Datenorganisation
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
1 Gruppierung, Aggregierung und Sortierung (2) Abarbeitungsmodell bei Gruppierung: Werte from- und where-Klauseln aus wie bisher (Bildung von Kreuzprodukt.
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 Anfragebearbeitung.
Geschachtelte Verbindung (1) Geschachtelte Schleife, in der jeder Datensatz in Datei R (hier: BUCHUNG) mit jedem Datensatz in S (hier: FLUG) verglichen.
Vorlesung Datenbanksysteme vom Anfragebearbeitung Logische Optimierung Physische Optimierung.
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 Vorlesung #3 Anfragebearbeitung (Teil 1)
XQuery 1.0 – Arbeitsweise Mögl. Eingaben Das wird berücksichtigt: Typen von XPath und XML Schema Namensräume, Module Ergebnis: XML-Instanz.
Vorlesung #5 SQL (Teil 2).
1 Mehrrechner- Datenbanksysteme Grundlegende Architekturen Anfragebearbeitungstechniken.
Algebraische Optimierung (1)
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
1 Syntaktische Grundform selectA 1, A 2, …, A n fromR 1, R 2, …, R m wherebedingung w ;
Vorlesung Datenbanksysteme vom Anfragebearbeitung  Logische Optimierung.
Vorlesung Datenbanksysteme vom : Wiederholung Anfragebearbeitung  Logische Optimierung.
Seminar zu Datenbanksystemen Sommersemester 2005 Universität Hannover B.Sc. Markus Spehling Vortrag: Based on: Top-k Selection.
WS 2014/15 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 SQL Zusammenfassung.
Kapitel 8 Anfragebearbeitung  Logische Optimierung  Physische Optimierung  Kostenmodelle  „Tuning“
IS: Datenbanken, © Till Hänisch 2000 Relationenalgebra Die mathematische Grundlage von relationalen Datenbanken.
Technische Universität München Übung zur Einführung in die Informatik für Hörer anderer Fachrichtungen im Sommersemester 2010 Sitzung 8: Die relationale.
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.
Oracle Statistiken im HORIZON-Umfeld
 Präsentation transkript:

Vorlesung Datenbanksysteme vom Anfragebearbeitung 2  Architektur eines DBMS  Logische Optimierung  Physische Optimierung  Kostenmodelle + „Tuning“

Physische Optimierung Iterator: einheitliche Schnittstelle für die Operator-Auswertung Weiterreichen der Zwischenergebnisse Externes Sortieren Join-Implementierungen Weitere Operationen

3  Idee: Definition einer einheitlichen Schnittstelle für die Operator-Auswertung. ) Wesentliche Vereinfachung für die Steuerung der Anfrage-Auswertung.  Die Methoden dieser Schnittstelle:  Open: Eingabe öffnen, Initialisierungen (falls nötig)  Next: liefert jeweils das nächste Tupel des (Zwischen-) Ergebnisses  Close: Eingabe schließen, Ressourcen freigeben (falls nötig)  Eventuell zusätzliche Methoden, z.B.: Cost, Size Iterator

4

5 Pull-based Query Evaluation open next Return Ergebnis

6 Idee:  Ergebnis der Auswertung jeder relationalen Operation ist selbst wiederum eine Relation (d.h.: Menge von Tupeln).  Diese Menge von Tupeln stellt gleichzeitig den Input für die nächste relationale Operation im Auswertungsplan dar.  Zwei Alternativen für das Weiterreichen dieser Tupeln: 1." Materializing " : Das gesamte Zwischenergebnis wird in einer Hilfs-Tabelle zwischengespeichert. 2." Pipelining " : Direktes Weiterreichen der einzelnen Tupeln ohne Zwischenspeichern => erspart I/O für das Schreiben und Wiederauslesen. Weiterreichen der Zwischenergebnisse: „Pipelining“ vs. „Materializing“

7 Pipelining vs. Materializing RS... T

8 Pipelining vs. Materializing RS... T

9 Typische „Pipeline-Breaker“  Wichtige Routinen, die Ergebnisse zwischenspeichern:  Sortieren  Hashing  Operationen, die (je nach Implementierung) Zwischenspeichern erfordern:  Join  Duplikatelimination  Gruppieren  Mengendifferenz, Durchschnitt

10  Anwendungsfälle:  Sortieren ist keine relationale Operation, wird aber für manche Implementierungen benötigt, z.B.: Sort-Merge Join.  Außerdem ist Sortieren erforderlich bei "order by" Klausel und eine Möglichkeit der Duplikat-Elimination.  "Externes" Sortieren:  Sortieren von großen Datenmengen (die größtenteils auf dem Hintergrundspeicher abgelegt sind) erfordert andere Methoden als "in-memory" Sortieren.  Idee: Eigentliche Sortierung erfolgt im Hauptspeicher; "Merge Sort": Sortierte Teile werden zusammengefügt (unter Aufrechterhaltung der Sortierung). Externes Sortieren

11  Grundidee: Einfacher Two-Way Merge Sort  3 Puffer-Seiten im Hauptspeicher genügen  Initialisierung (Pass 0): Jede einzelne Seite des Files wird eingelesen, sortiert und wieder ausgeschrieben.  Pass 1: je 2 sortierte Teilstücke (= "Runs") à 1 Seite werden zu einem Run der Länge 2 gemerged.  Pass 2: je 2 sortierte Teilstücke (= "Runs") à 2 Seiten werden zu einem Run der Länge 4 gemerged, etc.  Weitere Passes bis 1 Run das ganze File umfasst.  Externes Sortieren mit realistischer Hauptspeichergröße:  Initialisierung: Größe der sortierten Teilstücke (= "Runs") entspricht der Anzahl der verfügbaren Puffer-Seiten  Multi-Way Merge Sort: Kombiniere m-1 Runs Algorithmen für Externes Sortieren

12 Einfacher Two-Way Merge Sort

13 Einfacher Two-Way Merge Sort

14 Algorithmus: // Pass 0: Erzeuge Runs, die je 1 Seite lang sind. for each page of the file do { read page; sort it (in RAM); write it out;} // Merge 2 Runs zu größerem Run, bis gesamtes File sortiert ist. while number of runs after previous pass is > 1 { // Pass i = 1, 2, …: while 9 runs to be merged from previous pass { choose next two runs; read (1 page at a time) each run into an input buffer; merge the runs and write to output buffer; write output buffer to disk (1 page at a time); }} Einfacher Two-Way Merge Sort

15 Aufgabe: Externes Sortieren eines Files bestehend aus N Seiten mit Hilfe eines Puffers von m Seiten (im allgemeinen m << N). Modifikationen des einfachen Two-Way Merge Sort:  Initialisierung (Pass 0):  Es werden Blöcke von je m Seiten in den Puffer gelesen, sortiert und wieder ausgeschrieben. => d N / m e Runs zu je m Seiten (außer ev. der letzte Run)  Eigentlicher Merge-Sort (Pass i = 1, 2, …):  Es werden jeweils m-1 Runs gemerged.  Je eine Seite dieser m-1 Runs steht im Puffer (= Input)  Für den Output wird nach wie vor nur 1 Seite benötigt. Externes Sortieren mit m Puffer-Seiten

16 Externes Sortieren mit B Puffer-Seiten

17 Externes Sortieren mit B Puffer-Seiten

18  Implementierungs-Varianten für R A A=B S : 1.Nested Loop Join 2.Verfeinerungen: Page-oriented + Block Nested Loop Join 3.Index Nested Loop Join 4.Sort Merge Join 5.Hash Join 6.Verfeinerung: Hybrid Hash Join  Join mit allgemeinen Join-Bedingungen:  Konjunktionen A 1 = B 1 Æ A 2 = B 2 Æ … Æ A n = B n  Ungleichungen A < B, A · B, A  B, etc. Join-Implementierungen

19 Vorlesungen A gelesenVon = PersNr Professoren VorlesungenProfessoren VorlNrTitelSWSGelesen Von PersNrNameRangRaum 5001Grundzüge42137 KantC Ethik42125 SokratesC Erkenntnistheorie32126 RusselC Mäeutik22125 SokratesC4226 …………………… Equi-Join: Beispiel R = Vorlesungen, A = gelesenVon S = Professoren, B = PersNr

20 "brute force"-Algorithmus: foreach tuple r  R foreach tuple s  S if s.B = r.A then Res := Res  {(r,s)} Nested Loop Join

21

22 Idee: Für jede Seite p R von R und jede Seite p S im Puffer werden alle möglichen Kombinationen von Tupeln r  p R und s  p S getestet. foreach page p R of R foreach page p S of S foreach tuple r  p R and s  p S if s.B = r.A then Res := Res  {(r,s)} Page-oriented Nested Loop Join

23 Block Nested Loop Join m-k-1 R k S kkkkk Idee:  m Seiten im Puffer: k Seiten für innere Relation (einfachster Fall: k=1), m-k-1 Seiten für äußere Relation, 1 Seite für Output.  (wie page-oriented NL): Teste jede Kombination von Tupeln r  R s  S, die sich gerade im Puffer befinden. (In der Praxis wird dies mittels in-memory Hash Table für den Block von R realisiert).  (weitere Verbesserung): Durch "Zick-Zack" Abarbeitung von S erspart man sich (ab dem 2. Durchlauf) 1 I/O pro Durchlauf von S.

24 Idee:  Beim 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

25

26 Idee:  erfordert zwei Sortierungen 1. R muss nach A und 2. S muss nach B sortiert sein.  Falls A oder B Schlüsselattribut ist, wird jedes Tupel in R und S nur genau einmal gelesen. Sort-Merge Join R S Ergebnis:

27

28 Idee: (für m Seiten Puffergröße) Phase 1: "Build" (oder "Partition")-Phase:  R und S werden mit Hilfe der gleichen Hashfunktion h1 (angewendet auf R.A bzw. S.B ) in m-1 Buckets partitioniert.  (Angenommen S benötigt weniger Seiten als R): Falls eines der Buckets von S mehr als m-2 Seiten braucht, dann muss dieses Bucket (sowohl von R als auch von S) mit einer anderen Hashfunktion h2 weiter unterteilt werden. Phase 2: "Probe" (oder "Matching")-Phase:  Lade jeweils 1 Bucket von S in den Puffer  Lade vom entsprechenden Bucket von R eine Seite nach der anderen in den Puffer und teste jedes Tupel von dieser Seite von R mit den Tupeln von S (In der Praxis: Realisierung mittels in-memory Hash Table für das Bucket von S). Hash Join

29 P1 P2P3 Partition h(R.A) P1 P2 P3 Partition h(S.B) Hash Join

30 P1 P2P3 Partition h(R.A) P1 P2 P3 Hashtabelle probe Lade Seiten von P1 Hash Join

31

32

33

34

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

36 Hybrid Hash Join Idee:  Wenn im Hauptspeicher ausreichend Platz ist, kann man eventuell während der Build-Phase von S einige Partionen von S (als in-memory Hash-Table) im Puffer lassen.  Während der Build-Phase von R kann man dann alle Tupel, deren potentielle Join-Partner im Hauptspeicher sind, auf der Stelle verarbeiten.  Ersparnis: Wenn k Partitionen von S im Puffer Platz haben, erspart man sich für diese k Partitionen – sowohl von R als auch von S – das Ausschreiben (während der Build-Phase) und das Einlesen (während der Probe-Phase).

37 Hybrid Hash Join Algorithmus:  Fange so an, als ob 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 (Ansonsten haben wir einen "normalen" Hash Join).  Während der Build-Phase von R werden alle Tupel aus R, deren potentielle Join-Partner im Hauptspeicher sind, sofort verarbeitet.  Danach beginnt die "normale" Probe-Phase mit den restlichen Partitionen.

38 Hybrid Hash Join RS P1 P2 P3 Hashtabelle

39 Hybrid Hash Join RS P3 P1 P2 Hashtabelle

40 Hybrid Hash Join RS P2 P3 P1 Hashtabelle

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

42 Allgemeine Join-Bedingungen Konjunktionen A 1 = B 1 Æ A 2 = B 2 Æ … Æ A n = B n  Nested Loop Join (+ Verfeinerungen): unverändert.  Index Nested Loop Join: Angenommen S ist die innere Relation: Dann benötigt man einen Index für die Kombination der Attribute (B 1,…,B n ).  Sort Merge Join: Sortiere R nach der Kombination der Attribute (A 1,…,A n ) und S nach der Kombination der Attribute (B 1,…,B n ).  (Hybrid) Hash Join: Hashing von R mittels Kombination der Attribute (A 1,…,A n ) und von S mittels Kombination der Attribute (B 1,…,B n ).

43 Allgemeine Join-Bedingungen Ungleichungen A B, A · B, A ¸ B, A  B  Nested Loop Join (+ Verfeinerungen): Unverändert.  Index Nested Loop Join:  Bei A  B nicht anwendbar.  Bei A B, A · B, A ¸ B benötigt man einen geballten Index für B.  Sort Merge Join und (Hybrid) Hash Join: Sind in diesem Fall nicht anwendbar!

44 Weitere Operationen  Selektion  Projektion  Duplikatelimination  Mengenoperationen: R x S, R  S, R   S, R  - S  Gruppierung und Aggregat-Funktionen

45 Selektion  "brute force": Sequentielles Durchlaufen (= Scan) des gesamten Files.  Mit einem "passenden" Index: Beispiel:  Name= 'Sokrates' Æ Raum > 300 (Professoren): -> Suche im Index für das Attribut Name nach 'Sokrates' und teste anschließend die Bedingung Raum > 300.  Bei Sortierung (z.B.: Resultat eines Sort Merge Join): "logarithmisches" Suchen.  Üblicherweise wird versucht, die Selektion mit einem anderen Schritt zu kombinieren, z.B.: im Rahmen eines Join, beim ersten Zugriff auf ein File, etc.

46 Projektion  In der physischen Algebra werden bei Projektion keine Duplikate eliminiert.  Falls eine Duplikatelimination gewünscht ist (select distinct), dann ist dieser Schritt (und die verwendete Methode) explizit anzugeben.  Bei der Projektion werden daher einfach die Tupeln auf die gewünschten Attribute reduziert und weitergereicht.  Üblicherweise wird versucht, die Projektion mit einem anderen Schritt zu kombinieren, z.B.: im Rahmen eines Join, beim ersten Zugriff auf ein File, etc.

47 Duplikatelimination  Duplikatelimination mittels Sortierung:  Sortiere die Relation für die Kombination aller Attribute.  Vergleiche im sortierten File jeweils nur benachbarte Tupel.  Duplikatelimination mittels Hashing:  Build-Phase: Hash-Funktion für Kombination aller Attribute  Für jedes Bucket wird anschließend eine in-memory Hash- Table (mit einer anderen Hash-Funktion) erzeugt. -> dabei entdeckte Duplikate werden sofort verworfen.

48 Mengenoperationen  R £ S und R Å S sind einfach Spezialfälle von Joins, d.h.: Join über keine Attribute bzw. über alle Attribute.  In der physischen Algebra ist bei Vereinigung keine Duplikatelimination vorgesehen. => Vereinigungsoperator liest einfach beide Input-Relationen und gibt alle Tupeln weiter  Mengendifferenz bzw. Vereinigung mit Duplikatelimination:  Mittels Sortierung für Kombination aller Attribute oder mittels Hashing  Die Kombination Vereinigung + Duplikatelimination ist effizienter als Vereinigung mit anschließender Duplikatelimination.

49 Gruppierung + Aggregat-Funktionen  Gruppierung mittels Sortierung:  Sortiere die Relation für die "group by"- Attribute.  Berechne die Aggregatfunktionen mit Hilfe von einem Durchlauf des sortierten Files.  Gruppierung mittels Hashing:  Hash-Funktion für die "group by"- Attribute  Die Einträge in der Hash-Tabelle bestehen aus den "group by"- Attributen und Variablen (die laufend aktualisiert werden) für die Aggregat-Funktionen.  Am Ende stehen die gesuchten Werte in der Hash-Tabelle.

50 [Zwischen- speichern] Ü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

51 Übersetzung der logischen Algebra PRPR Select P R IndexSelect P R

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

53 Ein Auswertungsplan Ein Auswer- tungsplan

54 Zusammenfassung: 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

55 s h v p A s.MatrNr=h.MatrNr A p.PersNr=v.gelesenVon  s.Semester  p.Name = ´Sokrates´ A v.VorlNr=h.VorlNr