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

108
Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI Kapitel 10 Anfragebearbeitung

Transcript of Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10...

Page 1: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

UniversitätKarlsruhe (TH)

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

Kapitel 10

Anfragebearbeitung

Page 2: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

2

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

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 10 Kapitel 10 Anfragebearbeitung.

3

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

Kapitel 10.1Kapitel 10.1

VorgehensmodellVorgehensmodell

Page 4: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

4

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

Sehr hohes Abstraktionsniveau der mengenorientierten Schnittstelle (SQL). Anfragen sind deklarativ (nicht-prozedural), d.h. es wird

spezifiziert, was man finden möchte, aber nicht wie. Chance und Herausforderung: Das wie bestimmt sich aus

der Abbildung der Anfrage auf die Operatoren der internen Ebene. Zu einem was kann es zahlreiche wie‘s geben:

Verschiedene Algorithmen (Kapitel 9), die auf unterschiedlichen Abbildungen der Relationen auf interne Dateien und logische Zugriffspfade beruhen.

Reihenfolge der Operatoren, um hohe Selektivität zu erreichen. Effiziente Anfrageauswertung durch Anfrageoptimierung.

Ziel: Gesucht wird nicht die optimale Auswertungsstrategie, sondern eine einigermaßen effiziente Variante (z.B. „avoiding the worst case“).

Ziel

Page 5: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

5

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

Ablauf der Anfragebearbeitung

Anfrage-Übersetzer

Sichtauflösung

Anfrage-Optimierer

CodeerzeugungAusführung

DeklarativeAnfrage

AlgebraischerAusdruck

Auswertungs-Plan (QEP)

Page 6: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

6

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

LaufzeitÜbersetzungszeit

Verfeinerter Ablauf der Anfragebearbeitung

Scanner, Parser, Sichtauflösung

deklarative SQL-Anfrage

Auswertungsplan (Query Evaluation Plan, QEP) auf Satzzugriffsstrukturen

Ergebnis

Standardisierung

Optimierung

Ausführung DBS-Laufzeitsystem

Planparametri-sierung

Code-Erzeugung

Anfrage in interner Form

algebraischer Ausdruck auf internen Dateien QEP

QEP

Code

Logische Optimierung

Physische Optimierung

Kostenbasier-te Auswahl

Page 7: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

7

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

Ergebnis

Ausführung DBS-Laufzeitsystem

Planparametri-sierung

Code-Erzeugung

QEP

QEP

Code

Verfeinerter Ablauf der Anfragebearbeitung

Scanner, Parser, Sichtauflösung

deklarative SQL-Anfrage

Auswertungsplan (Query Evaluation Plan, QEP) auf Satzzugriffsstrukturen

Standardisierung

Optimierung

Anfrage in interner Form

algebraischer Ausdruck auf internen Dateien

Logische Optimierung

Physische Optimierung

Kostenbasier-te Auswahl

Traditionelle Übersetzung,Ergebnis ist ein standardisierter algebraischer Ausdruck auf Relationen und mit Annahme NSM damit auch auf internen Dateien

Page 8: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

8

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

Planparametri-sierung

QEP

QEP

Code

Verfeinerter Ablauf der Anfragebearbeitung

Scanner, Parser, Sichtauflösung

deklarative SQL-Anfrage

Auswertungsplan (Query Evaluation Plan, QEP) auf Satzzugriffsstrukturen

Ergebnis

Standardisierung

Optimierung

Ausführung DBS-Laufzeitsystem

Anfrage in interner Form

algebraischer Ausdruck auf internen Dateien

Logische Optimierung

Physische Optimierung

Kostenbasier-te Auswahl

Code-Erzeugung

Umformung zunächst unabhängig und dann abhängig von Zugriffstrukturen, dann Bewertung der Pläne.

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

9

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

Optimierung

algebraischer Ausdruck auf internen Dateien

Logische Optimierung

Physische Optimierung

Kostenbasier-te Auswahl

Verfeinerter Ablauf der Anfragebearbeitung

Scanner, Parser, Sichtauflösung

deklarative SQL-Anfrage

Auswertungsplan (Query Evaluation Plan, QEP) auf Satzzugriffsstrukturen

Ergebnis

Standardisierung

Ausführung DBS-Laufzeitsystem

Planparametri-sierung

Code-Erzeugung

Anfrage in interner Form

QEP

QEP

Code

Bei Standardanfragen wird das Ergebnis von Übersetzung und Optimierung gespeichert. Bei Aufruf muss dann der QEP nur noch geeignet parametrisiert werden.

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

10

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

Standardisierung

Anfrage in interner Form

algebraischer Ausdruck auf internen Dateien

Logische Optimierung

Verfeinerter Ablauf der Anfragebearbeitung

Scanner, Parser, Sichtauflösung

deklarative SQL-Anfrage

Auswertungsplan (Query Evaluation Plan, QEP) auf Satzzugriffsstrukturen

Ergebnis

Optimierung

Ausführung DBS-Laufzeitsystem

Planparametri-sierung

Code-Erzeugung

QEP

QEP

Code

Physische Optimierung

Kostenbasier-te Auswahl

Sofern QEP nicht vom Laufzeitsystem interpretiert wird, muss er in ausführbaren Code übersetzt werden.

Page 11: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

11

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

Kapitel 10.2Kapitel 10.2

AnfrageübersetzungAnfrageübersetzung

Page 12: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

12

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

Stellung in der Anfragebearbeitung

Scanner, Parser, Sichtauflösung

deklarative SQL-Anfrage

Auswertungsplan (Query Evaluation Plan, QEP) auf Satzzugriffsstrukturen

Ergebnis

Standardisierung

Optimierung

Ausführung DBS-Laufzeitsystem

Planparametri-sierung

Code-Erzeugung

Anfrage in interner Form

algebraischer Ausdruck auf internen Dateien QEP

QEP

Code

Logische Optimierung

Physische Optimierung

Kostenbasier-te Auswahl

Page 13: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

13

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

Grundsätze

Prinzipielles Vorgehen zur Umsetzung deklarativ imperativ: Definiere Algebra von Operatoren, die einzelne

Algorithmen kapseln und als Basis-Bausteine eines imperativen Programms dienen. Als Operator-Algebra dient (zunächst) die relationale Algebra.

SQL-Ausdrücke werden zunächst standardisiert (in bestimmte Standardformen überführt).

Für die Standardformen erfolgt Übersetzung anhand von Syntaxbaum. Imperative Programme sind dann Bäume von Operatoren. Ordne jeder Grammatikregel der deklarativen Sprache eine

Übersetzungsregel zu, die besagt, wie der äquivalente Operatorbaum zu konstruieren ist.

Operatorbaum ist Eingabe für die Optimierungsphase.

Page 14: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

14

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

Kapitel 10.2.1Kapitel 10.2.1

