Anfrageoptimierung (logisch) - Institute for Web Science and

Werbung
Institute for Web Science & Technologies – WeST
Grundlagen der Datenbanken
Anfrageoptimierung
Logische Optimierung
Dr. Thomas Gottron
Wintersemester 2012/13
Ablauf der Anfrageoptimierung
Deklarative
Anfrage
SQL
Spezifikation der Anfrage
Scanner
Parser
Sichtenauflösung
Algebraischer
Ausdruck
RA
was gehört zur
Ergebnismenge?
AnfrageOptimierer
AuswertungsPlan (QEP)
Codeerzeugung
Ausführung
Anfrageoptimierung
Thomas Gottron
Operatorbaum
wie wird die
Ergebnismenge berechnet?
GLDB 2012/13
2
Abstraktionsebenen
Konzeptuelle Ebene
Keine Abfragen
Logische Ebene
Logische Optimierung
(Modellabhängig)
Physische Ebene
Physische Optimierung
(Implementation)
Anfrageoptimierung
Thomas Gottron
GLDB 2012/13
3
Logische Optimierung
Anfrageoptimierung
Thomas Gottron
GLDB 2012/13
4
Ziele der logischen Optimierung
 Reduktion der Datenmenge
 Reduktion der Zugriffe auf Hintergrundspeicher
• Nur benötigte Daten laden
 Reduktion der Notwendigkeit der Auslagerung
• So wenig Daten wie nötig vorhalten
 Reduktion der auszuführenden Vergleiche
• So wenig Arbeitsschritte wie möglich
 Umformung einer einfachen Algebraischen Ausgangsform
 Rechenregeln der Relationalen Algebra
 Optimale Lösung kann i.d.R. nicht effizient bestimmt
werden
 Heuristiken (Vermeiden des schlimmsten Falls)
Anfrageoptimierung
Thomas Gottron
GLDB 2012/13
5
Kanonische Übersetzung
SELECT A1, ..., An
FROM R1, ..., Rk
WHERE P
Rk
R3
R1
Anfrageoptimierung
Thomas Gottron
R2
GLDB 2012/13
6
Beispiel: Kanonische Übersetzung
SELECT Titel
FROM Professoren, Vorlesungen
WHERE Name = ´Popper´ AND
2 Zeilen
1 Spalten
PersNr = gelesenVon
2 Zeilen
15 Spalten
54612
15
Anfrageoptimierung
Zeilen
Spalten
Professoren
Vorlesungen
164
5
333
10
Thomas Gottron
Zeilen
Spalten
Zeilen
Spalten
GLDB 2012/13
7
Erste Optimierungsidee: frühe Selektion
SELECT Titel
FROM Professoren, Vorlesungen
WHERE Name = ´Popper´ AND
2
PersNr = gelesenVon
2
333
Vorlesungen
1
Professoren
333
164
𝜋[Titel] 𝜎PersNr=gelesenVon
Anfrageoptimierung
𝜎Name=′Popper′ Professoren
Thomas Gottron
× Vorlesungen
GLDB 2012/13
8
Zweite Optimierungsidee: Projektionen einfügen
SELECT Titel
1
FROM Professoren, Vorlesungen
WHERE Name = ´Popper´ AND
3
PersNr = gelesenVon
3
𝜋[PersNr]
1
2
𝜋[Titel, gelesenVon]
Vorlesungen
5
Professoren
10
5
𝜋[Titel] 𝜎PersNr=gelesenVon
𝜋 PersNr
𝜎Name=′Popper′ Professoren
× 𝜋 Titel,gelesenVon Vorlesungen
Anfrageoptimierung
Thomas Gottron
GLDB 2012/13
9
Dritte Optimierungsidee: Join statt Kreuzprodukt
SELECT Titel
2
1
FROM Professoren, Vorlesungen
WHERE Name = ´Popper´ AND
PersNr = gelesenVon
2
3
⋈
1
1
𝜋[PersNr]
1
𝜋[Titel, gelesenVon]
333
2
Vorlesungen
5
Professoren
333
10
164
5
𝜋[Titel] 𝜋 PersNr
𝜎Name=′Popper′ Professoren
⋈ 𝜋 Titel,gelesenVon Vorlesungen
Anfrageoptimierung
Thomas Gottron
GLDB 2012/13
10
Vierte Optimierungsidee: Reihenfolge der Joins
SELECT x
FROM A, B, C
WHERE A.y = B.y AND B.z= C.z
𝜋[x]
𝜋[x]
Gute
Abschätzung
nötig
⋈
⋈
3
⋈
80
⋈
A
B
C
1000
100
5
A
1000
𝜋[x] 𝐴 ⋈ 𝐵 ⋈ 𝐶
Anfrageoptimierung
3
B
4
C
100
5
𝜋[x] 𝐴 ⋈ 𝐵 ⋈ 𝐶
Thomas Gottron
GLDB 2012/13
11
Heuristik: Anfrageoptimierung durch Umformung
𝜎⇢
𝜎1 𝜎2
1. Selektionen aufbrechen
𝜎↓
2. Selektionen nach unten schieben
𝜎×
⇢⋈
3. Selektion und Kreuzprodukt zu Join
zusammenfassen
4. Joinreihenfolge optimieren
𝜋
∗
𝜋↓
5. Projektionen einfügen
6. Projektionen nach unten schieben
Anfrageoptimierung
Thomas Gottron
GLDB 2012/13
12
Äquivalenzerhaltende Umformungsregeln
 Aufbrechen von Konjunktionen in Selektionen
