Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Kapitel 9 Relationale Operatoren.

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

Kapitel 8 Anfragebearbeitung
Anzahl der ausgefüllten und eingesandten Fragebögen: 211
Kapitel 8 Anfragebearbeitung Logische Optimierung Physische Optimierung Kostenmodelle Tuning.
Kap. 7 Sortierverfahren Kap. 7.0 Darstellung, Vorüberlegungen
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Telefonnummer.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
1 JIM-Studie 2010 Jugend, Information, (Multi-)Media Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
= = = = 47 = 47 = 48 = =
Statistiken und Tabellen
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.
Sortierverfahren Richard Göbel.
Effizienz: Indexstrukturen
Algorithmentheorie 04 –Hashing
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
Geometrisches Divide and Conquer
Rechneraufbau & Rechnerstrukturen, Folie 2.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 2.
Internet facts 2008-II Graphiken zu dem Berichtsband AGOF e.V. September 2008.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
Differentielles Paar UIN rds gm UIN
Prof. Dr. Bernhard Wasmayr
Was sind Histogramme? (1)
Studienverlauf im Ausländerstudium
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.
Prof. Dr. Bernhard Wasmayr VWL 2. Semester
AWA 2007 Natur und Umwelt Natürlich Leben
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
Prof. Dr. Günter Gerhardinger Soziale Arbeit mit Einzelnen und Familien Übersicht über die Lehrveranstaltung Grundlegende Bestimmungsfaktoren der Praxis.
20:00.
7.1 Externes Suchen Bisherige Algorithmen: geeignet, wenn alle Daten im Hauptspeicher. Große Datenmengen: oft auf externen Speichermedien, z.B. Festplatte.
„Küsse deine Freunde“ – FlexKom-App teilen
Zusatzfolien zu B-Bäumen
WIRTSCHAFTSLAGE NOCH SCHWIERIG
Eine Einführung in die CD-ROM
Dokumentation der Umfrage
für Weihnachten oder als Tischdekoration für das ganze Jahr
Wir üben die Malsätzchen
Syntaxanalyse Bottom-Up und LR(0)
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.
Addieren und Subtrahieren von Dezimalzahlen
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #8 Anfragebearbeitung.
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)
Der Ablauf eines Clear Rex Klärzyklus
PROCAM Score Alter (Jahre)
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Geometrische Aufgaben
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
Symmetrische Blockchiffren DES – der Data Encryption Standard
Retuschen.ppt Die folgende Schau zeigt die Möglichkeiten, mit PhotoDraw Digitalbilder zu retuschieren. Vergleichen Sie jeweils zwei Bildpaare durch fleissiges.
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 Anfragebearbeitung.
Zahlentheorie und Zahlenspiele Hartmut Menzer, Ingo Althöfer ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List.
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
Geschachtelte Verbindung (1) Geschachtelte Schleife, in der jeder Datensatz in Datei R (hier: BUCHUNG) mit jedem Datensatz in S (hier: FLUG) verglichen.
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Folie Beispiel für eine Einzelauswertung der Gemeindedaten (fiktive Daten)
Unternehmensbewertung Thomas Hering ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List of Figures Tabellenübersicht.
Forschungsprojekt Statistik 2013 „Jugend zählt“ – Folie 1 Statistik 2013 „Jugend zählt“: Daten zur Arbeit mit Kindern und Jugendlichen.
WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 Vorlesung #3 Anfragebearbeitung (Teil 1)
Folie Einzelauswertung der Gemeindedaten
Datum:17. Dezember 2014 Thema:IFRS Update zum Jahresende – die Neuerungen im Überblick Referent:Eberhard Grötzner, EMA ® Anlass:12. Arbeitskreis Internationale.
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Vorlesung Datenbanksysteme vom Anfragebearbeitung 2  Architektur eines DBMS  Logische Optimierung  Physische Optimierung  Kostenmodelle.
 Präsentation transkript:

Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Kapitel 9 Relationale Operatoren

2 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Gegenstand des Kapitels Mengenorientiertes Datenmodell Datenmodell Dateien Dateiverwaltung Geräteschnittstelle Anfragebearbeitung Satzorientiertes Datenmodell Speicherstruktur Schneller Transport zwischen Haupt- und Hintergrundspeicher Hauptspeicherseiten u. Segmente Segment- u. Pufferverwaltung Bevorratung von Daten im Hauptspeicher (rechtzeitige Bereitstellung vor Benutzung) Transparenter homogener Speicher Datentypen: Seite = feste Anzahl von Bytes Segment = var. Anzahl von Seiten Operatoren: Anforderung/Freigabe von Seiten Segmente anlegen/öffnen/schließen Datentypen: Block = feste Anzahl von Bytes Datei = variable Anzahl v. Blöcken Operatoren: Dateien anlegen/öffnen/schließen Lesen/Schreiben von Blöcken Geräte-E/A Satz- u. Satzmengenverwaltung Satzzugriffsstrukturen Zugriffsschicht Vorschau auf zukünftig benötigte Daten Vermeiden nicht aktuell benötigter Daten Datentypen: Sätze und Satzmengen Operatoren: Operatoren auf Sätzen Datentypen: Satzmengen Operatoren: Operatoren auf Mengen Datentypen: phys. Zugriffsstrukturen auf Sätze Operatoren: seq. Durchlauf, gezielte Suche Optimaler Einsatz der logischen Ressourcen Performanz

