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

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

Embed Size (px)

Citation preview

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

UniversitätKarlsruhe (TH)

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Kapitel 9

Relationale Operatoren

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

2

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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 BytesSegment = var. Anzahl von Seiten

Operatoren:Anforderung/Freigabe von SeitenSegmente anlegen/öffnen/schließen

Datentypen:Block = feste Anzahl von BytesDatei = 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

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

3

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Kapitel 9.1Kapitel 9.1

KostenmodellKostenmodell

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

4

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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

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

5

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Elemente der Kostenfunktion

Kostenfunktionalgebraischer 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

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

6

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Einflussfaktoren

Kostenmodellalgebraischer 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

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

7

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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

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

8

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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)

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

9

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Parametrische Verfahren (2)

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

10

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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)

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

11

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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).

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

12

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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)

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

13

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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)

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

14

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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

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

15

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Kapitel 9.2Kapitel 9.2

Unäre OperatorenUnäre Operatoren

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

16

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Kostenparameter

Parameter Bedeutung T(R) Kardinalität (Tupelzahl) der Relation R B(R) Anzahl der Seiten, auf denen Tupel aus R liegen Bf(R) blocking factor (Anzahl Tupel pro Seite für R) X(Idx) Höhe des Indexes (B-Baum) Idx B(Idx) Anzahl der Stellvertreter-Knoten des Indexes

(nur bei B*-Baum) V(R,Attr) Anzahl verschiedener Werte für die Attributfolge

Attr der Relation R S(R,Attr) Selektivität einer Attributfolge

Parameter für die Kostenfunktionen

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

17

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Selektion: Exact Match (1)

S1 Lineare Suche (Ballung nicht in Sortierreihenfolge)

Kosten (Zahl der Hintergrundspeicherzugriffe):

a) Selektion auf Nicht-Schlüssel-Attribut

CS1a = B(R)

b) Selektion auf Schlüssel-Attribut

CS1b = B(R)/2

Relation Employee: T(E) = 10.000, B(E) = 2.000, Bf(E) = 5SSN=007(Employee)

CS1b = B(E) / 2 = 1000DNO=5(Employee)

CS1a = B(E) = 2000

Employee (Fname, Lname, SSN, BDate, Address, Sex, Salary, SuperSSN, DNO)

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

18

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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:

CS2a = log2 B(R) + (T(R)S(R,Attr))/ Bf(R) 1

b) Selektion auf Schlüssel-Attribut):

CS2b = log2 B(R)

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

19

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Selektion: Exact Match (3)

S3 Nutzung eines Primärindexes, um ein einziges Tupel zu lesen

Kosten (Zahl der Hintergrundspeicherzugriffe):

a) B*-Baum: CS3a = X(Idx) + 2

b) B+-Baum (Clusterindex): CS3b = X(Idx) + 1

c) Hash-Index: CS3c 1

Relation Employee: T(E) = 10.000,SSN=007(Employee)

Primärindex auf SSN mit X(Idx) = 4: CS3a = X(Idx) + 2 = 6Clusterindex auf SSN mit X(Idx) = 4: CS3b = X(Idx) + 1 = 5

Employee (Fname, Lname, SSN, BDate, Address, Sex, Salary, SuperSSN, DNO)

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

20

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Selektion: Exact Match (4)

S4 Nutzung eines Sekundärindexes, um Tupel mit gleichem Wert zu lesen

Kosten (Zahl der Hintergrundspeicherzugriffe):

a) B*-Baum: CS4a = X(Idx) + 1 + T(R)S(R,Attr)

b) B+-Baum(Clusterindex): CS4b = X(Idx) + ((T(R)S(R,Attr)) / Bf(R))

Relation Employee: T(E) = 10.000, B(E) = 2.000, Bf(E) = 5Sekundärindex auf DNO mit X(Idx) = 2,

S(E,DNO) = 1/125 (125 verschiedene DNO-Werte) DNO=5(Employee)

CS4a = X(Idx) +1 + T(E)S(E,DNO) = 3 + 80 = 83CS4b = X(Idx) +(T(E)S(E,DNO))/Bf(E) = 2 + 16 = 18

Employee (Fname, Lname, SSN, BDate, Address, Sex, Salary, SuperSSN, DNO)

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

21

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Selektion: Range Query (1)

S5 Lineare Suche (Ballung nicht in Sortierreihenfolge)

Kosten (Zahl der Hintergrundspeicherzugriffe):

a) Range Query: CS5a = B(R)

