SS 2004B. König-Ries: KuD6-1 Kapitel 6: Anfragebearbeitung physische Datenstrukturen: B-Bäume...

Post on 05-Apr-2015

109 views 3 download

Transcript of SS 2004B. König-Ries: KuD6-1 Kapitel 6: Anfragebearbeitung physische Datenstrukturen: B-Bäume...

SS 2004 B. König-Ries: KuD 6-1

Kapitel 6: Anfragebearbeitung

physische Datenstrukturen: B-Bäume

AnfragebearbeitungFolien: © Prof. Lockemann, IPD, Uni Karlsruhe

© Prof. Kemper, TU München (Begleitmaterial zu Kapitel 7 des Lehrbuchs)

SS 2004 B. König-Ries: KuD 6-2

Referenzarchitektur

Externes Datenmodell

Anfragebearbeitung

Internes Datenmodell

Satz- u. Satzmengenverwaltung

Physische Datenstrukturen

Zugriffsschicht

Hauptspeicherseiten u. Segmente

Dateien

Dateiverwaltung

Geräteschnittstelle

Scheduler

Recovery-Verwalter

Segment- u. Pufferverwaltung

SS 2004 B. König-Ries: KuD 6-3

betrachtete Aspekte

Externes Datenmodell

Anfragebearbeitung

Internes Datenmodell

Satz- u. Satzmengenverwaltung

Physische Datenstrukturen

Zugriffsschicht

Hauptspeicherseiten u. Segmente

Dateien

Dateiverwaltung

Geräteschnittstelle

Scheduler

Recovery-Verwalter

Segment- u. Pufferverwaltung

SS 2004 B. König-Ries: KuD 6-4

Kapitel 6: Anfragebearbeitung

physische Datenstrukturen: B-Bäume

AnfragebearbeitungFolien: © Prof. Lockemann, IPD, Uni Karlsruhe

SS 2004 B. König-Ries: KuD 6-5

Referenzarchitektur

Externes Datenmodell

Anfragebearbeitung

Internes Datenmodell

Satz- u. Satzmengenverwaltung

Physische Datenstrukturen

Zugriffsschicht

Hauptspeicherseiten u. Segmente

Dateien

Dateiverwaltung

Geräteschnittstelle

Scheduler

Recovery-Verwalter

Segment- u. Pufferverwaltung

SS 2004 B. König-Ries: KuD 6-6

S.. SuchschlüsselD..

Weitere Daten

V.. Verweise (SeitenNr)

SS 2004 B. König-Ries: KuD 6-7

SS 2004 B. König-Ries: KuD 6-8

SS 2004 B. König-Ries: KuD 6-9

Einfügen eines neuen Objekts (Datensatz) in einen B-Baum

SS 2004 B. König-Ries: KuD 6-10

Sukzessiver Aufbau eines B-Baums vom Grad k=2

10 13 19

7

SS 2004 B. König-Ries: KuD 6-11

Sukzessiver Aufbau eines B-Baums vom Grad k=2

7 10 13 19

3

SS 2004 B. König-Ries: KuD 6-12

Sukzessiver Aufbau eines B-Baums vom Grad k=2

7 10 13 19

3

?

SS 2004 B. König-Ries: KuD 6-13

Sukzessiver Aufbau eines B-Baums vom Grad k=2

7 10

3

13 19

?

SS 2004 B. König-Ries: KuD 6-14

Sukzessiver Aufbau eines B-Baums vom Grad k=2

3 7

3

13 19

?10

SS 2004 B. König-Ries: KuD 6-15

Sukzessiver Aufbau eines B-Baums vom Grad k=2

3 7 13 19

?10

SS 2004 B. König-Ries: KuD 6-16

Sukzessiver Aufbau eines B-Baums vom Grad k=2

3 7 13 19

?10

1

SS 2004 B. König-Ries: KuD 6-17

Sukzessiver Aufbau eines B-Baums vom Grad k=2

3 7 13 19