3 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Kapitel 9.1 Kostenmodell

4 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Ausgangspunkt Verarbeitet werden Materialisierungen, nicht externe Relationen. Materialisierungen haben den Charakter von Relationen. Daher lassen sich auf sie die relationalen Operatoren anwenden. Aufgabe Zur Implementierung jeden relationalen Operators existieren mehrere Algorithmen. Bestimmung der jeweiligen Kostenfunktion. Bei der Bearbeitung einer Anfrage muss ein kostengünstiger Algorithmus ausgewählt werden: Berücksichtigung von Einflussfaktoren bei der Auswahl. Aufgabe

5 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Elemente der Kostenfunktion Kostenfunktion algebraischer Ausdruck Indexinformationen Ballungsinformationen Kardinalitäten 1. Zugriffskosten auf Hintergrundspeicher für Basisrelationen aber auch für große Zwischenergebnisse 2. Speicherkosten der Zwischenergebnisse (Ergebniskardinalität!) 3. CPU-Kosten für die Berechnung (wird i.Allg. vernachlässigt) 4. Kommunikationskosten Spielen erst bei der verteilten Anfrageoptimierung eine Rolle Ausführungskosten Bestimmen die Anzahl der Zugriffe auf den Hintergrundspeicher

6 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Einflussfaktoren Kostenmodell algebraischer Ausdruck Indexinformationen Ballungsinformationen Kardinalitäten Ausführungskosten vorhanden / nicht vorhanden Liefert einen Multiplikator: Größe der einzelnen Basis- oder Zwischenrelation. Die Größe jeder Zwischenrelation muss daher zuvor abgeschätzt werden. Charakterisierung einer Operation dann durch ihre Selektivität Selektivität = erwartete Anzahl der Ergebnistupel Zahl der Basistupel d. Operation

7 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Selektivitätsabschätzung Da nahezu alle relationalen Operatoren auf einem Vergleich von Attributwerten basieren, beruht die Abschätzung auf der Kenntnis der Attributwertverteilungen. Im Allgemeinen muss Aufwand getrieben werden, um die Verteilung der Attributwerte zu bestimmen. Verfahren: Parametrische Verfahren Parameterfreie (Histogramm-) Verfahren Selektivität ggf. Stichprobenverfahren

8 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Approximieren die Verteilung durch mathematische Wahrscheinlichkeitsverteilung, z.B. Normalverteilung Knappe Beschreibung durch wenige Parameter Nur diese müssen ermittelt werden, z.B. Minimum und Maximum bei Gleichverteilung, Erwartungswert und Varianz bei Normalverteilung Erweiterung auf mehrere Dimensionen zur Erfassung korrelierter Attribute, wie beispielsweise Position und Einkommen bei Angestellten einer Firma z.B. multivariate Normalverteilung, bestimmt durch Erwartungswertvektor und Kovarianzmatrix Nachteile: Art der Verteilung darf sich nicht im Laufe der Zeit ändern mangelnde Universalität Parametrische Verfahren (1)

9 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Parametrische Verfahren (2)

10 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Approximation durch Stufenfunktion. Äquidistante Unterteilung, für jedes Intervall wird die Anzahl der Attributwerte bestimmt, die hineinfallen. Innerhalb der Intervalle wird Gleichverteilung angenommen. Die Erweiterung des Histogramm-Verfahrens auf mehrere Dimensionen zur Erfassung von Korrelationen ist leicht möglich. Histogrammverfahren (1)

11 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Fehler hängt nicht nur von der Auflösung ab, sondern auch von der Verteilung selbst, die ja unbekannt ist. Abhilfe durch nicht äquidistante Unterteilung des Wertebereichs: Gleiche Höhenintervalle statt gleicher Breite. Histogrammverfahren (2) relative schlechte Abschätzung (große Abweichung Verteilung zu Histogramm).

