Sie sind auf Seite 1von 11

Fakultät für Informatik

Professur Datenverwaltungssysteme

Datenbanken Grundlagen
Übung 11, Thema 6:
Optimierung
dvs.informatik.tu-chemnitz.de

Chemnitz ∙ 20.01.2021 ∙ Florian Hahn, Daniel Richter www.tu-chemnitz.de/informatik/DVS


Fakultät für Informatik
Professur Datenverwaltungssysteme

Teil A: Lösungen

dvs.informatik.tu-chemnitz.de

Chemnitz ∙ 20.01.2021 ∙ Florian Hahn, Daniel Richter www.tu-chemnitz.de/informatik/DVS


Fakultät für Informatik
Professur Datenverwaltungssysteme

Teil B: Theorie

dvs.informatik.tu-chemnitz.de

Chemnitz ∙ 20.01.2021 ∙ Florian Hahn, Daniel Richter www.tu-chemnitz.de/informatik/DVS


Fakultät für Informatik
Professur Datenverwaltungssysteme

Optimierung von Datenbankabfragen

• Grundlage bildet immer die relationale Algebra mit ihren Operatoren


• Bei jeder Optimierung werden die lesenden und schreibenden
Zugriffe beachtet
• Verschiedene Ansätze der Optimierung
• Regelbasierte Optimierung wie Heuristik und kostenbasierte
Optimierung durch optimale Joinreihenfolge
• Beispiele: Reihenfolge der Joins beachten, äquivalente Ausdrücke
umschreiben, Joinalgorithmen, Zugriffsart der Tabellen, Join
Ausdrücke beachten
• Anwendung: Selektionen aufteilen, Selektionen so weit unten wie
möglich, Projektionen so weit unten wie möglich,
Duplikateneleminierung entfernen, Kreuzprodukt zu Join
zusammenfassen, optimale Joinreihenfolge

4 www.tu-chemnitz.de/informatik/DVS
Fakultät für Informatik
Professur Datenverwaltungssysteme

Teil C: Live

dvs.informatik.tu-chemnitz.de

Chemnitz ∙ 20.01.2021 ∙ Florian Hahn, Daniel Richter www.tu-chemnitz.de/informatik/DVS


Fakultät für Informatik
Professur Datenverwaltungssysteme

Aufgabe 1
Betrachte die durch den folgenden Operatorbaum dargestellte Anfrage zu den Relationen Kunde
und Auftrag, zu welchen weiterhin bekannt sind:
• Kunde (Name, Kadr, Konto) umfasst π[Name, Konto]
100 Tupel, wovon 5 auf eine Seite passen |
• Auftrag (KName, Ware, Menge) umfasst σ[Name = KName ∧ Ware = 'Kaffee‘]
10.000 Tupel, wovon 10 auf eine Seite passen |
• 50 Aufträge für die Ware Kaffee existieren ×
• 50 Tupel (KName, Konto) passen auf eine Seite / \
• 3 Tupel Kunde × Auftrag passen auf eine Seite Kunde Auftrag
• Für jede Relation steht ein Puffer für genau eine Seite zur Verfügung
• es werden nur ganze Tupel auf einer Seite gespeichert
• ein Seitenzugriff dauert lesend 1 ms und schreibend 2 ms
a) Berechne die Zahl der Seitenzugriffe (Lesen, Schreiben) für die Auswertung des
angegebenen Operatorbaums bei Zwischenspeicherung aller Zwischenergebnisse.
b) Optimiere den Operatorbaum und berechne die Seitenzugriffszahl erneut.
c) Um welchen Faktor ist das optimierte Vorgehen schneller?

6 www.tu-chemnitz.de/informatik/DVS
Fakultät für Informatik
Professur Datenverwaltungssysteme

Aufgabe
Musterlösung
• Kunde (Name, Kadr, Konto) umfasst 100 Tupel, wovon 5 auf eine Seite passen
• Auftrag (KName, Ware, Menge) umfasst 10.000 Tupel, wovon 10 auf eine Seite passen
• 50 Aufträge für die Ware Kaffee existieren
• 50 Tupel (KName, Konto) passen auf eine Seite
• 3 Tupel Kunde × Auftrag passen auf eine Seite
a) Berechne die Zahl der Seitenzugriffe (Lesen, Schreiben) für die Auswertung des angegebenen Operatorbaums
bei Zwischenspeicherung aller Zwischenergebnisse.
R1 := Kunde × Auftrag π[Name, Konto]
Lesen: (100 / 5 * 10.000 / 10) = 20.000 |
Schreiben: (100 * 10.000) / 3 = 333.334 σ[Name = KName ∧ Ware = 'Kaffee']
R2 := σ[Name = KName ∧ Ware = 'Kaffee'] R1 |
Lesen: 333.334 ×
Schreiben: 50 / 3 = 17 / \
ERG := π[Name, Konto] R2 Kunde Auftrag
Lesen: 17
Schreiben: 50 / 50 = 1
Seitenzugriffe: 353.351 (Lesen) + 333.352 (Schreiben) = 686.703 (Gesamt)

7 www.tu-chemnitz.de/informatik/DVS
Fakultät für Informatik
Professur Datenverwaltungssysteme

Aufgabe
Musterlösung
• Kunde (Name, Kadr, Konto) umfasst 100 Tupel, wovon 5 auf eine Seite passen
• Auftrag (KName, Ware, Menge) umfasst 10.000 Tupel, wovon 10 auf eine Seite passen
• 50 Aufträge für die Ware Kaffee existieren
• 50 Tupel (KName, Konto) passen auf eine Seite
• 3 Tupel Kunde × Auftrag passen auf eine Seite
b) Optimiere den Operatorbaum und berechne die Seitenzugriffszahl erneut.
R1 := σ[Ware = 'Kaffee'] Auftrag π[Name, Konto]
Lesen: 10.000 / 10 = 1.000 |
Schreiben: 50 / 10 = 5 ⋈[Name = KName]
R2 := Kunde ⋈[Name = KName] R1 / \
Lesen: 5 * 100 / 5 = 100 Kunde σ[Ware = 'Kaffee']
Schreiben: 50 / 3 = 17 |
ERG := π[Name, Konto] R2 Auftrag
Lesen: 17
Schreiben: 50 / 50 = 1
Seitenzugriffe: 1.117 (Lesen) + 23 (Schreiben) = 1.140 (Gesamt)

8 www.tu-chemnitz.de/informatik/DVS
Fakultät für Informatik
Professur Datenverwaltungssysteme

Aufgabe
Musterlösung
Hinweis: ein Seitenzugriff dauert lesend 1 ms und schreibend 2 ms
c)Um welchen Faktor ist das optimierte Vorgehen schneller?
Dauer ursprünglich:
353.351 * 1 ms + 333.352 * 2 ms = 1.020.055 ms (17 min)
Dauer optimiert:
1.117 * 1 ms + 23 * 2 ms = 1.163 ms (~1,2 sec)
Faktor schneller:
1.020.055 ms / 1.163 ms = 877

9 www.tu-chemnitz.de/informatik/DVS
Fakultät für Informatik
Professur Datenverwaltungssysteme

Teil D: Hausaufgaben

dvs.informatik.tu-chemnitz.de

Chemnitz ∙ 20.01.2021 ∙ Florian Hahn, Daniel Richter www.tu-chemnitz.de/informatik/DVS


Fakultät für Informatik
Professur Datenverwaltungssysteme

Frei

Chemnitz ∙ 20.01.2021 ∙ Florian Hahn, Daniel Richter www.tu-chemnitz.de/informatik/DVS

Das könnte Ihnen auch gefallen