Standardisierung der SQL-AnfrageStandardisierung der SQL-Anfrage

Page 15: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

15

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

Bestandteile der Übersetzung

Externes Datenmodell relationaler DBMS bietet: Relation als fundamentalen Datentyp, Sichten, Konsistenzbedingungen, Schutzmechanismen, Anfragesprache SQL.

Übersetzung von SQL-Anfragen in interne Operator-Ausdrücke auf Relationen.

Behandlung von Sichten durch Query modification: Definition wird in Anfrage eingearbeitet.

Überwachung von Konsistenzbedingungen (ggf. zusätzliche Operatoraufrufe) bei Änderungen, gelegentlich Einbau in die Anfrage zur Nutzung bei der Anfragebearbeitung.

Durchsetzung der Schutzmechanismen durch Rechte-Überprüfung bei Übersetzung der Anfrage.

Page 16: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

16

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

Grundmuster der SQL-Übersetzung

Select-Ausdruck

select A1, A2,..., An

from R1, R2,..., Rm

whereB

wird überführt in:

A1, A2,..., An (B (R1 R2 ... Rm)) .

Wir illustrieren die Vorgehensweise direkt an der SQL-Anfrage.Üblicherweise wird die Transformation an Ausdrücken einer (meist baumartigen) Zwischensprache vorgenommen.

Der Select-Ausdruck muss dazu gewissen Standards genügen, die wir nachfolgend entwickeln Schrittweise Transformation der ursprünglichen Anfrage.

Page 17: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

17

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

Transformation (1)

Beseitigen konjunktiver Bedingungen:

select A1, A2,..., An from R1, ..., Rm where B

mit B B1 ... Bk (B in disjunktiver Normalform).

Ersetze Anfrage durch

(select A1, A2,..., An from R1, ..., Rm where B1) union(select A1, A2,..., An from R1, ..., Rm where B2) union ... union(select A1, A2,..., An from R1, ..., Rm where Bk) .

Page 18: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

18

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

Transformation (2)

Select-Ausdruck

select A1, A2,..., An

from R1, R2,..., Rm

whereB

wird überführt in:

A1, A2,..., An (B (R1 R2 ... Rm)) .

Probleme: B kann geschachtelte Anfragen enthalten. Ri kann ein Tabellenausdruck sein, der von R1, ..., Ri-1

abhängt. group by und having-Klauseln müssen berücksichtigt

werden. A1, A2,..., An können Aggregatfunktionen sein.

Page 19: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

19

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

Behandlung geschachtelter Anfragen (1)

Rückführung von in/not in auf any bzw. all:

Ersetze x in (select A from R1, ..., Rm where B)

durch x =any (select A from R1, ..., Rm where B) .

Ersetze x not in (select A from R1, ..., Rm where B)

durch x <>all (select A from R1, ..., Rm where B) .

Page 20: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

20

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

Behandlung geschachtelter Anfragen (2)

Rückführung von any und all auf exists bzw. not exists:

Ersetze xany (select A from R1, ..., Rm where B)

durch exists (select from R1, ..., Rm where B and x A) .

Ersetze xall (select A from R1, ..., Rm where B)

durch not exists (select from R1, ..., Rm where B and not x A).

Page 21: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

21

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

Behandlung geschachtelter Anfragen (3)

Rückführung von not exists auf exists:

Ersetze select A1, A2,..., An from R1, ..., Rm where B and not exists (T)

durch select A1, A2,..., An

from ((select from R1, ..., Rm where B) except (select from R1, ..., Rm where B and exists

(T)))

Page 22: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

22

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

Behandlung geschachtelter Anfragen (4)

Elimination von exists:

Ersetze select A1, A2,..., An

from R1, ..., Rm

where Band exists (select from Rm+1, ..., Rk where B')

durch select A1, A2,..., An

from R1, ..., Rm, Rm+1, ..., Rk

where B and B' .

Page 23: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

23

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

Transformation (3)

Select-Ausdruck

select A1, A2,..., An

from R1, R2,..., Rm

whereB

wird überführt in:

A1, A2,..., An (B (R1 R2 ... Rm)) .

Probleme: B kann geschachtelte Anfragen enthalten. Ri kann ein Tabellenausdruck sein, der von R1, ..., Ri-1

abhängt. group by und having-Klauseln müssen berücksichtigt

werden. A1, A2,..., An können Aggregatfunktionen sein.

Page 24: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

24

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

Allgemeiner Tabellenausdruck im Ergebnis

Standardisiere select auf Attribute:

Ersetze allgemeinen Tabellenausdruck T (z.B. select mit group

by/having, join, values etc.)

durch select

from (T) as R(A1,A2,...,An) ,

wobei R ein frei gewählter, sonst nirgendwo vorkommender Name ist und A1, A2,..., An Namen für die Spalten von T sind.

Page 25: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

25

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

Beispiel (1)

FLUGZEUGTYP(FtypId, Name, CockpitCrew, First, Business, Economy)

FLUG(FlugNr, FtypId, von, nach, Entfernung, Abflugzeit, Ankunftszeit, Tage)

BUCHUNG(FlugNr, TicketNr, PlatzNr, Datum)

„Suche nach Flügen, die an irgendeinem Tag überbucht sind“:

select FlugNrfrom FLUG F, FLUGZEUGTYP FTwhere F.FtypId = FT.FtypIdand FT.First + FT.Business + FT.Economy <any

(select count (TicketNr) from BUCHUNG B where B.FlugNr = F.FlugNr group by Datum)

Page 26: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

26

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

Beispiel (2)

select FlugNrfrom FLUG F, FLUGZEUGTYP FTwhere F.FtypId = FT.FtypIdand FT.First + FT.Business + FT.Economy <any

(select count (TicketNr) from BUCHUNG B where B.FlugNr = F.FlugNr group by Datum)

Allg. Tabellenausdruck T im Ergebnis select from (T) as R(A1,A2,...,An)

Page 27: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

27

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

Beispiel (3)

select FlugNrfrom FLUG F, FLUGZEUGTYP FTwhere F.FtypId = FT.FtypIdand FT.First + FT.Business + FT.Economy <any

(select from (select count (TicketNr)

from BUCHUNG B where B.FlugNr = F.FlugNr group by Datum)

as T(count))

Rückführung von any auf exists:xany (select A from R1, ..., Rm where B) exists (select from R1, ..., Rm where B and x A)

Page 28: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

28

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

Beispiel (4)

select FlugNrfrom FLUG F, FLUGZEUGTYP FTwhere F.FtypId = FT.FtypIdand exists

(select from (select count (TicketNr)

from BUCHUNG B where B.FlugNr = F.FlugNr group by Datum)

as T(count)where FT.First+FT.Business+FT.Economy <

T.count)Beseitigen von exists:from R1, ..., Rm from R1, ..., Rm, Rm+1, ..., Rk where B where B and B' and exists (select from Rm+1, ..., Rk where B')