Relation Employee: T(E) = 10.000, B(E) = 2.000, Bf(E) = 5DNO >5(Employee)

CS5a = B(E) = 2000

Employee (Fname, Lname, SSN, BDate, Address, Sex, Salary, SuperSSN, DNO)

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

22

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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:

CS6a = X(Idx) + B(Idx)/2 + T(R)/2

b) Clusterindex (Ballung von sortierten Tupeln): Sehr grobe Abschätzung mit Annahme wie bei a):

CS6b = X(Idx) + B(R)/2

Relation Employee: T(E) = 10.000, B(E) = 2.000, Bf(E) = 5Sekundärindex auf DNO mit X(Idx) = 2, B(Idx) = 4

DNO>5(Employee)CS6a = X(Idx) + B(Idx)/2 + T(E)/2 = 5004

Employee (Fname, Lname, SSN, BDate, Address, Sex, Salary, SuperSSN, DNO)

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

23

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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.

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

24

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Selektion: Konjunktive Suchprädikate (2)

DNO=5 and Salary>30000 and Sex=F Employee

Relation Employee: T(E) = 10.000, B(E) = 2.000, Bf(E) = 5Clusterindex auf Salary mit X(Idx) = 3Sekundä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)

CS7d = B(E) = 2.000S7a: Vorauswahl nach DNO=5:CS4a = X(Idx) +1 + T(E)S(E,DNO) = 3 + 80 = 83, restliche Bedingungen durch Inspektion der ausgewählten TupelS7a: Vorauswahl nach Salary>30.000:CS6b = X(Idx) + B(E)/2 = 3 + 2000 / 2 = 1003, restliche Bedingungen durch Inspektion der ausgewählten TupelS7a: Vorauswahl nach Sex=F:

CS4a = X(Idx) +1 + T(E)S(E,DNO) = 2 + 5000 = 5002, restl. Bedingungen durch Inspektion d. ausgewählten Tupel

Kann weit besser sein Verteilung?

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

25

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Disjunktive Selektionsprädikate können kaum unterstützt werden

Beispiel: DNO = 5 or Salary > 30000 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

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

26

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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-Amin)/(Amax-Amin)

sel(A>c,R) = (Amax-c)/(Amax-Amin) Vergleich nicht-arithmetisch

sel(A<c,R) = sel(A>c,R) = 1/3

Selektion: Selektivität

Schreibaufwand: (T(R) sel(p,R))/Bf(R) .

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

27

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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: CP1a = B(R)

Fall 2: A(R) mit Index auf A.

Nutze Sortierung durch Index. Aufwand: CP2 = 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: CP3 = B(R) + B(R)logm-1(B(R)/m)

Projektion mit Duplikateliminierung (1)

Schreibaufwand: (höchstens) B(R).

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

28

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Fall 4: A(R) mit R nicht sortiert nach A.

Projektion mit Duplikateliminierung (2)

RA(R) schon gesehen?

m-1 Puffer Ausgabe-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

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

29

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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,Ai) mit A=(A1, A2, ..., An)

Projektion: Selektivität

n

i 1

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

30

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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: CG1 = B(R)

Fall 2: A(R) mit Index auf A.

Nutze Sortierung durch Index, ansonsten wie oben. Aufwand: CG2 = X(Idx) + B(Idx) + T(R)

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

31

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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: CG3 = B(R) + B(R)logm-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.

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

32

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Empfohlene Schätzung:

sel(A,R) = A(R) / T(R)

sel(A,R) = min (T(R), V(R,Ai) mit A=(A1, A2, ..., An)

Gruppierung (3)

n

i 1

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

33

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Kapitel 9.3Kapitel 9.3

Gleich-Verbindung (Equi-Join)Gleich-Verbindung (Equi-Join)

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

34

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Kostenparameter

Parameter Bedeutung T(R) Kardinalität (Tupelzahl) der Relation R B(R) Anzahl der Seiten, auf denen Tupel aus R liegen Bf(R) blocking factor (Anzahl Tupel pro Seite für R) X(Idx) Höhe des Indexes (B-Baum) Idx B(Idx) Anzahl der Stellvertreter-Knoten des Indexes

(nur bei B*-Baum) V(R,Attr) Anzahl verschiedener Werte für die Attributfolge

Attr der Relation R S(R,Attr) Selektivität einer Attributfolge

Equi-Join: R ⋈A=B S mit Spezialfall natural join Parameter für die Kostenfunktionen

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

35

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Kapitel 9.3.1Kapitel 9.3.1

Nested-Loops-MethodenNested-Loops-Methoden

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

36

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

foreach r R doforeach s S do

if s.B = r.A then Res := Res (r s)

Grundmuster

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

37

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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

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

38

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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 }}

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

