Logische Optimierung Logische Optimierung Höhere, nichtprozedurale Abfragesprachen (SQL, QBE, ...) verlangen keine Kenntnisse des Benutzers über die Implementierung, müssen aber in prozedurale Form (z. B. Relationenalgebra) umgesetzt werden. Um trotzdem effiziente Bearbeitung von Queries zu erzielen wird die gestellte Anfrage intern umformuliert und verbessert. Diesen Vorgang nennt man Query Optimization. Im Allgemeinen wird keine optimale Lösung erzielt, sondern nur eine Verbesserung. Grundlagen der Datenbanksysteme I VIII-1 Logische Optimierung Query (z.B. SQL) Query Prozessor • Analyse • Umwandlung in relationale Algebra • Datenzugriff • Ausführung Grundlagen der Datenbanksysteme I VIII-2 Logische Optimierung Fragen: Welche Operationen benötigen viel Zeit für ihre Ausführung? Können diese vermieden werden, indem man die Anfrage neu formuliert? Beispiel: Gegeben sei folgender relationaler Ausdruck: πA(σB=C∧D=”99”(AB × CD)) Dieser offensichtlich teuere Ausdruck (wg. kartesischem Produkt) kann besser formuliert werden: πA(σB=C(AB × σD=”99”(CD))) Das kartesische Produkt in dieser Abfrage ist offensichtlich durch die Selektion über B=C äquivalent zu einem Gleichverbund: πA(AB [B=C] σD=”99”(CD)) Grundlagen der Datenbanksysteme I VIII-3 Logische Optimierung Grundlegende Aspekte Zu betrachten sind für eine Optimierung die fünf Grundoperationen. Wo liegt ihr Schwachpunkt und wie können diese Schwachpunkte umgangen werden? • Die auf jeden Fall aufwendigste Operation ist das kartesische Produkt bzw. der Verbund: Bei einfachster Implementierung eines Verbundes zwischen A und B erfolgt ein Durchlauf aller Tupel von B für jedes Tupel von A. Dies ist ein Aufwand mit o(nm). • Die Projektionen sind aufwendig durch das Entfernen von Duplikaten. • Die Selektionen sollte man so früh wie möglich durchführen, da dies zu kleineren Zwischenresultaten führt. Grundlagen der Datenbanksysteme I VIII-4 Logische Optimierung • Die unären Operationen (Projektion/Selektion) bedingen je einen Durchlauf aller Tupel, daher mehrere möglichst zusammenziehen oder mit einer binären Operation zusammenfassen. • Nach gemeinsamen Teilausdrücken suchen, damit diese nur einmal abgearbeitet werden. • Eventuell temporäre Verwendung bestimmter Dateiorganisationen (Indizes, Sortieren) einführen → Physische Optimierung Der Zeitaufwand für das Untersuchen der verschiedenen Möglichkeiten ist im Allgemeinen viel geringer als für das Durchführen einer ineffizienten Query. Daher wird die Optimierung immer durchgeführt! Grundlagen der Datenbanksysteme I VIII-5 Logische Optimierung Algebraische Manipulation • Gesetze der relationalen Algebra. • Äquivalenz von Ausdrücken. Es gilt E1 ≡ E2 falls sie dieselbe Abbildung repräsentieren, d.h. falls dieselben Relationen für identische Bezeichnungen in den beiden Ausdrücken eingesetzt werden, erhallten wir gleiche Ergebnisse. Grundlagen der Datenbanksysteme I VIII-6 Logische Optimierung Vereinfachungen und gemeinsame Unterausdrücke r∪r≡r r∩r≡r r ZY r ≡ r r-r≡∅ r∪∅≡r r∩∅≡∅ r ZY ∅ ≡ ∅ r-∅≡r ∅-r≡∅ πx(∅) ≡ ∅ σc(∅) ≡ ∅ δN(∅) ≡ ∅ r[c]∅ ≡ ∅ ∅[c]r ≡ ∅ Grundlagen der Datenbanksysteme I VIII-7 Logische Optimierung Beispiel: (r - r) ZY (r ∪ r) ≡ ∅ ZY r ≡∅ Diese Regeln gelten auch für gemeinsame Unterausdrücke: (r ZY s) ∪ (r ZY s) ≡ r ZY s Operatorbäume oder Ausdrucksbäume Mittels Operatorbäumen können gemeinsame Unterausdrücke und äquivalente Ausdrücke leicht erkannt werden. Ein Operatorbaum ist folgendermaßen charakterisiert: • Gerichteter Baum • Die Knoten sind Operatoren • Die Blätter sind Relationen oder Konstanten Grundlagen der Datenbanksysteme I VIII-8 Logische Optimierung Algebraische Optimierung Für die Durchführung der Optimierung wird die Anfrage zunächst in einen Operatorbaum umgewandelt: Beispiel: πx(s ZY r) - πx(q ZY r ZY s) – πx πx ZY ZY s r ZY q r s Annahme: Bottom-up-Auswertung des Operatorbaumes Aufwand: Zeit- und Platzaufwand binärer Operationen steigen mit o Anzahl der Tupel o Anzahl der Attribute in den Argumentrelationen Grundlagen der Datenbanksysteme I VIII-9 Logische Optimierung (q ZY r ZY s) assoziativ und kommutativ ZY ZY ZY q s ZY q r r s ZY q r Grundlagen der Datenbanksysteme I s VIII-10 Logische Optimierung Grundprinzipien: Es wird versucht, auf diesen Operatorbaum die folgenden drei Grundprinzipien anzuwenden: • Verlagerung unärer Operatoren in Richtung auf die Blätter des Baumes (Ziel: möglichst frühzeitige Reduktion der Größe von Verbund-Operanden) • Zusammenfassung unärer Operationen • Da die Projektion Entfernung doppelter Tupel bedingt, sollte man die Selektion möglichst vor der Projektion durchführen (im Allgemeinen ist σ vor π statistisch besser). Grundlagen der Datenbanksysteme I VIII-11 Logische Optimierung Zusammenfassung gleicher Teilausdrücke: – πx πx ZY ZY r s ZY q r – s – πx πx πx πx ZY ZY q s ZY ZY ZY r s q r Das Problem bei der Feststellung gemeinsamer Teilausdrücke ist, dass die algebraischen Transformationen deren Existenz verschleiern können. Grundlagen der Datenbanksysteme I VIII-12 Logische Optimierung Umformungsregeln Eine Reihe von Regeln, die auf der Relationalen Algebra aufbauen, erlauben die Umformung der Anfrage: Regeln für Verbund und kartesisches Produkt (1) Kommutativität E1 ZY E2 ≡ E2 ZY E1 E1 × E2 ≡ E2 × E1 (2) Assoziativität E1 ZY (E2 ZY E3) ≡ (E1 ZY E2) ZY E3 . E1 × (E2 × E3) ≡ (E1 × E2) × E3 . Regeln für Selektion und Projektion (3) Zusammenfassung von Projektionen Bedingungen: {Ai ⏐ i = 1, ..., n} ⊆ {Bi ⏐i = 1, ..., m}. πAi,...,An(πB1,...,Bm(E)) ≡ πA1,...An(E). (3) Zusammenfassung/Kommutativität von Selektionen: σF1(σF2(E)) ≡ σF2∧F1(E). σF1(σF2(E)) ≡ σF2(σF1(E)). Grundlagen der Datenbanksysteme I VIII-13 Logische Optimierung (5) Kommutativität Selektion-Projektion Bedingung F bezieht sich nur auf Attribute Ai: πA1,...,An(σF(E)) ≡ σF(πA1,...,An(E)). Bedingung F bezieht sich auf alle Attribute B und möglicherweise auf Attribute Ai: πA1,...,An(σF(E)) ≡ πA1,...,An(σF(πA1,...,An,B1,...,Bm(E))). (6) Kommutativität Selektion-Kartesisches Produkt Bedingung F = F1 ∧ F2 bezieht sich auf Attribute von E1 und E2 Fi bezieht sich nur auf Attribute von Ei σF(E1 x E2) ≡ σF1(E1) x σF2(E2). F1 bezieht sich nur auf Attribute von E1, F2 bezieht sich auf Attribute von E1 und E2 σF(E1 x E2) ≡ σF2(σF1(E1) x E2). (7) Kommutativität Selektion-Vereinigung σF(E1 ∪ E2) ≡ σF1(E1) ∪ σF2(E2). (8) Kommutativität Selekton-Mengendifferenz σF(E1 - E2) ≡ σF1(E1) - σF2(E2). Grundlagen der Datenbanksysteme I VIII-14 Logische Optimierung (9) Kommutativität Projektion-Kartesisches Produkt Bi sind Attribute von E1, Ci sind Attribute von E2. {Ai | i = 1,..,n} = {Bi | i = 1,...,m} ∪ {Ci | i = 1,...,k} πA1,...,An(E1 x E2) ≡ πB1,...,Bm(E1) x πC1,...,Ck(E2). (10) Kommutativität Projektion-Vereinigung πA1,...,An(E1 ∪ E2) ≡ πA1,...,An(E1) ∪ πA1,...,An(E2). Der Verbund ist hierbei darstellbar als Kombination von kartesischem Produkt, Projektion und Selektion, deshalb folgen die Regeln für Kommutativität von Selektion und Verbund aus (4), (5) und (6). Achtung: Es gilt keine Kommutativität zwischen Mengendifferenz und Projektion! Grundlagen der Datenbanksysteme I VIII-15 Logische Optimierung Ein einfacher Optimierungsalgorithmus: (1) Umformulierung der Anfrage, so daß nur noch Grundoperationen verwendet werden. (Auflösung der Verbünde und Divisionen) (2) Zuordnung der Attribute zu den Relationen (Volle Qualifizierung) (3) Aufstellen des Operatorbaumes (4) Zerlegung der Selektionen der Art σF1 ∧ ... ∧ Fn(E) nach Regel (4) in σF1(...(σFn(E))...). (5) Verlagerung der Selektionen soweit wie möglich in Richtung Blätter mit Regeln (4) - (8). (Selektionen, die sich nur auf ein Attribut und eine Konstante beziehen, können fast immer zu ihrer Relation wandern) (6) Zusammenfassung aller direkt aufeinanderfolgenden Selektionen zu einer einzigen Selektion (7) Verlagerung der obersten Projektion mit Regeln (3), (5), (9) und (10) durch den Baum bis hin zu den Blättern. (Bei binären Operationen aufspalten) (8) Ergebnisangabe als Relationaler Ausdruck. Grundlagen der Datenbanksysteme I VIII-16 Logische Optimierung Beispiele: BOOKS (TITLE,AUTHOR,PNAME,LC_NO) PUBLISHERS (PNAME,PADDR,PCITY) BORROWERS (NAME,ADDR,CITY,CARD_NO) LOANS (CARD_NO,LC_NO,DATE) PNAME = publisher’s name LC_NO = Library of Congress number PADDR = the street address of a publisher PCITY = the city in which a publisher is located CARD_NO = the library card number DATE = the date on which a book was borrowed Grundlagen der Datenbanksysteme I VIII-17 Logische Optimierung Beispiel 1 σ CITY = ' Frankfurt '∧ DATE <1.1.1997 ( BOOKS >< LOANS >< BORROWERS) σ ZY ZY BOOKS BORROWERS LOANS Assoziativität des Verbundes (2) (6) Ø Kommutativität Selektion / kartesisches Produkt BOOKS >< (σ CITY = ' Frankfurt '∧ DATE <1.1.1997 ( LOANS >< BORROWERS) ) ZY BOOKS σ ZY LOANS Grundlagen der Datenbanksysteme I BORROWERS VIII-18 Logische Optimierung Beispiel 1 (Fortsetzung) BOOKS >< (σ CITY = ' Frankfurt '∧ DATE <1.1.1997 ( LOANS >< BORROWERS) ) Kommutativität Selektion / kartesisches Produkt (6) Ø BOOKS >< ( σ DATE <1.1.1997 ( LOANS) >< σ CITY = ' Frankfurt ' ( BORROWERS) ) ZY ZY BOOKS σ LOANS Grundlagen der Datenbanksysteme I σ BORROWERS VIII-19 Logische Optimierung Beispiel 2 π NAME,CARD_ NO,DATE (σ TITLE = 'DATABASES' ( BOOKS ) >< ( LOANS >< BORROWERS ) ) π ZY σ ZY BOOKS LOANS BORROWERS Assoziativität des Verbundes (2) (3) (9) Ø Kommutativität Selektion (Projektion)/ kartesisches Produkt π NAME,CARD_ NO,DATE ( π CARD_ NO,DATE ( σ TITLE = 'DATABASES' ( BOOKS )>< LOANS ) >< BORROWERS ) Grundlagen der Datenbanksysteme I VIII-20 Logische Optimierung Beispiel 2 (Fortsetzung) π NAME,CARD_ NO,DATE ( π CARD_ NO,DATE ( σ TITLE = 'DATABASES' ( BOOKS )>< LOANS ) >< BORROWERS ) π ZY π BORROWERS ZY σ LOANS BOOKS Grundlagen der Datenbanksysteme I VIII-21 Logische Optimierung Beispiel 3 (Ullman) XLOANS = π S ( σ F ( LOANS × BORROWERS × BOOKS ) ) mit: F ≡ BORR. CARD _ NO = LOANS . CARD _ NO ∧ BOOKS . LC _ NO = LOANS . LC _ NO S ≡ TITLE , AUTHOR , PNAME , LC _ NO, NAME , ADDR, CITY , CARD _ NO, DATE π TITLE (σ DATE <1/1/82 ( XLOANS ) ) Schritt 1: Teilen der Selektion F in F1 und F2: F1 ≡ BORR. LC _ NO = LOANS . LC _ NO F2 ≡ BOOKS . CARD _ NO = LOANS . CARD _ NO Schritt 2: Selektionen den Baum „hinunterbewegen“ ( ( )) π TITLE π S σ F 2 (σ F 1( σ DATE <1/1/82 ( LOANS ) × BORR ) × BOOKS ) Grundlagen der Datenbanksysteme I VIII-22 Logische Optimierung Schritt 3: Vereinigung der beiden Projektionen zu: π TITLE Schritt 4: Aufspalten der Folge π TITLE (σ F 2 (K) ) mit Regel 5 in: ( ( π TITLE σ F 2 π TITLE , BOOKS . LC _ NO , LOANS . LC _ NO (K) )) Dann Aufspalten der zweiten Projektion nach Regel 9: π TITLE , BOOKS . LC _ NO und π LOANS . LC _ NO Ø ( π TITLE ( σ F 2 π LOANS . LC _ NO ( σ F 1( σ DATE <1/1/82 ( LOANS ) × BORR) ) × π TITLE , BOOKS . LC _ NO ( Books) )) Grundlagen der Datenbanksysteme I VIII-23 Logische Optimierung Schritt 5: Aufspalten der Folge π LOANS . LC _ NO ( σ F 1(K) ) mit Regel 5 in: ( ( π LOANS . LC _ NO σ F 1 π LOANS . LC _ NO , BORR.CARD _ NO , LOANS .CARD _ NO (K) Schritt 6:Die zweite Projektion aufspalten und vor das kartesische Produkt bringen (Regeln 5 und 9): ( π TITLE ( σ F 2 π LOANS . LC _ NO ( σ F 1 ( π LOANS . LC _ NO , LOANS .CARD _ NO ( σ DATE <1/1/82 ( LOANS ) ) × π BORR.CARD _ NO ( BORR ) )) × π TITLE , BOOKS . LC _ NO ( Books) )) Grundlagen der Datenbanksysteme I VIII-24 )) Logische Optimierung Beispiel: Kartesisches Produkt AB CD nCD (Datensätze) nAB Strategie: Lade so viele Blöcke von AB wie möglich in den Hauptspeicher und lasse dabei Platz für einen Block von BC. AB CD m Hauptspeicher-Blöcke • n AB , nCD : Sätze. • bAB , bCD : Sätze/Block. • m : Anzahl der Blöcke im Hauptspeicher. Grundlagen der Datenbanksysteme I VIII-25 Logische Optimierung • Anzahl der Block-Zugriffe um AB zu lesen: n AB b AB . • CD muss n AB (m − 1) b AB - mal gelesen werden. Jedes Mal werden dazu nCD bCD Zugriffe benötigt. Anzahl der Block-Zugriffe: nAB nAB n + ⋅ CD = bAB (m − 1) ⋅ bAB bCD ⎞ n AB ⎛ nCD ⋅ ⎜1 + ⎟ bAB ⎝ (m − 1) b CD ⎠ Grundlagen der Datenbanksysteme I VIII-26 Logische Optimierung Beispiel: n AB = nCD = 10 000 bAB = bCD = 5 m = 100 Anzahl der Zugriffe = 42.400. Bei 20 Block-Zugriffen pro Sekunde wird dieses kartesische Produkt ca. 35 Minuten benötigen. Wähle AB als die Relation, mit dem kleineren Quotienten n AB . bAB Das heißt, die Relation, die in weniger Blocks passt. Grundlagen der Datenbanksysteme I VIII-27