12 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Vorzüge generell: Universalität: Keine Voraussetzungen bzgl. Wahrscheinlichkeitsverteilung Verbreitetes Verfahren als Voraussetzung für die Anfrageoptimierung Nachteile generell: Höherer Speicheraufwand Schätzung der Selektivität aufwendiger, da auf mehr Daten zugegriffen werden muss Erstellung bei gleichen Höhenintervallen ist teurer, da die Attributwerte sortiert werden müssen Neuerstellung/Neuberechnung des Histogramms in periodischen Zeitabständen erforderlich Insbesondere Fortschreiben unter Beibehalten der gleichen Höhenintervalle schwer möglich Histogrammverfahren (3)

13 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Aufwandsverringerung: Repräsentative Stichprobe der Datenbasis zur Parameterschätzung bei parametrischen Verfahren Histogrammberechnung ohne Durchsuchen der gesamten Datenbasis, wichtig besonders bei nicht-äquidistanter Unterteilung. Stichprobenumfang hängt nur von der gewünschten Genauigkeit ab, nicht von der Größe der Datenbasis. Stichprobenverfahren (Sampling)

14 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Verwaltung der Informationen für die Parameter Kardinalität der Relationen Größe der Tupel Ballungseigenschaften der Daten Indexstrukturen zur Unterstützung des Zugriffs Verteilungen / Histogramme Periodisches Fortschreiben z.B. in Zeiten niedriger Systemlast oder parallel zu den Anwendungen Datenwörterbuch

15 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Kapitel 9.2 Unäre Operatoren

16 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Kostenparameter Parameter für die Kostenfunktionen

17 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Selektion: Exact Match (1) S1 Lineare Suche (Ballung nicht in Sortierreihenfolge) Kosten (Zahl der Hintergrundspeicherzugriffe): a)Selektion auf Nicht-Schlüssel-Attribut C S1a = B(R) b)Selektion auf Schlüssel-Attribut C S1b = B(R)/2 Relation Employee: T(E) = , B(E) = 2.000, Bf(E) = 5 SSN=007 (Employee) C S1b = B(E) / 2 = 1000 DNO=5 (Employee) C S1a = B(E) = 2000 Employee (Fname, Lname, SSN, BDate, Address, Sex, Salary, SuperSSN, DNO)

18 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Selektion: Exact Match (2) S2 Binäre Suche (Ballung gemäß Sortierung nach dem Suchkriterium) Kosten (Zahl der Hintergrundspeicherzugriffe): a)Selektion auf Nicht-Schlüssel-Attribut: C S2a = log 2 B(R) + (T(R) S(R,Attr))/ Bf(R) 1 b)Selektion auf Schlüssel-Attribut): C S2b = log 2 B(R)

19 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Selektion: Exact Match (3) S3 Nutzung eines Primärindexes, um ein einziges Tupel zu lesen Kosten (Zahl der Hintergrundspeicherzugriffe): a)B*-Baum:C S3a = X(Idx) + 2 b)B + -Baum (Clusterindex): C S3b = X(Idx) + 1 c)Hash-Index:C S3c 1 Relation Employee: T(E) = , SSN=007 (Employee) Primärindex auf SSN mit X(Idx) = 4: C S3a = X(Idx) + 2 = 6 Clusterindex auf SSN mit X(Idx) = 4: C S3b = X(Idx) + 1 = 5 Employee (Fname, Lname, SSN, BDate, Address, Sex, Salary, SuperSSN, DNO)

20 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Selektion: Exact Match (4) S4 Nutzung eines Sekundärindexes, um Tupel mit gleichem Wert zu lesen Kosten (Zahl der Hintergrundspeicherzugriffe): a)B*-Baum: C S4a = X(Idx) T(R) S(R,Attr) b)B + -Baum(Clusterindex): C S4b = X(Idx) + ((T(R) S(R,Attr)) / Bf(R)) Relation Employee: T(E) = , B(E) = 2.000, Bf(E) = 5 Sekundärindex auf DNO mit X(Idx) = 2, S(E,DNO) = 1/125 (125 verschiedene DNO-Werte) DNO=5 (Employee) C S4a = X(Idx) +1 + T(E) S(E,DNO) = = 83 C S4b = X(Idx) +(T(E) S(E,DNO))/Bf(E) = = 18 Employee (Fname, Lname, SSN, BDate, Address, Sex, Salary, SuperSSN, DNO)

21 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Selektion: Range Query (1) S5 Lineare Suche (Ballung nicht in Sortierreihenfolge) Kosten (Zahl der Hintergrundspeicherzugriffe): a)Range Query:C S5a = B(R) Relation Employee: T(E) = , B(E) = 2.000, Bf(E) = 5 DNO >5 (Employee) C S5a = B(E) = 2000 Employee (Fname, Lname, SSN, BDate, Address, Sex, Salary, SuperSSN, DNO)