39

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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:

CBNL = 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 PufferLesen der Relationen in den Puffer Schreiben des Join-Resultats

auf die FestplatteSchreiben des Join-Resultats auf die Festplatte

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

40

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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) ).

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

41

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Anfrage: Employee ⋈DNO = Dnumber DepartmentAnnahmen: 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

CBNL = B(E) + B(D) B(E)/(m-1) + (T(E) T(D) sel(E⋈D)) / Bf(E⋈D)m=2:CBNL = 2.000 + 13 2.000 + (10.000 125 (1/125))/4) = 30.500m=6:CBNL = 2.000 + 13 400 + (10.000 125 (1/125))/4) = 9.700

Employee (Fname, Lname, SSN, BDate, Address, Sex, Salary, SuperSSN, DNO)

Department (Dname, Dnumber, MgrSSN, MgrStartDate)

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

42

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Anfrage: Employee ⋈DNO = Dnumber DepartmentAnnahmen: 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 SchleifeCBNL = B(E) + B(D) B(E)/(m-1) + (T(E) T(D) sel(E⋈D)) / Bf(E⋈D)CBNL = 2.000 + 13 400 + (10.000 125 (1/125))/4) = 9.700Department als äußere SchleifeCBNL = B(D) + B(E) B(D)/(m-1) + (T(E) T(D) sel(E⋈D)) / Bf(E⋈D)CBNL = 13 + 2.000 3 + (10.000 125 (1/125))/4) = 8.513

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

43

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Kapitel 9.3.2Kapitel 9.3.2

Misch-MethodenMisch-Methoden

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

44

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Entfällt falls R und S bereits sortiert

Schritt 1: Sortierungen1. R muss nach A und2. 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

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

45

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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:

CMJ = 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

CSMJ: Für jede zu sortierende Relation kommt nach Kap.8 Sortieraufwand hinzu (hier für R):

2B(R) + 2B(R)logm-1(B(R)/m) = 2B(R)(1+logm-1(B(R)/m))

(m: Mischgrad)

Kostenfunktionen (1)

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

46

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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 sortiertCMJ = B(E) + B(D) + (T(E) T(D) sel(E⋈D)) / Bf(E⋈D)CMJ = 2000 + 13 + (10.000 125 (1/125))/4) = 4.513Employee und Department noch zu sortieren

CSMJ = CMJ + 2B(E)(1+log5(B(E)/6)) + 2B(D)(1+log5(B(D)/6)) CSMJ 25.000

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

47

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Kapitel 9.3.3Kapitel 9.3.3

Index-MethodenIndex-Methoden

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

48

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

foreach r R doforeach 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

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

49

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Kostenfunktionen (1)

Sekundärindex auf S.B:

CIJa = B(R) + T(R) (X(IdxB) + 1 + T(S)S(S,B)) + (T(R) T(S) sel(R⋈S)) / Bf(R⋈S)

Clusterindex auf S.B:

CIJb = B(R) + T(R) (X(IdxB) + (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):

CIJc = B(R) + T(R) (X(IdxB) + 2) + (T(R) T(S) sel(R⋈S)) / Bf(R⋈S)

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

50

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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 SchleifeCIJc = B(E) + T(E)(X(IdxDnum) + 2) = 2000 + 10.0003 = 30.200 Department als äußere Schleife

CIJa = B(D) + T(D) (X(IdxDNO)+1+T(E)S(E,DNO)) = 13+12583 = 10.388Schreibaufwand(T(E) T(D) sel(E⋈D)) / Bf(E⋈D) = (10.000 125 (1/125))/4) = 2.500

Employee (Fname, Lname, SSN, BDate, Address, Sex, Salary, SuperSSN, DNO)

Department (Dname, Dnumber, MgrSSN, MgrStartDate)

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

51

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Kapitel 9.3.4Kapitel 9.3.4

Hash-MethodenHash-Methoden

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

52

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Probe-Phase

Build-Phase

Partitioniere Relation R in R1, R2, ..., Rp gemäß Hashfunktion h so dass für alle Tupel r Ri h(r.A) Hi.

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 Hi, suche dort einen r-Partner

Grundmuster:repeat

beginwhile memory not exhausted doinsert next(R) into partition[h(next(R).A)];

foreach s S doforeach r partition[h(s.B)] do