Page 29: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

29

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

Beispiel (5)

select FlugNrfrom FLUG F, FLUGZEUGTYP FT,

(select count (TicketNr) from BUCHUNG B where B.FlugNr = F.FlugNr group by Datum) as T(count)

where F.FtypId = FT.FtypIdand FT.First+FT.Business+FT.Economy < T.count

Page 30: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

30

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

Transformation (4)

Select-Ausdruck

select A1, A2,..., An

from R1, R2,..., Rm

whereB

wird überführt in:

A1, A2,..., An (B (R1 R2 ... Rm)) .

Probleme: B kann geschachtelte Anfragen enthalten. Ri kann ein Tabellenausdruck sein, der von R1, ..., Ri-1

abhängt. group by und having-Klauseln müssen berücksichtigt

werden. A1, A2,..., An können Aggregatfunktionen sein.

Page 31: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

31

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

Behandlung von from-Abhängigkeiten (1)

Komplikation:

Tabellenausdrücke in from-Klausel können von weiter links stehenden Tabellenausdrücken abhängen. In diesem Fall kann from-Klausel nicht direkt in kart. Produkt

übersetzt werden.

from FLUG F, FLUGZEUGTYP FT,(select count (TicketNr)

from BUCHUNG B where B.FlugNr = F.FlugNr group by Datum) as T(count)

Dann sukzessives Eliminieren von Abhängigkeiten wie bei geschachtelten Anfragen.

Page 32: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

32

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

Behandlung von from-Abhängigkeiten (2)

Herausfaktorisieren von relationalen Operatoren:

Ersetze from R1, ..., Rm, (T1 union T2)

durch from ((select from R1, ..., Rm, T1)

union (select from R1, ..., Rm, T2)) ,

und analog für intersect, except, join.

Page 33: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

33

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

Behandlung von from-Abhängigkeiten (3)

Herausfaktorisieren von select:

Ersetze from R1, ..., Rm,

(select E1, ..., En

from Rm+1, ..., Rk

where B)

durch from (select R1., ..., Rm., E1, ..., En

from R1, ..., Rm, Rm+1, ..., Rk

where B)

(ggf. mit Auflösung von Namenskonflikten).

Page 34: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

34

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

Behandlung von from-Abhängigkeiten (4)

Ebenso mit Gruppierung:

Ersetze from R1, ..., Rm,