22 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Selektion: Range Query (2) S6 Nutzung eines Indexes (Vergleichsprädikat,, ) Kosten (Zahl der Hintergrundspeicherzugriffe): a)Sekundärindex (also keine Ballung von sortierten Tupeln): Annahme: die Hälfte der Tupel erfüllt das Selektionsprädikat: C S6a = X(Idx) + B(Idx)/2 + T(R)/2 b)Clusterindex (Ballung von sortierten Tupeln): Sehr grobe Abschätzung mit Annahme wie bei a): C S6b = X(Idx) + B(R)/2 Relation Employee: T(E) = , B(E) = 2.000, Bf(E) = 5 Sekundärindex auf DNO mit X(Idx) = 2, B(Idx) = 4 DNO>5 (Employee) C S6a = X(Idx) + B(Idx)/2 + T(E)/2 = 5004 Employee (Fname, Lname, SSN, BDate, Address, Sex, Salary, SuperSSN, DNO)

23 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Selektion: Konjunktive Suchprädikate (1) S7 a)Vorauswahl der Tupel gemäß eines der Glieder der Konjunktion, die durch S2, S3, S4, S6 unterstützt wird, dann Zugriff auf die vorausgewählten Tupel und Test des verbleibenden Teils des Selektionsprädikats. b)Nutzung einer mehrdimensionalen Indexstruktur. c)Schnittmengenbildung von ID-Listen aus mehreren Indexen gemäß S3, S4 oder S6, je nach anwendbarem Index. d)Lineare Suche.

24 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Selektion: Konjunktive Suchprädikate (2) DNO=5 and Salary>30000 and Sex=F Employee Relation Employee: T(E) = , B(E) = 2.000, Bf(E) = 5 Clusterindex auf Salary mit X(Idx) = 3 Sekundärindex auf DNO mit X(Idx) = 2, S(E,DNO) = 1 / 125 (125 verschiedene DNO-Werte) Sekundärindex auf Sex mit X(Idx) = 1, S(E,Sex) = 1 / 2 (2 verschiedene Sex-Werte) C S7d = B(E) = S7a: Vorauswahl nach DNO=5: C S4a = X(Idx) +1 + T(E) S(E,DNO) = = 83, restliche Bedingungen durch Inspektion der ausgewählten Tupel S7a: Vorauswahl nach Salary>30.000: C S6b = X(Idx) + B(E)/2 = / 2 = 1003, restliche Bedingungen durch Inspektion der ausgewählten Tupel S7a: Vorauswahl nach Sex=F: C S4a = X(Idx) +1 + T(E) S(E,DNO) = = 5002, restl. Bedingungen durch Inspektion d. ausgewählten Tupel Kann weit besser sein Verteilung?

25 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Disjunktive Selektionsprädikate können kaum unterstützt werden Beispiel: DNO = 5 or Salary > or Sex = F Employee Selbst wenn es Indexe auf Salary und DNO gibt, muss man dennoch alle Tupel der Relation (physisch) lesen, um Sex = F auszuwerten. Selektion: Disjunktive Suchprädikate

26 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 sel(p,R) = p (R) / T(R) Empfohlene Schätzung bei Annahme Gleichverteilung: A Schlüssel von R: Unabhängig von Verteilung sel(A=c,R) = 1/T(R) V(R,A) verschiedene Werte für A: sel(A=c,R) = 1/V(R,A) Vergleich arithmetisch sel(A<c,R) = (c-A min )/(A max -A min ) sel(A>c,R) = (A max -c)/(A max -A min ) Vergleich nicht-arithmetisch sel(A c,R) = 1/3 Selektion: Selektivität Schreibaufwand: (T(R) sel(p,R))/Bf(R).

27 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Fall 1: A (R) mit R sortiert nach A. Alle r A (R) werden in das Ergebnis aufgenommen, für die gilt r previous(r). Aufwand: C P1a = B(R) Fall 2: A (R) mit Index auf A. Nutze Sortierung durch Index. Aufwand: C P2 = X(Idx) + B(Idx) + T(R) Fall 3: A (R) mit R nicht sortiert nach A. A (R) wird zunächst nach A sortiert, dann wie nach Fall 1. Aufwand: C P3 = B(R) + B(R) log m-1 (B(R)/m) Projektion mit Duplikateliminierung (1) Schreibaufwand: (höchstens) B(R).

28 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Fall 4: A (R) mit R nicht sortiert nach A. Projektion mit Duplikateliminierung (2) R A (R) schon gesehen? m-1 PufferAusgabe-Puffer nein Wichtig für die Performanz: A (R) sollte in den Puffer passen. Schnelle Zugriffsstruktur, z.B. Hashing. Nächstes Tupel lesen, auf A projizieren: Nachsehen ob A (R) schon im Puffer A (R) in Puffer und Ausgabe schreiben