if r.A = s.B Res := Res (r s)end

until R exhausted

Simple Hash Join (1)

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

53

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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 Hi (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 Hi, 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.

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

54

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

1.Iteration:

Simple Hash Join (3)

Amin Amax

R

H1 RRest

SRest

Bmin BmaxS

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

55

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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.

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

56

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Hybrid Hash Join (2)

S R

P1

P2

P3

Hashtabelle

Zwischenstand Build(R)

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

57

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Hybrid Hash Join (2)

S R

P3

P1

P2

Hashtabelle

Verdrängen einer Partitition

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

58

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Hybrid Hash Join (2)

S R

P2

P3

P1

Hashtabelle

Verdrängen einer Partitition

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

59

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Hybrid Hash Join (2)

S

P2

P3

Partitionh(S.B) P2

P3

Hashtabelle

probe

Wenn s zur ersten Partition

gehört

Zwischenstand während Partitionierung von S

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

60

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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)

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

61

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Grace Hash Join (2)

Partitionierung 1: Partitioniere kleinere Relation, evtl. wiederholt, gemäß Hashfunktionen hi bis jede Partition in den Hauptspeicher passt.

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

62

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Grace Hash Join (3)

Partitionierung 2: Partitioniere größere Relation, evtl. wiederholt, gemäß der selben Hashfunktionen hi. Partitionen müssen nicht in den Hauptspeicher passen.

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

63

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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.

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

64

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Grace Hash Join (5)

Lies RSchreibe RLies S Schreibe S Lies R,S

Schwierige analytische Kostenabschätzung („Güte“ der Hashfunktion geht ein). Grob:

CGHJ = 3 (B(R) + B(S)) + ((jsT(R)T(S))/BfRS )

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

65

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Grace Hash Join (6)

Send

S

Send

R

receive

P1

P2

P3

Partitionh(S.A)

P1

P2

P3

Partitionh(R.A)

receive

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

66

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Grace Hash Join (7)

P1

P2

P3

Partitionh(S.A)

P1

P2

P3

build

Hashtabelle

probe

Lade Blöcke von P1

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

67

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Grace Hash Join (8)

Beispiel:

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

68

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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)

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

69

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Kapitel 9.3.5Kapitel 9.3.5

AbschätzungenAbschätzungen

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

70

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Aufwandsvergleich

Elementvergleich Elementvergleich, der zu Join-Ergebnis führt

Nested-Loop Merge Hash

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

71

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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)

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

72

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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,A1),V(S,B1)) (max(V(R,A2),V(S,B2)) )

js = 1 / ( (max(V(R,A1),V(S,B1)) (max(V(R,A2),V(S,B2)) )

Join-Selektivität (2)

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

73

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Kapitel 9.4Kapitel 9.4

Mengen-OperatorenMengen-Operatoren

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

74

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Schnitt (1)

Schnitt RS:

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.

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

75

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Schnitt (2)

R23

445

769013174288

S44179746

272

133

R3

90427613882

445

17

S6

273

974

1344172

Mod

3

Mod

3

Partitionierung

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

76

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Schnitt (3)

R23

445

769013174288

S44179746

272

133

R3

90427613882

445

17

S6

273

974

1344172

Mod

3

Mod

3

Build/Probe

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

77

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Schnitt (4)

R3

90427613882

445

17

S6

273

974

1344172

6273

Mod 5

HashtabelleBuild-Phase

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

78

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Schnitt (5)

R S = { , }R3

90427613882

445

17

S6

273

974

1344172

6273

Mod 5

Probe-Phase3

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

79

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Schnitt (6)

R S = {3, }R3

90427613882

445

17

S6

273

974

1344172

97134

Mod 5

Build-Phase

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

80

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Schnitt (7)

R S = {3, 13 }R3

90427613882

445

17

S6

273

974

1344172

97134

Mod 5

Probe-Phase

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

81

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Schnitt (8)

R23

445

769013174288

S44179746

272

133

R3

90427613882

445

17

S6

273

974

1344172

Mod

3

Mod

3

R S = {3, 13, 2, 44, 17 }

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

82

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 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))/BfRS )

+ B(R)logm-1(B(R)/m) + B(S)logm-1(B(S)/m)

(f: Anteil an Duplikaten)

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

83

© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 9

Einfügen: Unsortiertes Ergebnis ohne Duplikate

Vereinigung (2)

RSchon

gesehen?

m-1 Puffer Ausgabe-Puffer

nein

Wichtig für die Performanz: RS 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.

SSchritt 1 Schritt 2