?10

1

SS 2004 B. König-Ries: KuD 6-18

Sukzessiver Aufbau eines B-Baums vom Grad k=2

3 7 13 19

?10

1

SS 2004 B. König-Ries: KuD 6-19

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 3 7 13 19

?10

1

SS 2004 B. König-Ries: KuD 6-20

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 3 7 13 19

?10

2

SS 2004 B. König-Ries: KuD 6-21

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 3 7 13 19

?10

2

2

SS 2004 B. König-Ries: KuD 6-22

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 3 7 13 19

?10

2

2

SS 2004 B. König-Ries: KuD 6-23

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 3 7 13 19

?10

4

SS 2004 B. König-Ries: KuD 6-24

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 3 7 13 19

?10

4

4

SS 2004 B. König-Ries: KuD 6-25

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 3 7 13 19

?10

4

4

SS 2004 B. König-Ries: KuD 6-26

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 3 7 13 19

?10

4

4

SS 2004 B. König-Ries: KuD 6-27

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 3 7 13 19

?3 10

4

4

SS 2004 B. König-Ries: KuD 6-28

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 13 19

?3 10

4 7

SS 2004 B. König-Ries: KuD 6-29

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 13 19

?3 10

11

4 7

SS 2004 B. König-Ries: KuD 6-30

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 11 13 19

?3 10

4 7

SS 2004 B. König-Ries: KuD 6-31

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 11 13 19

?3 10

21

4 7

SS 2004 B. König-Ries: KuD 6-32

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 11 13 19

?3 10

21

4 7

SS 2004 B. König-Ries: KuD 6-33

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 11 13 19 21

?3 10

12

4 7

SS 2004 B. König-Ries: KuD 6-34

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 11 13 19 21

?3 10

12

4 7 12

SS 2004 B. König-Ries: KuD 6-35

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 11 13 19 21

?3 10

12

4 7 12

SS 2004 B. König-Ries: KuD 6-36

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 11 13 19 21

?3 10

12

4 7 12

SS 2004 B. König-Ries: KuD 6-37

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 11 13 19 21

?3 10 13

12

4 7 12

SS 2004 B. König-Ries: KuD 6-38

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 11 19 21

?3 10 13

12

4 7 11 12

SS 2004 B. König-Ries: KuD 6-39

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 19 21

?3 10 13

12

4 7 11 12

SS 2004 B. König-Ries: KuD 6-40

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 19 21

?3 10 13

14

4 7 11 12

SS 2004 B. König-Ries: KuD 6-41

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 14 19 21

?3 10 13

14

4 7 11 12

SS 2004 B. König-Ries: KuD 6-42

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 14 19 21

?3 10 13

15

4 7 11 12

SS 2004 B. König-Ries: KuD 6-43

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 14 15 19 21

?3 10 13

20

4 7 11 12

SS 2004 B. König-Ries: KuD 6-44

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 14 15 19 21

?3 10 13

20

4 7 11 12

20

SS 2004 B. König-Ries: KuD 6-45

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 14 15 19 21

?3 10 13

20

4 7 11 12

20

SS 2004 B. König-Ries: KuD 6-46

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 14 15 19 21

?3 10 13 19

20

4 7 11 12

20

SS 2004 B. König-Ries: KuD 6-47

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 14 15

?3 10 13 19

20

4 7 11 12

20 21

SS 2004 B. König-Ries: KuD 6-48

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 14 15

?3 10 13 19

5

4 7 11 12

20 21

SS 2004 B. König-Ries: KuD 6-49

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 14 15

?3 10 13 19

5

4 7 11 12

20 21

SS 2004 B. König-Ries: KuD 6-50

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 14 15

?3 10 13 19

5

4 5 7 11 12

20 21

SS 2004 B. König-Ries: KuD 6-51

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 14 15

?3 10 13 19

6

4 5 7 11 12

20 21

SS 2004 B. König-Ries: KuD 6-52

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2 14 15