29 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Empfohlene Schätzung: Ohne Duplikateliminierung sel(A,R) = A (R) / T(R) sel(A,R) = T(R)/T(R) = 1 Mit Duplikateliminierung: sel(A,R) = A (R) / T(R) sel(A,R) = min (T(R), V(R,A i ) mit A=(A 1, A 2,..., A n ) Projektion: Selektivität

30 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Gruppierung (1) Schreibaufwand: B(R). Schreibaufwand und Hauptspeicherbedarf geringer bei Aggregierung. Fall 1: A (R) mit R sortiert nach A. Mit jedem Wechsel von A (R) wird eine Gruppe abgeschlossen und ein neue begonnen. Das Ergebnis, gegebenenfalls zuerst aggregiert, wird geschrieben. Aufwand: C G1 = B(R) Fall 2: A (R) mit Index auf A. Nutze Sortierung durch Index, ansonsten wie oben. Aufwand: C G2 = X(Idx) + B(Idx) + T(R)

31 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Fall 3: A (R) mit R nicht sortiert nach A. A (R) wird zunächst nach A sortiert, dann wie nach Fall 1. Aufwand: C G3 = B(R) + B(R) log m-1 (B(R)/m) Fall 4: A (R) mit R nicht sortiert nach A. Partitionierung: Anwendung einer Hashfunktion auf A. Aufwand hängt von Güte der Partitionierung ab sowie von der Notwendigkeit, die Partitionen auf den Hintergrundspeicher zu schreiben. Gruppierung (2) Schreibaufwand: B(R). Schreibaufwand und Hauptspeicherbedarf geringer bei Aggregierung.

32 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Empfohlene Schätzung: sel(A,R) = A (R) / T(R) sel(A,R) = min (T(R), V(R,A i ) mit A=(A 1, A 2,..., A n ) Gruppierung (3)

33 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Kapitel 9.3 Gleich-Verbindung (Equi-Join)

34 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Kostenparameter Equi-Join: R A=B S mit Spezialfall natural join Parameter für die Kostenfunktionen

35 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Kapitel Nested-Loops-Methoden

36 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 foreach r R do foreach s S do if s.B = r.A then Res := Res (r s) Grundmuster

37 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Block-Nested-Loops-Verbindung (1) Geg.: Puffergröße m in Blöcken zum Lesen der Relationen sowie B(R) und B(S) Dann Nutze m-1 Pufferblöcke für die äußere Schleife (z.B. zum Lesen von R) Nutze 1 Pufferblock für die innere Schleife (z.B. zum Lesen von S) R S 1 m-1

38 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Block-Nested-Loops-Verbindung (2) Geg.: Puffergröße m in Blöcken zum Lesen der Relationen sowie B(R) und B(S) Dann Nutze m-1 Pufferblöcke für die äußere Schleife (z.B. zum Lesen von R) Nutze 1 Pufferblock für die innere Schleife (z.B. zum Lesen von S) Algorithmus, o.B.d.A. hier: B(R) ist Vielfaches von m-1 for (i = 0; i < B(R)/(m-1), i++) { Lese Blöcke i (m-1) bis (i+1) (m-1)-1 von R for (int j = 0, j < B(S), j++) { Lese Block j von S; Führe nach Grundmuster Join bzgl. zuletzt gelesener Blöcke von R und bzgl. zuletzt gelesenem Block von S im Hauptspeicher (also auf Puffer) durch }

39 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Kostenfunktion (1) Es werden in B(R)/(m-1) Abschnitten insgesamt B(R) Seiten in der äußeren Schleife eingelesen In jedem Abschnitt werden B(S) Seiten neu eingelesen Kosten: C BNL = B(R) + ( B(R)/(m-1) B(S)) + (T(R) T(S) sel(R S))/Bf(R S) Bf(R S): Blockungsfaktor der Join-Tupel sel(R S): Selektivität des Ergebnisses Lesen der Relationen in den Puffer Schreiben des Join-Resultats auf die Festplatte

40 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Block-Nested-Loops-Verbindung (3) Für den Fall zweier Relationen A und B mit B(A) >> B(B) setze R := B (also die von der Seitenzahl her kleinere Relation ist die äußere Relation). Bessere Chance dass B(R)/(m-1) klein bleibt (Extremfall B(R) = (m-1) ).

41 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Anfrage: Employee DNO = Dnumber Department Annahmen: Employee wie gehabt (T(E) = 10000; B(E) = 2000) Department (T(D) = 125, B(D) = 13) Join-Selektivität ist sel(E D) 1/T(D) (= 1/125) weil Dnumber Schlüssel von Department ist Bf(E D) sei 4 Kostenfunktion (2) Employee als äußere Schleife C BNL = B(E) + B(D) B(E)/(m-1) + (T(E) T(D) sel(E D)) / Bf(E D) m=2: C BNL = ( (1/125))/4) = m=6: C BNL = ( (1/125))/4) = Employee (Fname, Lname, SSN, BDate, Address, Sex, Salary, SuperSSN, DNO) Department (Dname, Dnumber, MgrSSN, MgrStartDate)

42 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Anfrage: Employee DNO = Dnumber Department Annahmen: Employee wie gehabt (T(E) = 10000; B(E) = 2000) Department (T(D) = 125, B(D) = 13) Join-Selektivität ist sel(E D) 1/T(D) (= 1/125) weil Dnumber Schlüssel von Department ist Bf(E D) sei 4 Kostenfunktion (3) Employee (Fname, Lname, SSN, BDate, Address, Sex, Salary, SuperSSN, DNO) Department (Dname, Dnumber, MgrSSN, MgrStartDate) m=6: Employee als äußere Schleife C BNL = B(E) + B(D) B(E)/(m-1) + (T(E) T(D) sel(E D)) / Bf(E D) C BNL = ( (1/125))/4) = Department als äußere Schleife C BNL = B(D) + B(E) B(D)/(m-1) + (T(E) T(D) sel(E D)) / Bf(E D) C BNL = ( (1/125))/4) = 8.513