𝜎𝑃1 ∧𝑃2 𝑅 = 𝜎𝑃1 𝜎𝑃2 𝑅
𝜎⇢
𝜎1 𝜎2
 Selektionen sind kommutativ
𝜎𝑃1 𝜎𝑃2 𝑅 = 𝜎𝑃2 𝜎𝑃1 𝑅
𝜎↓
 Projektionskaskaden
𝜋 𝐴1 𝜋 𝐴2 ⋯ 𝜋 𝐴𝑛 𝑅 = 𝜋 𝐴1 𝑅
𝜋∗
Kaskade nur definiert, wenn𝐴1 ⊆ 𝐴2 ⊆ ⋯ ⊆ 𝐴𝑛
 Vertauschen von Projektion und Selektion
𝜋 𝐴 𝜎𝑃 𝑅 = 𝜎𝑃 𝜋 𝐴 𝑅
𝜎↓
𝜋↓
Anfrageoptimierung
Wenn die Attribute aus 𝑃 in 𝐴 liegen
Thomas Gottron
GLDB 2012/13
13
Äquivalenzerhaltende Umformungsregeln
 Selektion an Join / Kreuzprodukt vorbeischieben
𝜎𝑃 𝑅1 × 𝑅2 = 𝜎𝑃 𝑅1 × 𝑅2
𝜎↓
𝜎𝑃 𝑅1 ⋈ 𝑅2 = 𝜎𝑃 𝑅1 ⋈ 𝑅2
Wenn 𝑃 nur Attribute aus 𝑅1 betrifft
 Projektion an Join vorbeischieben
𝜋 𝐴 𝑅1 ⋈ 𝑅2 = 𝜋 𝐴 𝜋 𝐴1 𝑅1 ⋈ 𝜋 𝐴2 𝑅2
𝜋↓
Wobei 𝐴1 nur Attribute aus 𝑅1 betrifft und
Joinattribute erhält (ebenso für 𝐴2 ). Joinattribute
werden nachgelagert über 𝜋 𝐴 ausgeblendet.
 Vertauschen von Projektion und Vereinigung
𝜋 𝐴 𝑅1 ∪ 𝑅2 = 𝜋 𝐴 𝑅1 ∪ 𝜋 𝐴 𝑅2
𝜋↓
Anfrageoptimierung
Thomas Gottron
GLDB 2012/13
14
Äquivalenzerhaltende Umformungsregeln
 Kommutativität:
𝑅1 × 𝑅2 = 𝑅2 × 𝑅1
𝑅1 ∩ 𝑅2 = 𝑅2 ∩ 𝑅1
𝑅1 ∪ 𝑅2 = 𝑅2 ∪ 𝑅1
𝑅1 ⋈ 𝑅2 = 𝑅2 ⋈ 𝑅1
 Assoziativität:
𝑅1 ×
𝑅1 ∩
𝑅1 ∪
𝑅1 ⋈
𝑅2 × 𝑅3 = 𝑅1 × 𝑅2 × 𝑅3
𝑅2 ∩ 𝑅3 = 𝑅1 ∩ 𝑅2 ∩ 𝑅3
𝑅2 ∪ 𝑅3 = 𝑅1 ∪ 𝑅2 ∪ 𝑅3
𝑅2 ⋈ 𝑅3 = 𝑅1 ⋈ 𝑅2 ⋈ 𝑅3
 Konkrete Ausführung benötigt Kostenmodelle und
Größenabschätzungen
Anfrageoptimierung
Thomas Gottron
GLDB 2012/13
15
Äquivalenzerhaltende Umformungsregeln
 Selektion und Kreuzprodukt zusammenfassen
𝜎𝑅1 .𝐴=𝑅2 .𝐵 𝑅1 × 𝑅2 = 𝑅1 ⋈𝑅1 .𝐴=𝑅2 .𝐵 𝑅2
𝜎×
⇢⋈
 DeMorgan‘sche Umformungen in Selektionsbedingungen:
𝜎¬ 𝑃∨𝑄 = 𝜎¬𝑃∧¬𝑄
𝜎⇢
𝜎¬ 𝑃∧𝑄 = 𝜎¬𝑃∨¬𝑄
𝜎1 𝜎2
Erlaubt dadurch das Verschieben von Negationen
Anfrageoptimierung
Thomas Gottron
GLDB 2012/13
16
Zusammenfassung
 Logische Optimierung
 Ausgangspunkt: kanonische Übersetzung
 Heuristische Umformungsregeln
• Optimum nicht garantiert
 Äquivalenzerhaltende Umformungsregeln der RA
• Ergebnis darf nicht verändert werden
 Ergebnis:
 Relationaler Ausdruck als Operatorbaum
 Unabhängig von physischer Umsetzung
Anfrageoptimierung
Thomas Gottron
GLDB 2012/13
17
Fragen ?
[email protected]
http://west.uni-koblenz.de/teaching/ws1213/datenbanken
Anfrageoptimierung
Thomas Gottron
GLDB 2012/13
18
Herunterladen