?3 10 13 19

6

4 5 6 7 11 12

20 21

SS 2004 B. König-Ries: KuD 6-53

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2

14 15

?3 10 13 19

4 5 6 7 11 12

20 21

8

SS 2004 B. König-Ries: KuD 6-54

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2

14 15

?3 10 13 19

4 5 6 7 11 12

20 21

8

8

SS 2004 B. König-Ries: KuD 6-55

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2

14 15

?3 10 13 19

4 5 6 7 11 12

20 21

8

8

SS 2004 B. König-Ries: KuD 6-56

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2

14 15

?3 10 13 19

4 5 6 7 11 12

20 21

8

8

SS 2004 B. König-Ries: KuD 6-57

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2

14 15

?3 10 13 19

6 7 11 12

20 21

8

84 5

SS 2004 B. König-Ries: KuD 6-58

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2

14 15

?3 10 13 19

7 8 11 12

20 21

6

64 5

SS 2004 B. König-Ries: KuD 6-59

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2

14 15

?3 10 13 19

7 8 11 12

20 21

6

4 5

SS 2004 B. König-Ries: KuD 6-60

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2

14 15

?3 10 13 19

7 8 11 12

20 21

6

4 5

SS 2004 B. König-Ries: KuD 6-61

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2

14 15

?3 10 13 19

7 8 11 12

20 21

6

4 5

SS 2004 B. König-Ries: KuD 6-62

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2

14 15

?3 10 13 19

7 8 11 12

20 21

6

4 5

3 6

SS 2004 B. König-Ries: KuD 6-63

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2

14 15

?13 19

7 8 11 12

20 21

10

4 5

3 6

SS 2004 B. König-Ries: KuD 6-64

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2

14 15

?13 19

7 8 11 12

20 21

4 5

3 6

10

SS 2004 B. König-Ries: KuD 6-65

Sukzessiver Aufbau eines B-Baums vom Grad k=2

1 2

14 15

?13 19

7 8 11 12

20 21

4 5

3 6

10

10

SS 2004 B. König-Ries: KuD 6-66

eigentlich…

.. geht es jetzt noch weiter. Man kann in einen Baum nämlich nicht nur einfügen, sondern auch

daraus löschen. Das ist aber nicht ganz einfach, lassen wir hier mal weg. Bei Interesse können Sie das Verfahren in jedem Datenbanklehrbuch

(z.B. dem von Kemper/Eickler) nachlesen.

SS 2004 B. König-Ries: KuD 6-67

Verwendung eines B-Baums

1 2

14 15

?13 19

7 8 11 12

20 21

4 5

3 6

10

10

SS 2004 B. König-Ries: KuD 6-68

Kapitel 6: Anfragebearbeitung

physische Datenstrukturen

AnfragebearbeitungFolien: © Prof. Lockemann, IPD, Uni Karlsruhe

SS 2004 B. König-Ries: KuD 6-69

Implementierung der relationalen Operatoren

Relationale Operatoren können durch Satzmengenverwaltung nicht direkt ausgeführt werden, da diese nur navigierende Such- und Zugriffsoperationen für individuelle Kollektionen anbietet.

Anfragebearbeitung muss deshalb geeignete Operator-Implementierung auswählen, die die Funktionalität des Operators möglichst effizient erbringt.

Kritisch ist vor allem Implementierung der binären Operatoren (Verbindung, Vereinigung, Durchschnitt, Differenz), da potenziell quadratische Laufzeit.

SS 2004 B. König-Ries: KuD 6-70

Selektion (1)

Sequenzielle Selektion Schleife über alle Tupel der Relation. Ergebnis-Satzmenge kann vollständige Datensätze oder nur

Verweise (Satz-Identifikatoren) auf qualifizierende Ausgangs-Datensätze enthalten.

Aufwand O(|R|), wobei R Eingaberelation. Bei vertikaler Fragmentierung und Einbezug mehrerer Attribute in