43 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Kapitel Misch-Methoden

44 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Entfällt falls R und S bereits sortiert Schritt 1: Sortierungen 1. R muss nach A und 2. S nach B sortiert werden Schritt 2: Mischen (Merge-Join) Falls A oder B Schlüsselattribut ist, wird jedes Tupel in R und S nur genau einmal gelesen Sort-Merge-Join

45 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Merge-Join Falls für alle c A=c (R) oder A=c (S) klein, müssen R und S nur einmal eingelesen werden: C MJ = B(R) + B(S) + (T(R) T(S) sel(R S)) / Bf(R S) Gilt insbesondere, wenn Join-Attribut in einer der beiden Relationen eindeutiger Schlüssel. Sort-Merge-Join C SMJ : Für jede zu sortierende Relation kommt nach Kap.8 Sortieraufwand hinzu (hier für R): 2 B(R) + 2 B(R) log m-1 (B(R)/m) = 2 B(R) (1+log m-1 (B(R)/m)) (m: Mischgrad) Kostenfunktionen (1)

46 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Anfrage: Employee DNO = Dnumber Department Employee wie gehabt (T(E) = 10000; B(E) = 2000) Department (T(D) = 125, B(D) = 13) Join-Selektivität ist sel(E D) 1/T(D) (= 1/125) weil Dnumber Schlüssel von Department ist Bf(E D) sei 4 Kostenfunktion (2) Employee (Fname, Lname, SSN, BDate, Address, Sex, Salary, SuperSSN, DNO) Department (Dname, Dnumber, MgrSSN, MgrStartDate) m=6: Employee und Department bereits sortiert C MJ = B(E) + B(D) + (T(E) T(D) sel(E D)) / Bf(E D) C MJ = ( (1/125))/4) = Employee und Department noch zu sortieren C SMJ = C MJ + 2 B(E) (1+log 5 (B(E)/6)) + 2 B(D) (1+log 5 (B(D)/6)) C SMJ

47 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Kapitel Index-Methoden

48 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 foreach r R do foreach s S[B=r.A] do Res := Res (r s) beim Durchlauf von R werden jeweils in S die zu R.A korrespondierenden Tupel gelesen dazu ist ein Index auf S.B erforderlich Grundmuster

49 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Kostenfunktionen (1) Sekundärindex auf S.B: C IJa = B(R) + T(R) (X(Idx B ) T(S) S(S,B)) + (T(R) T(S) sel(R S)) / Bf(R S) Clusterindex auf S.B: C IJb = B(R) + T(R) (X(Idx B ) + (T(S) S(S,B))/Bf(S) ) + (T(R) T(S) sel(R S)) / Bf(R S) Primärindex auf S.B (B ist Schlüssel): C IJc = B(R) + T(R) (X(Idx B ) + 2) + (T(R) T(S) sel(R S)) / Bf(R S)

