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