die Selektionsbedingung sind ggf. zusätzliche Verbindungen mit entsprechend höherer Laufzeit erforderlich.

SS 2004 B. König-Ries: KuD 6-71

Selektion (2)

Indexbasierte Selektion Bei einfacher Selektionsbedingung der Form Attributi Konstante

kann Direktzugriff erfolgen, sofern unterliegende Datenstruktur wertbasierten Zugriff über Attributi unterstützt.

Aufwand O(log|R|) + Anzahl der Ergebnistupel, bei Selektion auf Gleichheit und Einsatz einer Hashtabelle als Indexstruktur sogar O(|1|) + Anzahl der Ergebnistupel.

Bei booleschen Kombinationen von Vergleichen getrennte Auswertung der einzelnen Vergleiche und anschließend Bildung des Durchschnitts bzw. der Vereinigung der Ergebnisse.

SS 2004 B. König-Ries: KuD 6-72

Projektion

Sequenzieller Durchlauf, Aufwand O(|R|). Bei Duplikat-Elimination (select distinct) ist anschließender

Sortierlauf und weiterer sequenzieller Durchlauf zur Duplikatentfernung notwendig, Aufwand in diesem Fall O(R log|R|).

SS 2004 B. König-Ries: KuD 6-73

Geschachtelte Verbindung (1)

Geschachtelte Schleife, in der jeder Datensatz in Datei R (hier: BUCHUNG) mit jedem Datensatz in S (hier: FLUG) verglichen wird:

Iterator bu = BUCHUNG.createIterator();Tupel tb, tf;while bu.hasNext() {

tb = bu.get();bu.next();Iterator fl = FLUG.createIterator();while fl.hasNext() {

tf = fl.get();fl.next();if tb.flugNr = tf.flugNr then ERG.insert(tbtf);

}}

SS 2004 B. König-Ries: KuD 6-74

Geschachtelte Verbindung (2)

Aufwand: Zahl der Satzzugriffe: |R|+(|R||S|) = |R|(1+|S|). Seien auf einer Seite nR bzw. nS Sätze untergebracht. Dann Zahl

der Hintergrundspeicherzugriffe |R|/nR (1+|S|/nS).

R sollte daher die kleinere Relation sein. Erfordert gebündelte Satzspeicherung.

SS 2004 B. König-Ries: KuD 6-75

Geschachtelte Verbindung mit Direktzugriff

Geschachtelte Schleife, in der für jeden Datensatz in R der oder die passenden Datensätze in S anhand eines Index aufgefunden werden:

Iterator bu = BUCHUNG.createIterator();Tupel tb, tf;while bu.hasNext() {

tb = bu.get ();tf := FLUG.getKey(flugNr,tb.flugNr);if erfolgreich then ERG.insert(tbtf);bu.next();

}

SS 2004 B. König-Ries: KuD 6-76

Geschachtelte Verbindung mit Direktzugriff

Aufwand: Unterliegende Datenstruktur für S muss wertbasierten Zugriff für

die in die Verbindung eingehenden Attribute unterstützen. Aufwand O (|R|) (Hash) oder O(|R| log|S|) (B*-Baum). R (äußere Schleife) sollte daher die kleinere Relation sein. Hash-Join: Zwischenrelation nach einem Hashverfahren erstellen.

SS 2004 B. König-Ries: KuD 6-77

Abb. externes internes Datenmodell

Wesentliche Abbildungsaufgaben: Abbildung von Relationen auf Satzmengen, Übersetzung von SQL-Anfragen in interne Operator-Ausdrücke.

Anfrage-Übersetzung erledigt intern: Behandlung von Sichten (Definition wird in Anfrage eingearbeitet), Überwachung von Konsistenzbedingungen (ggf. zusätzliche

Operatoraufrufe), Durchsetzung der Schutzmechanismen (Rechte-Überprüfung bei

Übersetzung der Anfrage). Im Folgenden zunächst Betrachtung der Abbildung von Relationen auf