50 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Anfrage: Employee DNO = Dnumber Department Employee (T(E) = 10000; B(E) = 2000) Sekundärindex auf DNO mit X(Idx) = 2 S(E,DNO) = 1 / 125 (125 verschiedene DNO-Werte) Department (T(D) = 125, B(D) = 13) Primärindex auf Dnumber in Department mit X(Idx) = 1 Join-Selektivität ist sel(E D) 1/T(D) (= 1/125) Bf(E D) = 4 Kostenfunktionen (2) Employee als äußere Schleife C IJc = B(E) + T(E) (X(Idx Dnum ) + 2) = = Department als äußere Schleife C IJa = B(D) + T(D) (X(Idx DNO )+1+T(E) S(E,DNO)) = = Schreibaufwand (T(E) T(D) sel(E D)) / Bf(E D) = ( (1/125))/4) = Employee (Fname, Lname, SSN, BDate, Address, Sex, Salary, SuperSSN, DNO) Department (Dname, Dnumber, MgrSSN, MgrStartDate)

51 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Kapitel Hash-Methoden

52 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Probe-Phase Build-Phase Partitioniere Relation R in R 1, R 2,..., R p gemäß Hashfunktion h so dass für alle Tupel r R i h(r.A) H i. Führe Scan auf Relation S aus, wende auf jedes Tupel s S die Hashfunktion h an. Fällt h(s.B) in den gewählten Bereich H i, suche dort einen r-Partner Grundmuster: repeat begin while memory not exhausted do insert next(R) into partition[h(next(R).A)]; foreach s S do foreach r partition[h(s.B)] do if r.A = s.B Res := Res (r s) end until R exhausted Simple Hash Join (1)

53 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Problem: R passt nicht in den Hauptspeicher. Schritt 1 (Build): Führe Scan auf kleinere Relation R aus, wende auf jedes Tupel r R die Hashfunktion h an. Fällt h(r.A) in den gewählten Bereich H i (anfangs i=1), trage r in den Arbeitsbereich ein, andernfalls in einen Puffer für R. Falls Puffer überläuft, schreibe seinen Inhalt in eine Datei für übergangene r-Tupel. Schritt 2 (Probe): Führe Scan auf Relation S aus, wende auf jedes Tupel s S die Hashfunktion h an. Fällt h(s.B) in den gewählten Bereich H i, suche im zugehörigen Arbeitsbereich einen r-Partner. Falls erfolgreich, bilde Ergebnistupel, andernfalls speichere s in Puffer für S. Falls Puffer überläuft, schreibe seinen Inhalt in eine Datei für übergangene s-Tupel. Schritt 3: Wiederhole die beiden Schritte mit den übergangenen Tupeln so lange, bis R erschöpft ist. Simple Hash Join (2) Voraussetzung: Jede Partition passt in den Hauptspeicher. Empfehlung: Wähle h so dass alle Partitionen etwa gleich groß sind.

54 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 1.Iteration: Simple Hash Join (3) A min A max R H1H1 R Rest S Rest B min B max S

55 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Abwandlung des Simple Hash Join, indem statt der Dateien der übergangenen Tupel die Partitionen für R und S komplettiert werden. Fange so an, als wenn der Build-Input R 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 S. Jedes Tupel aus S, dessen potentielle Join-Partner im Hauptspeicher sind, wird sogleich verarbeitet, andernfalls wird es in die entsprechenden Partitionen eingeordnet. Danach müssen nur noch die verbliebenen Partitionen zusammengeführt werden. Hybrid Hash Join (1) Besonders interessant, wenn der Build-Input knapp größer als der Hauptspeicher ist.

56 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Hybrid Hash Join (2) SR P1 P2 P3 Hashtabelle Zwischenstand Build(R)

57 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Hybrid Hash Join (2) SR P3 P1 P2 Hashtabelle Verdrängen einer Partitition

58 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Hybrid Hash Join (2) SR P2 P3 P1 Hashtabelle Verdrängen einer Partitition

59 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Hybrid Hash Join (2) S P2P3 Partition h(S.B) P2 P3 Hashtabelle probe Wenn s zur ersten Partition gehört Zwischenstand während Partitionierung von S

60 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Grundgedanke: Entwicklung aus dem Hybrid Hash Join heraus, indem auch die Verzahnung bei den im Hauptspeicher gehaltenen Partitionen zugunsten eines expliziten Aufbaus aller Partitionierungen nach hinten verschoben wird. Strikte Trennung von Partitionierung und Ergebnisberechnung. Grace Hash Join (1)

61 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Grace Hash Join (2) Partitionierung 1: Partitioniere kleinere Relation, evtl. wiederholt, gemäß Hashfunktionen h i bis jede Partition in den Hauptspeicher passt.

62 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Grace Hash Join (3) Partitionierung 2: Partitioniere größere Relation, evtl. wiederholt, gemäß der selben Hashfunktionen h i. Partitionen müssen nicht in den Hauptspeicher passen.