(select E1, ..., En

from Rm+1, ..., Rk

where B group by En+1, ..., El

having B')

durch from (select R1., ..., Rm., E1, ..., En

from R1, ..., Rm, Rm+1, ..., Rk

where B group by R1., ..., Rm., En+1, ..., El

having B')

Page 35: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

35

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

Beispiel (6)

select FlugNrfrom FLUG F, FLUGZEUGTYP FT,

(select count (TicketNr) from BUCHUNG B where B.FlugNr = F.FlugNr group by Datum) as T(count)

where F.FtypId = FT.FtypIdand FT.First+FT.Business+FT.Economy < T.count

Herausfaktorisieren von select mit group by

Page 36: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

36

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

Beispiel (7)

select FlugNrfrom (select F., FT., count (TicketNr)

from FLUG F, FLUGZEUGTYP FT,BUCHUNG B

where B.FlugNr = F.FlugNr group by F., FT., Datum) as DFT(F.,FT.,count)

where F.FtypId = FT.FtypIdand FT.First+FT.Business+FT.Economy < DFT.count

DFT(F.,FT.,count) ist Abkürzung.Genauer: Anstelle von F.* und FT.* hat man sich die gesamte Folge der Attribute vorzustellen, DFT hat also 15 Attribute.

Page 37: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

37

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

Fazit: Standardisiertes Ergebnis

Sukzessive Anwendung vorhergehender Regeln führt schließlich auf einfache Anfragen, d.h. Anfragen der Form:

einzelne Basistabelle,

einzelnes ungeschachteltes select-Statement (evtl. mit Gruppierung), dessen from-Klausel wieder eine einfache Anfrage ist,

relationale Verknüpfung (union, intersect, except, join) einfacher Anfragen.

Page 38: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

38

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

Kapitel 10.2.2Kapitel 10.2.2

Übersetzung in StandardformÜbersetzung in Standardform

Page 39: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

39

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

Übersetzungsregeln

select A1, A2,..., An

from R1, R2,..., Rm

where B

R1 R2

R3

Rm

B

A1, A2,..., An

A1, A2,..., An (B (R1 R2 ... Rm))

Basistabellen werden durch Referenzen auf entsprechende Datenstrukturen ersetzt.

Folge einfacher Anfragen in der from-Klausel führt auf kartesisches Produkt.

select-Anweisung (evt. mit Gruppierung) wird in Kombination aus Selektions- und Projektionsoperator auf die from-Klausel übersetzt.

Gruppierung wird in Operator der erweiterten Algebra übersetzt.

Relationale Verknüpfung (union, intersect, except, join) einfacher Anfragen wird in entsprechende relationale Operatoren übersetzt.

Page 40: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

40

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

Beispiel (8)

select FlugNrfrom (select F., FT., count (TicketNr)

from FLUG F, FLUGZEUGTYP FT,BUCHUNG B

where B.FlugNr = F.FlugNr group by F., FT., Datum) as DFT(F.,FT.,count)

where F.FtypId = FT.FtypIdand FT.First+FT.Business+FT.Economy < DFT.count

Folge einfacher Anfragen in der inneren from-Klausel

Page 41: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

41

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

Beispiel (9)

select FlugNrfrom (select F., FT., count (TicketNr)

from FLUG F FLUGZEUGTYP FT BUCHUNG B

where B.FlugNr = F.FlugNr group by F., FT., Datum) as DFT(F.,FT.,count)

where F.FtypId = FT.FtypIdand FT.First+FT.Business+FT.Economy < DFT.count

Innere where-Klausel

Page 42: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

42

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

Beispiel (10)

select FlugNrfrom (select F., FT., count (TicketNr)

from B.FlugNr = F.FlugNr (FLUG F FLUGZEUGTYP FT BUCHUNG B)

group by F., FT., Datum) as DFT(F.,FT.,count)

where F.FtypId = FT.FtypIdand FT.First+FT.Business+FT.Economy < DFT.count

Gruppierung

Page 43: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

43

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

Beispiel (11)

select FlugNrfrom (select F., FT., count (TicketNr)

from F., FT., Datum (B.FlugNr = F.FlugNr (FLUG F

FLUGZEUGTYP FT BUCHUNG B))

) as DFT(F,FT,count)

where F.FtypId = FT.FtypIdand FT.First+FT.Business+FT.Economy < DFT.count

Innere select-Klausel

Page 44: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

44

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

Beispiel (12)

select FlugNrfrom (F., FT., count (TicketNr) (

F., FT., Datum (B.FlugNr = F.FlugNr (FLUG F

FLUGZEUGTYP FT BUCHUNG B))

)) as DFT(F,FT,count)

where F.FtypId = FT.FtypIdand FT.First+FT.Business+FT.Economy < DFT.count

Übersetzung der as-Klausel durch Rename-Operator auf die DFT-Attribute

Page 45: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

45

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

Beispiel (13)

select FlugNrfrom F.,FT.,count (F., FT., count (TicketNr) (

F., FT., Datum (B.FlugNr = F.FlugNr (FLUG F

FLUGZEUGTYP FT BUCHUNG B))))

where F.FtypId = FT.FtypIdand FT.First+FT.Business+FT.Economy < DFT.count

Verbleibende where-Klausel

Page 46: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

46

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

Beispiel (14)

select FlugNrfrom F.FtypId = FT.FtypId FT.First+FT.Business+FT.Economy < DFT.count (

F.,FT.,count (F., FT., count (TicketNr) (

F., FT., Datum (B.FlugNr = F.FlugNr (FLUG F

FLUGZEUGTYP FT BUCHUNG B)))))Streng genommen stehen hier

die umbenannten DFT-Attribute

Verbleibende select-Klausel

Page 47: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

47

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

Beispiel (15)

F.FlugNr (F.FtypId = FT.FtypId FT.First+FT.Business+FT.Economy < count (F.,FT.,count (F., FT., count (TicketNr) ( F., FT., Datum (B.FlugNr = F.FlugNr (FLUG F FLUGZEUGTYP FT

BUCHUNG B))))))

Streng genommen steht hier das umbenannte DFT-Attribut

Page 48: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

48

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

Beispiel (16)

Endergebnisals Operatorbaum:

FLUG F FLUGZEUGTYP FT BUCHUNG B

F.FlugNr

F.FtypId = FT.FtypId FT.First+FT.Business+FT.Economy < count

F., FT., count

F., FT., count (TicketNr)

F., FT., Datum

B.FlugNr = F.FlugNr

F.FlugNr (F.FtypId = FT.FtypId FT.First+FT.Business+FT.Economy < count (F.,FT.,count (F., FT., count (TicketNr) ( F., FT., Datum (B.FlugNr = F.FlugNr (FLUG F FLUGZEUGTYP FT

BUCHUNG B))))))

Page 49: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

49

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

Kapitel 10.3Kapitel 10.3

Logische AnfrageoptimierungLogische Anfrageoptimierung

Page 50: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

50

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

Stellung in der Anfragebearbeitung

Scanner, Parser, Sichtauflösung

deklarative SQL-Anfrage

Auswertungsplan (Query Evaluation Plan, QEP) auf Satzzugriffsstrukturen

Ergebnis

Standardisierung

Optimierung

Ausführung DBS-Laufzeitsystem

Planparametri-sierung

Code-Erzeugung

Anfrage in interner Form

algebraischer Ausdruck auf internen Dateien QEP

QEP

Code

Logische Optimierung

Physische Optimierung

Kostenbasier-te Auswahl

Page 51: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

51

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

Anordnung der Operatoren gemäß

Ziel: „Optimizing the average case“.

Hauptregel: „Halte die Zwischenergebnisse so klein wie möglich.“ Regel kann im Einzelfall auch nachteilig sein.

Umsetzung der Hauptregel

, vor ⋈, , ,… ausführen, denn und verringern den Umfang,

⋈, … “blähen“ oft die Zwischenrelationen auf.

Systematische Vorgehensweise:

Anwendung algebraischer Äquivalenzen.

Grundgedanke

Page 52: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

52

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

1. Konjunktionen im Selektionsprädikat

c1c2 ... cn (R) c1

(c2(…(cn

(R)) …))

2. ist kommutativ

c1(c2

((R)) c2(c1

((R))

3. -Kaskaden: Falls L1 L2 … Ln, dann gilt

L1(L2

(…(Ln(R)) …)) L1

(R)

4. Vertauschen von und

Falls die Selektion sich nur auf Attribute A1, …, An der Projektionsliste bezieht, können die beiden Operationen vertauscht werden

c(A1, …, An(R)) A1, …, An

(c(R))

Algebraische Äquivalenzen (1)

Page 53: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

53

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

5. Die Operationen , ⋈, und sind kommutativ

6. Ein kartesisches Produkt, das von einer Selektions-Operation gefolgt wird, deren Selektionsprädikat Attribute aus beiden Operanden des kartesischen Produktes enthält, kann in eine Joinoperation umgeformt werden.

Sei c eine Bedingung der Form AB, mit A ein Attribut von R und B ein Attribut aus S.

c(R S) R ⋈c S

Algebraische Äquivalenzen (2)

Page 54: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

54

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

7. Vertauschen von mit ⋈ oder

Falls das Selektionsprädikat c nur auf Attribute der Relation R zugreift, kann man die beiden Operationen vertauschen:

c(R ⋈p S) c(R) ⋈p S

c(R S) c(R) S

Falls das Selektionsprädikat c eine Konjunktion der Form „c1 c2“ ist und c1 sich nur auf Attribute aus R und c2 sich nur auf Attribute aus S bezieht, gilt folgende Äquivalenz:

c(R ⋈p S) c1(R) ⋈p c2(S)

c(R S) c1(R) c2(S)

Algebraische Äquivalenzen (3)

Page 55: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

55

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

8. Vertauschung von mit ⋈

Die Projektionsliste L sei: L = {A1,…,An, B1,…,Bm}, wobei Ai Attribute aus R und Bi Attribute aus S seien. Falls sich das Joinprädikat c nur auf Attribute aus L bezieht, gilt folgende Umformung:

L(R ⋈c S) (A1, …, An(R)) ⋈c (B1, …, Bn

(S))

Falls das Joinprädikat sich auf weitere Attribute, sagen wir A1', …, Ap', aus R und B1', …, Bq' aus S bezieht, müssen diese für die Join-Operation erhalten bleiben und können erst danach herausprojiziert werden:

L(R ⋈c S) A1', …, Ap', B1', …, Bq'((A1, …, An, A1', …, Ap'(R))

⋈c (B1, …, Bn, B1', …, Bq'(S)))

Für die -Operation gibt es kein Prädikat, so dass die Einschränkung entfällt.

Algebraische Äquivalenzen (4)

Page 56: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

56

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

9. Die Operationen ⋈, , , sind jeweils assoziativ. Wenn also eine dieser Operationen bezeichnet, so gilt:

(R S) T R (S T)

10. Die Operation ist distributiv mit , , . Falls eine dieser Operationen bezeichnet, gilt:

c(R S) (c(R)) (c(S))

11. Die Operation ist distributiv mit mit , , . Falls eine dieser Operationen bezeichnet, gilt:

L(R S) (L(R)) (L(S))

12. Die Join- und Selektionsprädikate können mittels de Morgan's Regeln umgeformt werden:

(c1 c2) (c1) (c2)

(c1 c2) (c1) (c2)

Algebraische Äquivalenzen (5)

Page 57: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

57

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

c1c2 ... cn (R) c1

(c2(…(cn

(R)) …))

c1(c2

((R)) c2(c1

((R))

L1(L2

(…(Ln(R)) …)) L1

(R)

c(A1, …, An(R)) A1, …, An

(c(R))

R S S R (⋈, , , )

c(R S) R ⋈c S

c(R S) c(R) S (⋈, )

c(R S) c1(R) c2

(S) (⋈, )

L(R ⋈c S) (A1, …, An(R)) ⋈c (B1, …, Bn

(S))

L(R ⋈c S) L((A1, …, An, A1', …, An'(R)) ⋈c (B1, …, Bn, B1', …, Bn'(S)))

(R S) T R (S T) (⋈, , , )

c(R S) (c(R)) (c(S)) (, , )

L(R S) (L(R)) (L(S)) (, , )

Anwendung als TransformationsregelnZerlegen/Zusammenfassen in Kaskaden von -Operationen

Beseitigen von (zu ⋈)

Projektionsoperationen soweit „nach unten“ wie möglich

Zerlegen/Zusammenfassen in Kaskaden von -Operationen

Blattknoten so vertauschen, dass der mit dem kleinsten Zwischenergebnis zuerst

ausgewertet wird

Selektionsoperationen soweit „nach unten“ (so früh) wie möglich

Page 58: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

58

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

Beispielanfrage (1)

EMPLOYEE(Fname, Lname, SSN, Bdate, Address, Sex, Salary, DNO)

PROJECT(Pname, Pnumber, Plocation, Dnum)

WORKSON(ESSN, PNO, Hours)

Finde den Nachnamen der Angestellten, die nach dem 16.4.58 geboren wurden und an einem Projekt namens „GOM“ arbeiten.

select Lnamefrom Employee, WorksOn, Projectwhere Pname = 'GOM'and Pnumber = PNOand ESSN = SSNand Bdate > 58.04.16

Page 59: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

59

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

Ergebnis der Übersetzung

Beispieloptimierung (1)select Lnamefrom Employee, WorksOn, Projectwhere Pname = 'GOM'and Pnumber = PNOand ESSN = SSNand Bdate > 58.04.16

Lname

Pname=‘GOM‘ Pnumber = PNO ESSN= SSN Bdate > 58.04.16

EMPLOYEE WORKS_ON

PROJECT

Page 60: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

60

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

Anwendung der Regeln c1c2 ... cn (R) c1

(c2(…(cn

(R)) …))

und c(R S) c1(R) c2

(S)

um Selektionen an die tiefste Stelle zu verschieben, an denen die für die Auswertung des Selektionsprädikats benötigten Attribute verfügbar sind.

Beispieloptimierung (1)

Pnumber = PNO

EMPLOYEE

WORKS_ON

PROJECT

Pname=‘GOM‘ESSN=SSN

Bdate>58.04.16

Lname

Page 61: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

61

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

Anwendung der Regeln R ⋈ S S ⋈ R

und (R ⋈ S) ⋈ T R (S ⋈ T)

um restriktivere Join-Operationen vor weniger restriktiven anwenden zu können.

Beispieloptimierung (1)

PROJECT

WORKS_ON

EMPLOYEE

Lname

Pnumber = PNO

ESSN=SSN

Pname=‘GOM‘

Bdate>58.04.16

Page 62: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

62

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

Anwendung der Regel c(R S) R ⋈c S

Beispieloptimierung (1)

PROJECT

WORKS_ONEMPLOYEE

Lname

⋈Pnumber = PNO

⋈ESSN=SSN

Pname=‘GOM‘

Bdate>58.04.16

Page 63: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

63

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

Anwendung der Regel

L(R ⋈c S) L((A1, …, An, A1', …, An'(R)) ⋈c (B1, …, Bn, B1', …, Bn'(S)))

um die Operanden frühzeitig auf die oberhalb noch benötigten Attribute einzuschränken.

Beispieloptimierung (1)

Lname

PROJECT

WORKS_ON

EMPLOYEE

⋈Pnumber = PNO

⋈ESSN=SSN

Pname=‘GOM‘

Bdate>58.04.16

Pnumber ESSN,PNO

SSN,LnameESSN

Page 64: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

64

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

Beispielanfrage (2)

STUDENTEN(MatrNr, Name, Semester)

VORLESUNGEN(VorlNr, Titel, SWS, gelesenVon)

PROFESSOREN(PersNr, Name, Rang, Raum)

HÖREN(MatrNr, VorlNr)

In welchen Semestern sind die Studenten, die Vorlesungen von Sokrates hören?

select distinct s.Semesterfrom Studenten s, hören h, Vorlesungen v, Professoren pwhere p.Name = 'Sokrates'and v.gelesenVon = p.PersNrand v.VorlNr = h.VorlNr and h.MatrNr = s.MatrNr

Page 65: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

65

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

Ergebnis der Übersetzung

Beispieloptimierung (2)

select distinct s.Semesterfrom Studenten s, hören h, Vorlesungen v, Professoren pwhere p.Name = 'Sokrates'and v.gelesenVon = p.PersNrand v.VorlNr = h.VorlNr and h.MatrNr = s.MatrNr

p.Name = ‘Sokrates‘ v.gelesenVon = p.PersNr v.VorlNr = h.VorlNr h.MatrNr = s.MatrNr

s.Semester

STUDENTEN

HÖRENVORLESUNGEN

PROFESSOREN

Page 66: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

66

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

Anwendung der Regel c1c2 ... cn (R) c1

(c2(…(cn

(R)) …))

Beispieloptimierung (2)

h.MatrNr = s.MatrNr

s.Semester

STUDENTEN

HÖRENVORLESUNGEN

PROFESSOREN

v.VorlNr = h.VorlNr

p.Name = ‘Sokrates‘

v.gelesenVon = p.PersNr

Page 67: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

67

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

Beispieloptimierung (2)Anwendung der Regeln c1

(c2((R)) c2

(c1((R))

und c(R S) c1(R) c2

(S)

um Selektionen an die tiefste Stelle zu verschieben, an denen die für die Auswertung des Selektionsprädikats benötigten Attribute verfügbar sind.

h.MatrNr = s.MatrNr

s.Semester

STUDENTEN

HÖREN

VORLESUNGEN

PROFESSOREN

v.VorlNr = h.VorlNr

p.Name = ‘Sokrates‘

v.gelesenVon = p.PersNr

Page 68: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

68

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

Beispieloptimierung (2)

⋈h.MatrNr = s.MatrNr

s.Semester

STUDENTEN HÖREN

VORLESUNGEN PROFESSOREN

⋈v.VorlNr = h.VorlNr

p.Name = ‘Sokrates‘

⋈v.gelesenVon = p.PersNr

Anwendung der Regel c(R S) R ⋈c S

Page 69: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

69

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

STUDENTEN(MatrNr, Name, Semester)

VORLESUNGEN(VorlNr, Titel, SWS, gelesenVon)

PROFESSOREN(PersNr, Name, Rang, Raum)

HÖREN(MatrNr, VorlNr)

Beispieloptimierung (2)Anwendung der Regeln R ⋈ S S ⋈ Rund (R ⋈ S) ⋈ T R (S ⋈ T)

um restriktivere Join-Operationen vor weniger restriktiven anwenden zu können (Optimierung der Join-Reihenfolge).

⋈h.MatrNr = s.MatrNr

s.Semester

STUDENTEN

HÖREN

VORLESUNGEN

PROFESSOREN

⋈v.VorlNr = h.VorlNr

p.Name = ‘Sokrates‘

⋈v.gelesenVon = p.PersNr

Page 70: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

70

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

STUDENTEN(MatrNr, Name, Semester)

VORLESUNGEN(VorlNr, Titel, SWS, gelesenVon)

PROFESSOREN(PersNr, Name, Rang, Raum)

HÖREN(MatrNr, VorlNr)

Beispieloptimierung (2)Anwendung der Regel

L(R ⋈c S) L((A1, …, An, A1', …, An'(R)) ⋈c (B1, …, Bn, B1', …, Bn'(S)))

um frühzeitig die Tupelgröße einzuschränken.

⋈h.MatrNr = s.MatrNr

s.Semester

STUDENTEN

HÖREN

VORLESUNGEN

PROFESSOREN

⋈v.VorlNr = h.VorlNr

p.Name =‘Sokrates‘

⋈v.gelesenVon = p.PersNr

h.MatrNr

Page 71: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

71

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

Kapitel 10.4Kapitel 10.4

Physische AnfrageoptimierungPhysische Anfrageoptimierung

Page 72: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

72

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

Stellung in der Anfragebearbeitung

Scanner, Parser, Sichtauflösung

deklarative SQL-Anfrage

Auswertungsplan (Query Evaluation Plan, QEP) auf Satzzugriffsstrukturen

Ergebnis

Standardisierung

Optimierung

Ausführung DBS-Laufzeitsystem

Planparametri-sierung

Code-Erzeugung

Anfrage in interner Form

algebraischer Ausdruck auf internen Dateien QEP

QEP

Code

Logische Optimierung

Physische Optimierung

Kostenbasier-te Auswahl

Page 73: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

73

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

Kapitel 10.4.1Kapitel 10.4.1

Einige GrundsätzeEinige Grundsätze

Page 74: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

74

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

Basisrelationen: 1. Beispielrelationen sind jeweils gemäss dem NSM in einer

Datei gespeichert, und 2. es sind zusätzlich Indexdateien eingerichtet (Primärindex:

satzschlüsselbasiert, Sekundärindex: Wert nicht satzidentifizierend, Clusterindex: zusätzlich Sätze in geballter Liste), oder

3. gelegentlich ist die Datei nach einem Hashverfahren abgelegt.

Zwischenergebnisse: Hier besteht im Grundsatz Wahlfreiheit bei der

Dateiorganisation. Daher kann es zum Einfügen weiterer Operatoren wie z.B.

Sortierung, Index-Generierung kommen. Somit kann sich der Operatorbaum gegenüber der logischen

Optimierung verändern.

Spielräume bei den Daten

Page 75: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

75

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

Zuordnen physischer Operatoren: Den Operatoren im Operatorbaum müssen

Implementierungen (konkrete Algorithmen) zugeordnet werden.

Die Zuordnung richtet sich bei den Operatoren auf den Blättern (den gespeicherten Relationen) nach deren statisch vorgegebener Dateiorganisation.

Die freie Wahl der Dateiorganisation bei den Zwischenrelationen spiegelt sich in einer entsprechenden Wahlfreiheit bei der Zuordnung der Algorithmen wider.

Spielräume bei den Operatoren

Page 76: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

76

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

Materialisierung: Jeder Knoten wird voll abgearbeitet bevor das Ergebnis

weitergereicht wird. Ergebnis muss daher auf Hintergrundspeicher aufgebaut

werden. Fließverarbeitung (Pipeline):

Ein Operator leitet jedes Ergebnistupel sofort an seinen übergeordneten Operator weiter. Vorteil: Reduktion des Speicherplatzes für die

Zwischenergebnisse, verzahnte Ausführung.

Probleme: Tupelstrom kann an blockierenden Operatoren (Pipeline

Breaker) aufgehalten werden. Das langsamste Glied in der Kette bestimmt die

Geschwindigkeit: Pufferung gelegentlich erforderlich. Daher u.U. Ausweichen auf Hintergrundspeicher notwendig.

Verarbeitungsvarianten (1)

Page 77: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

77

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

Fließverarbeitung schematisch

Verarbeitungsvarianten (2)

R S

...

...

...

T

...

...

...

Page 78: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

78

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

Pipeline-Breaker mit Materialisierung

Verarbeitungsvarianten (3)

R S

...

...

...

T

...

...

...

Page 79: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

79

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

Verarbeitungsvarianten (4)

Pipeline-Breaker: Unäre Operationen

sort Duplikatelimination (unique,distinct) Aggregatoperationen (min,max,sum,...)

Binäre Operationen Mengendifferenz

Je nach Implementierung Join Union

Page 80: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

80

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

Einheitliche Behandlung jedes Knotens:

Vereinheitlichung der Operatoren (1)

Initialisieren, Öffnen der benötigten Eingaben

Beschaffen des nächsten Eingabetupels

(nutzt scan-Operator)

Aufräumen, Schließen der Iteratoren der Eingaberelation, Freigabe von

Speicher, bei Blockieren: Weitergabe des kompletten Ergebnisses

Angaben zur Selektivität

Angaben zu den Kosten

Realisiert beispielsweise über Klassen

Page 81: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

81

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

Beispiel:Pull-basierte Fließverarbeitung

Vereinheitlichung der Operatoren (2)

opennext

ReturnErgebnis

Page 82: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

82

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

Kapitel 10.4.2Kapitel 10.4.2

OperatorzuordnungOperatorzuordnung

Page 83: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

83

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

P: Exact Match (Nicht-Schlüssel) oder Range. R mit entspr. Index

P: Exact Match (Schlüssel). R mit entspr. Index

P: Exact Match oder Range. R mit entspr. Index

immer verwendbar

Selektion

P

R

LinearSelect

R

PrimärIndexSelect

R

SekundärIndexSelect

R

ClusterIndexSelect

R

Falls R Zwischenrelation:Ggf. zusätzl. Indexerzeugung

Page 84: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

84

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

Duplikatelim., R unsortiert

Duplikatelim., R sortiert

Duplikatelim., R mit entspr. Index

immer verwendbar

Projektion

LinearProject

R

SortProj

R

IndexProj

R

Falls R Zwischenrelation: Ggf.zusätzl. Indexerzeugung oder Sortierung

L

RSort

R

Page 85: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

85

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

immer verwendbar

Falls R und/oder S unsortiert, zunächst sortieren

S mit entspr. Index, sonst zunächst Aufbau

immer verwendbar

Verbindung

NestedLoop

R S

IndexJoin

R S

Zwischenrelationen müssen ggf. aufbereitet werden

HashJoin

R S

R S

⋈R.A=S.B

Index

R S

MergeJoin

[SortR.A] [SortS.B]

Simple|Grace|Hybrid

Page 86: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

86

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

Beispiel

⋈h.MatrNr = s.MatrNr

s.Semester

STUDENTEN

HÖREN

VORLESUNGEN

PROFESSOREN

⋈v.VorlNr = h.VorlNr

p.Name = ‘Sokrates‘

⋈v.gelesenVon = p.PersNr

Page 87: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

87

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

Primärindex auf MatrNr

Sekundärindex auf gelesenVon

Beispiel

STUDENTEN

HÖREN

VORLESUNGEN

PROFESSOREN

LinearSelect (p.Name = ‘Sokrates‘)

IndexJoin(v.gelesenVon =

p.PersNr)

Sort(v.VorlNr)

Sort(h.VorlNr)

MergeJoin(v.VorlNr = h.VorlNr)

IndexJoin(h.MatrNr = s.MatrNr)

LinearProject(s.Semester)

Sort(s.Semester)

SortProject(s.Semester)

Page 88: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

88

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

Gelegentlich lassen sich Materialisierungen auch durch Verschmelzen von Operatoren vermeiden.

Beispiele: Kombination von Selektion und Projektion. Kombination einer Selektion mit einer Verbindung, etwa

Integration einer Selektion in die äußere Schleife eines Nested-Loop-Join,

Integration von Selektionen in den Merge-Join.

Kombination von Gruppierung und Aggregierung.

Verschmelzen von Operatoren

Page 89: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

89

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

Kapitel 10.5Kapitel 10.5

Kostenbasierte AuswahlKostenbasierte Auswahl

Page 90: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

90

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

Stellung in der Anfragebearbeitung

Scanner, Parser, Sichtauflösung

deklarative SQL-Anfrage

Auswertungsplan (Query Evaluation Plan, QEP) auf Satzzugriffsstrukturen

Ergebnis

Standardisierung

Optimierung

Ausführung DBS-Laufzeitsystem

Planparametri-sierung

Code-Erzeugung

Anfrage in interner Form

algebraischer Ausdruck auf internen Dateien QEP

QEP

Code

Logische Optimierung

Physische Optimierung

Kostenbasier-te Auswahl

Page 91: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

91

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

Stellung in der Optimierung

(evtl. schrittweises) Aufspannen des

Suchraums

deklarative SQL-Anfrage

Suche

Äquivalente Pläne

„Bester“ (guter) Plan

Logische Optimierung

Physische Optimierung

RevidierteAusgangssituation

Die Wahl des Auswertungsplans ist ein Optimierungsproblem!Lösungsraum: Mehrere Operatorbäume, um nicht günstige Lösungen vorzeitig auszuschließen.

Erweiterung des Lösungsraums: Diverse Zuordnungen von Algorithmen.

Kostenbasierte Auswahl: Aufwand richtet sich danach wie häufig die angestrebte Lösung wiederholt wird. Hoher Aufwand lohnt nur bei parametrisierten Standardanfragen.

Page 92: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

92

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

Optimierungskriterien: Für die Optimierung benötigt man eine Kostenfunktion. Sie berechnet die Gesamtkosten der Anfrage aus den

Kostenabschätzung für die Einzeloperationen. Grobe Abschätzungen wurden in Kapitel 9 gegeben.

In die Kostenabschätzung geht die Größe der Zwischenergebnisse zentral ein. Daher spielen die Selektivitätsabschätzungen (siehe Kapitel 9)

eine wichtige Rolle.

Optimierung: Für jeden Kandidat-Auswertungsplan müssen dessen Kosten

abgeschätzt werden. Gesucht sind daher Optimierungsverfahren, die den

Lösungsraum sehr rasch einschränken, ohne dabei allzu viel gute Lösungen zu verlieren.

Kostenbasierte Auswahl (1)

Page 93: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

93

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

Kostenbasierte Auswahl (2)

(evtl. schrittweises) Aufspannen des

Suchraums

deklarative SQL-Anfrage

Suche

Äquivalente Pläne

„Bester“ (guter) Plan

Logische Optimierung

Physische Optimierung

KostenmodellStatistiken/HistogrammePuffergrößeVerwendeter Rechner

Zielfunktion: Antwortzeit vs. Durchsatz

RevidierteAusgangssituation

Page 94: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

94

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

Schätzung Tupelzahl

Schätzung Aufwand

Schätzung Aufwand

Schätzung Aufwand

Schätzung Aufwand

Schätzung Aufwand Schätzung Aufwand

Schätzung Aufwand

Schätzung Aufwand

Schätzung Aufwand

Schätzung Tupelzahl

Schätzung Tupelzahl

Schätzung Tupelzahl

Schätzung Tupelzahl

Schätzung Tupelzahl

Schätzung Tupelzahl

Schätzung Tupelzahl

Größe(p)

Größe(v)

Größe(h)

Größe(s)

Kostenabschätzung (Beispiel)

STUDENTEN

HÖREN

VORLESUNGEN

PROFESSOREN

LinearSelect (p.Name = ‘Sokrates‘)

IndexJoin(v.gelesenVon =

p.PersNr)

Sort(v.VorlNr)

Sort(h.VorlNr)

MergeJoin(v.VorlNr = h.VorlNr)

IndexJoin(h.MatrNr = s.MatrNr)

LinearProject(s.Semester)

Sort(s.Semester)

SortProject(s.Semester)

Page 95: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

95

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

Join-Reihenfolge

Beobachtung: In allen praktischen Anfragen dominieren die Verbindungsoperationen

Optimierung der Reihenfolge dieser Operationen kritisch für die Anfrageoptimierung.

Join-Modell (Graphische Veranschaulichung):

R S

Äußere (Build-) Relation: Wenn immer möglich die

kleinere Relation

Innere (Probe-) Relation

Page 96: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

96

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

Join-Bäume (1)

R1⋈

⋈ R2

R3R4

R1⋈

⋈R2

R3 R4

R1

⋈ ⋈

R2 R3 R4

Links-orientierter Baum

Rechts-orientierter BaumBuschiger Baum

Page 97: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

97

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

Join-Bäume (2)

R1⋈

⋈ R2

R3R4

R1

⋈ ⋈

R2 R3 R4

Variantenzahl (n: Zahl der Relationen):

(2(n-1))!

(n-1)!n (2(n-1))!/(n-1)!

2 2

5 1680

10 1,761010

20 4,31027

Teilmenge der buschigen Bäume, daher geringere Variantenzahl.Beispiel n=6:Buschige Bäume: 30.240Links-orientierte Bäume: 720

Page 98: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

98

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

Join-Bäume (3)

R1⋈

⋈ R2

R3R4

Links-orientierte Bäume spiegeln das Join-Modell und damit die effizienten Algorithmen wider.

Besitzen besondere Tendenz zur Entwicklung effizienter Auswertungspläne!

Ausreichend zur Entwicklung des Suchraums!

Page 99: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

99

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

Primärindex auf MatrNr

Sekundärindex auf gelesenVon

Umformung des Beispiels

STUDENTEN

HÖREN

VORLESUNGEN

PROFESSOREN

LinearSelect (p.Name = ‘Sokrates‘)

IndexJoin(v.gelesenVon =

p.PersNr)

Sort(v.VorlNr)

Sort(h.VorlNr)

MergeJoin(v.VorlNr = h.VorlNr)

IndexJoin(h.MatrNr = s.MatrNr)

LinearProject(s.Semester)

Sort(s.Semester)

SortProject(s.Semester)

Page 100: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

100

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

Greedy-Suche (1)

Konstruiere die Lösung des vollständigen Plans schrittweise, indem mit jedem Schritt der bisher erzeugte Teilplan durch Hinzunahme einer Verbindung so erweitet wird, dass die geringsten Kosten entstehen. Keine Garantie dass der optimale Plan gefunden wird, aber

es wird ein guter Plan gefunden.

Großer Vorteil: Anzahl der zu betrachtenden Pläne ist gering.

Page 101: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

101

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

Greedy-Suche (2)

Beispiel:

Verbindung der 4 Relationen KUNDE, PRODUKT, LIEFERANT, BESTELLUNG.

Einfache Kostenfunktion: Ergebnisgröße.

Page 102: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

102

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

Greedy-Suche (3)

Schritt 1:

Plan Ergebnisgröße

KUNDE ⋈ PRODUKT 5.000.000

KUNDE ⋈ LIEFERANT 1.000.000

KUNDE ⋈ BESTELLUNG 20.000

PRODUKT ⋈ LIEFERANT 5.000

PRODUKT ⋈ BESTELLUNG 20.000

LIEFERANT ⋈ BESTELLUNG 2.000.000⋈

LIEFERANTPRODUKTSchritt 2:

Plan Ergebnisgröße

(PRODUKT ⋈ LIEFERANT) ⋈ BESTELLUNG

20.000

(PRODUKT ⋈ LIEFERANT) ⋈ KUNDE 5.000.000

BESTELLUNG

Schritt 3: KUNDE

KUNDE

Page 103: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

103

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

Dynamische Programmierung (1)

Prinzip: Zerlege Problem wiederholt in Teilprobleme. Löse jedes Teilproblem optimiert unter Verwendung

„kleinerer“ Teilprobleme. Dieselbe Lösung kann mehrfach verwendet werden, d.h.

Lösungen werden nur einmal entwickelt.

Anwendung auf R1 ⋈ R2 ... ⋈ ⋈ Rn:

Berechne Lösungen für alle Ri und alle Kombinationen Ri

⋈ Rj (da es jeweils nur eine gibt, sind sie definitionsgemäß optimal).

Erweitere schrittweise von optimierten (k-1)-Kombinationen auf k-Kombinationen (k=3,....n).

Page 104: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

104

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

Dynamische Programmierung (2)

Standardverfahren in heutigen relationalen Datenbanksystemen!

Jedoch mit effizienter Aufzählung: Anstatt zunächst alle 2-elem, 3-elem, ..., n-elem Pläne

sequentiell zu enumerieren: Effizientes Verschränken.

Frühzeitiges Abschneiden von Lösungswegen.

Beispiel:

Verbindung der 4 Relationen KUNDE (K), PRODUKT (P), LIEFERANT (L), BESTELLUNG (B).

Einfache Kostenfunktion: Ergebnisgröße.

Page 105: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

105

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

Dynamische Programmierung (3)

Basis:

Menge (k=1) Ergebnisgröße Opt. Plan

{K} 1.000 K

{P} 5.000 P

{L} 100 L

{B} 20.000 B

Menge (k=2) Ergebnisgröße Opt. Plan

{K,P} 5.000.000 K ⋈ P

{K,L} 1.000.000 L ⋈ K

{K,B} 20.000 K ⋈ B

{P,L} 5.000 L ⋈ P

{P,B} 20.000 P ⋈ B

{L,B} 2.000.000 L ⋈ B

Page 106: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

106

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

Dynamische Programmierung (4)

Menge (k=1) Ergebnisgröße Opt. Plan

{K} 1.000 K

{P} 5.000 P

{L} 100 L

{B} 20.000 B

Menge (k=2) Ergebnisgröße Opt. Plan

{K,P} 5.000.000 K ⋈ P

{K,L} 1.000.000 L ⋈ K

{K,B} 20.000 K ⋈ B

{P,L} 5.000 L ⋈ P

{P,B} 20.000 P ⋈ B

{L,B} 2.000.000 L ⋈ B

Induktion (links-orientiert):

In diesem Beispiel weiter verfolgt

Page 107: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

107

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

Dynamische Programmierung (5)

Induktion (links-orientiert):

Menge (k=3) Ergebnisgröße Opt. Plan

{K,B,L} 2.000.000 (K ⋈ B) ⋈ L

{K,B,P} 20.000 (K ⋈ B) ⋈ P

{P,L,K} 5.000.000 (L ⋈ P) ⋈ K

{P,L,B} 20.000 (L ⋈ P) ⋈ B

Summe der bisher in den Zwischenergebnissen aufgelaufenen Kosten.

Opt. Plan Kosten

(K ⋈ B) ⋈ L 2.020.000

(K ⋈ B) ⋈ P 40.000

(L ⋈ P) ⋈ K 5.005.000

(L ⋈ P) ⋈ B 25.000 ((L ⋈ P) ⋈ B) ⋈ K

Letzter Schritt: k=4 ({K,P,L,B}), also nur 1 Ergebnisgröße.

Page 108: Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 10 Kapitel 10 Anfragebearbeitung.

108

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

Dynamische Programmierung (6)

PRODUKTLIEFERANT

BESTELLUNG

KUNDE

((L ⋈ P) ⋈ B) ⋈ K