Satzmengen.

SS 2004 B. König-Ries: KuD 6-78

Übersetzung von SQL-Anfragen (1)

Grundsätzliches Problem: SQL ist deklarative Sprache und gibt keinen Algorithmus vor. Intern wird aber ausführbares Programm benötigt.

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

kapseln und als Basis-Bausteine eines imperativen Programms dienen.

Imperative Programme sind dann Bäume solcher Operatoren. Ordne jeder Grammatikregel der deklarativen Sprache

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

Optimiere aus Übersetzung resultierenden Operatorbaum durch Ausnutzung von Äquivalenz-Beziehungen, die in der Algebra gelten.

SS 2004 B. König-Ries: KuD 6-79

Übersetzung von SQL-Anfragen (2)

Konkretes Vorgehen zur Übersetzung von SQL: Als Operator-Algebra dient (zunächst) die relationale Algebra. Da Grammatik von SQL ziemlich komplex ist, werden Ausdrücke

zunächst standardisiert (in bestimmte Standardformen überführt). Für Standardformen erfolgt Übersetzung anhand von Syntaxbaum.

Im folgenden einige Beispiele für einfache Umformungsregeln.

SS 2004 B. König-Ries: KuD 6-80

Grundmuster der SQL-Übersetzung

Select-Ausdruck

select A1, A2,..., Anfrom R1, R2,..., Rmwhere B

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.

SS 2004 B. König-Ries: KuD 6-81

Grundmuster der SQL-Übersetzung

Select-Ausdruck

select A1, A2,..., Anfrom R1, R2,..., Rmwhere B

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.

ignorieren wir mal…

SS 2004 B. König-Ries: KuD 6-82

Einfache Anfragen (2)

Einfache Anfragen können rekursiv in relationale Algebra übersetzt werden: Basistabellen werden durch Referenzen auf die entsprechenden

internen Dateien ersetzt. Eine Folge einfacher Anfragen in einer from-Klausel wird in das

Kartesische Produkt überführt. select-Ausdruck (evt. mit Gruppierung) wird in Kombination aus

Selektions- und Projektionsoperator übersetzt, die auf die übersetzte from-Klausel angewendet werden.

Gruppierung wird dabei als zusätzlicher Operator übersetzt, da in der relationalen Algebra nicht direkt abbildbar.

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

SS 2004 B. König-Ries: KuD 6-83

Übersetzung einfacher Anfragen: Beispiel

Beispiel: Interne Datei FRA_FLÜGE entspricht dem SQL-Ausdruck:select flugNr, nach, abflugszeit, ankunftszeit, ticketNr, datum

from FLUG, BUCHUNG

where von = "FRA"

and FLUG.flugNr = BUCHUNG.flugNr;

Die Anfrage ist bereits einfach und kann geradewegs in den algebraischen Ausdruck

flugNr,nach,abflugszeit,ankunftszeit,ticketNr,datum

(von="FRA" BUCHUNG.flugNr =FLUG.flugNr (BUCHUNG FLUG) )

übersetzt werden.

SS 2004 B. König-Ries: KuD 6-84

Anfrageoptimierung (1)

Konkretes Vorgehen nach der Übersetzung von SQL: Erhaltener Operatorbaum wird in algebraischer

Optimierungsphase gemäß Regeln der relationalen Algebra optimiert.

In anschließender nicht-algebraischer Optimierungsphase werden spezifische Operator-Implementierungen ausgewählt und weitere Operatoren wie z.B. Sortierung, Index-Generierung etc. eingefügt.

SS 2004 B. König-Ries: KuD 6-85

Algebraische Optimierung (1)

Ziel: Transformation des Operatorbaums in äquivalenten Baum, der effizienter auszuführen ist.

Anwendbare Gesetze der relationalen Algebra (Auszug): Verbindung ist kommutativ und assoziativ. Selektionen und Projektionen können zerlegt und