63 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Grace Hash Join (4) Hole der Reihe nach jede Build-Partition in den Hauptspeicher, organisiere sie als Hashtabelle, vergleiche entsprechende Probe-Partition mit Hashtabelle.

64 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Grace Hash Join (5) Lies RSchreibe RLies SSchreibe SLies R,S Schwierige analytische Kostenabschätzung (Güte der Hashfunktion geht ein). Grob: C GHJ = 3 (B(R) + B(S)) + ((js T(R) T(S))/Bf RS )

65 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Grace Hash Join (6) Send S Send R receive P1 P2P3 Partition h(S.A) P1 P2 P3 Partition h(R.A) receive

66 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Grace Hash Join (7) P1 P2P3 Partition h(S.A) P1 P2 P3 build Hashtabelle probe Lade Blöcke von P1

67 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Grace Hash Join (8) Beispiel:

68 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 2 Varianten: 1. TIDs werden in die Partitionen gehasht passt leichter in den Hauptspeicher 2. Vollständige Tupel werden in die Partitionen gehasht Anmerkung: Grace Hash Join (und Hybrid Hash Join) lassen sich gut parallelisieren. Grace Hash Join (9)

69 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Kapitel Abschätzungen

70 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Aufwandsvergleich Elementvergleich Elementvergleich, der zu Join-Ergebnis führt Nested-LoopMergeHash

71 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 js = (R p S) / (R S) = (R p S) / ( R S ) Sonderfälle: p = true: js = 1 keine 2 Tupel aus R und S erfüllen p: js = 0 p (R.A=S.B) falls A Schlüssel von R ist: Join erfolgt über eine Fremdschlüsselbeziehung mit Fremdschlüssel in S Jedes Tupel in S kann sich mit höchstens einem Tupel aus R verbinden T(R p S) T(S) sel(R p S) = T(R p S) / (T(R) T(S)) T(S) / (T(R) T(S)) 1 / T(R) falls B Schlüssel von S ist: entsprechend js 1/T(S) Join-Selektivität (1)

72 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 js = (R p S) / (R S) = (R p S) / ( R S ) Empfohlene Abschätzung bei p (R.A=S.B): A, B ein-attributig T(R p S) = (T(R) T(S)) / max( V(R,A),V(S,B) ) js = 1 / max( V(R,A),V(S,B) A, B mehr-attributig (Spezialfall 2 Attribute): T(R p S) = (T(R) T(S)) / ( (max(V(R,A 1 ),V(S,B 1 )) (max(V(R,A 2 ),V(S,B 2 )) ) js = 1 / ( (max(V(R,A 1 ),V(S,B 1 )) (max(V(R,A 2 ),V(S,B 2 )) ) Join-Selektivität (2)

73 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Kapitel 9.4 Mengen-Operatoren

74 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Schnitt (1) Schnitt R S: Lässt sich als Semi-Join über alle Attribute ausdrücken. Im Grundsatz über die Algorithmen aus Kap. 9.4 umsetzbar. Illustration am Beispiel GraceHash Join.

75 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Schnitt (2) R S R S Mod 3 Partitionierung

76 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Schnitt (3) R S R S Mod 3 Build/Probe

77 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Schnitt (4) R S Mod 5 Hashtabelle Build-Phase

78 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Schnitt (5) R S = {, } R S Mod 5 Probe-Phase 3

79 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Schnitt (6) R S = {3, } R S Mod 5 Build-Phase

80 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Schnitt (7) R S = {3, 13 } R S Mod 5 Probe-Phase

81 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Schnitt (8) R S R S Mod 3 R S = {3, 13, 2, 44, 17 }

82 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Vereinigung (1) Mischen: Schritt 1: Sortierungen unter Duplikateliminierung R und S müssen sortiert werden Entfällt falls R und S bereits sortiert Schritt 2: Mischen In jeder Iteration: Falls aktuelle Tupel gleich, wird nur eines übernommen, aber die Position beider fortgeschaltet. Andernfalls wird das kleinere übernommen und dessen Position fortgeschaltet. Ergebnis sortiert. C = B(R) + B(S) + ((1-f) (T(R)+T(S))/Bf RS ) + B(R) log m-1 (B(R)/m) + B(S) log m-1 (B(S)/m) (f: Anteil an Duplikaten)

83 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 9 Einfügen: Unsortiertes Ergebnis ohne Duplikate Vereinigung (2) R Schon gesehen? m-1 PufferAusgabe-Puffer nein Wichtig für die Performanz: R S sollte in den Puffer passen, daher nur für beschränkte Kardinalität brauchbar. Falls S duplikatfrei, nur R im Puffer. Schnelle Zugriffsstruktur, z.B. Hashing. S Schritt 1Schritt 2