zusammengefasst werden. Projektion kommutiert mit Selektion, Verbindung und Vereinigung,

solange benötigte Attribute nicht herausprojiziert werden. Selektion kommutiert mit Verbindung, Vereinigung, Differenz und

Gruppierung (solange die Selektionsbedingung sich nur auf die Gruppierungsattribute bezieht).

Kartesisches Produkt gefolgt von Selektion ergibt -Verbindung.

SS 2004 B. König-Ries: KuD 6-86

Algebraische Optimierung (2)

Problem bei der Optimierung: Ausführungskosten eines bestimmten Operatorbaums lassen sich nur schwer schätzen.

Benötigt werden u.a. Informationen über: Größe der Ausgangstabellen, Größe der verbleibenden Tabellen nach Selektion oder Projektion, Treffer-Rate bei einer Verbindung, Ausführungskosten von Operationen (hängen stark von Algorithmus

ab, der aber in dieser Optimierungsphase noch nicht betrachtet wird).

Pragmatisches Vorgehen: Verwende „Kochrezepte“, die mit hoher Wahrscheinlichkeit die Größe der Zwischenergebnisse reduzieren.

SS 2004 B. König-Ries: KuD 6-87

Algebraische Optimierung (3)

Faustformeln für sinnvolle Transformationen: Führe Selektionen so früh wie möglich durch. Spalte Selektionen, die auf Attribute mehrerer Relationen Bezug

nehmen, in eine Folge von Selektionen auf, die jeweils nur auf Attribute einer Relation Bezug nehmen. (Dann lässt sich nämlich die erste Regel besser anwenden.)

Fasse kartesische Produkte und Selektionen möglichst zu -Verbindungen zusammen.

Führe Projektionen so früh wie möglich (aber nach eventuellen Selektionen) aus.

Füge ggf. zusätzliche Projektionen ein, um nicht mehr benötigte Attribute so früh wie möglich zu entfernen.

SS 2004 B. König-Ries: KuD 6-88

Algebraische Optimierung: Beispiel

FLUG

flugNr,nach,abflugszeit,ankunftszeit,ticketNr,datum

von = "FRA" FLUG.flugNr = BUCHUNG.flugNr

BUCHUNG

von = "FRA"

flugNr, nach, abflugszeit,ankunftszeit

FLUG BUCHUNG

flugNr,ticketNr,datum

SS 2004 B. König-Ries: KuD 6-89

Nicht-algebraische Optimierung

Aufgabe: Auswahl geeigneter Operator-Implementierungen sowie weitere Optimierung des Operatorbaums.

Handlungsmöglichkeiten (Auswahl): Einfügen von Sortierläufen, um Mischverbindung zu ermöglichen, Erzeugen eines temporären Index, um Verbindung mit Direktzugriff

zu ermöglichen, Änderung der Reihenfolge von komplexen Selektionsbedingungen, Änderung der Reihenfolge von Verbindungen,

Wesentliches Entscheidungskriterium: Größe der erzeugten Zwischenergebnisse.

SS 2004 B. König-Ries: KuD 6-90

Nicht-algebraische Optimierung: Beispiel

FLUG

flugNr,nach,abflugszeit,ankunftszeit,ticketNr,datum

von = "FRA" FLUG.flugNr = BUCHUNG.flugNr

BUCHUNG

von = "FRA"

INDEX(BUCHUNG)

INDEX(FLUG)

flugNr,nach,abflugszeit,ankunftszeit,ticketNr,datum

FLUG BUCHUNG

SS 2004 B. König-Ries: KuD 6-91

Nicht-algebraische Optimierung: Beispiel

FLUG

flugNr,nach,abflugszeit,ankunftszeit,ticketNr,datum

von = "FRA" FLUG.flugNr = BUCHUNG.flugNr

BUCHUNG

von = "FRA"

flugNr, nach, abflugszeit,ankunftszeit

flugNr flugNr

flugNr, ticketNr,datum

FLUG BUCHUNG

sort sort