9 Grundlagen der Anfrageverarbeitung © Prof. Dr.-Ing. Wolfgang Lehner | > Bestandteile eines Datenbanksystems © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 2 > 5-Schichten-Architektur Übersicht über Funktionen © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 3 > 5-Schichten-Architektur (2) Übersicht über Datenobjekte und Objektstrukturen © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 4 > 5-Schichten-Architektur (3) MOS: mengenorientierte Schnittstelle deklarative Datenmanipulationssprache auf Tabellen und Sichten (etwa SQL) SOS: satzorientierte Schnittstelle navigierender Zugriff auf interner Darstellung der Relationen manipulierte Objekte: typisierte Datensätze und interne Relationen sowie logische Zugriffspfade (Indexe) Aufgaben des Datensystems: Übersetzung und Optimierung von SQL-Anfragen ISS: interne Satzschnittstelle interne Tupel einheitlich verwalten, ohne Typisierung Speicherstrukturen der Zugriffspfade (konkrete Operationen auf B-Bäumen und Hash-Tabellen), Mehrbenutzerbetrieb mit Transaktionen SPS: Systempufferschnittstelle Umsetzung auf interne Seiten eines virtuellen linearen Adressraums Typische Operationen: Freigeben und Bereitstellen von Seiten, Seitenwechselstrategien, Sperrverwaltung, Schreiben des Protokolls DS: Dateischnittstelle -> Umsetzung auf Geräteschnittstelle © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 5 > Anfrageverarbeitung © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 6 > Aufgabe der Anfrageverarbeitung Realisierung eines mengenorientieren Zugriffs nicht mehr Rückgriff auf einzelne Sätze inhaltliche Adressierung von Mengen von Sätzen Aufgaben Überprüfung der syntaktischen Korrektheit von Anfrage Überprüfung von Zugriffsberechtigungen und Integritätsbedingungen Referenzielle Integrität, Eindeutigkeits- und Wertebereichszusicherungen, … Erzeugung einer optimalen ausführbargen Folge interner DBMS-Operationen Anfrageoptimierer ist (im Wesentlichen) für die effiziente Abarbeitung verantwortlich © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 7 > Anfragespezifikation Prozedurale Sprachen Direkte Adressierung und satzorientierter Zugriff auf die Datensätze, keine mengenorientierte Verarbeitung Verantwortung für die Zugriffspfadwahl, d.h. Art und Reihenfolge der Zugriffe liegt beim Programmierer Deskriptive Sprachen Inhaltliche Adressierung und mengenorientierter Zugriff auf die Datensätze, kein Rückgriff auf einzelne Sätze Verantwortung für die Zugriffspfadauswahl, d.h. Art und Reihenfolge der Zugriffe liegt beim System, transparent für den Anwender Hohe Auswahlmächtigkeit an der Prädikatenlogik erster Stufe orientiert ist unabhängige oder korrelierte Teilanfragen zur Bestimmung von Suchargumenten in beliebiger Schachtelungstiefe zulässig © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 8 > Beispiele für deskriptiven Anfrage Anfrage auf eine einzelne Tabelle SELECT FROM WHERE AND PNR, PNAME, GEHALT PERS BERUF = ‘Programmierer’ PROVISION > GEHALT Verbundoperation Anfrage mit Korrelation SELECT FROM WHERE AND P.PNR, P.NAME, A.NAME PERS P, ABT A P.ANR = A.ANR P.GEHALT < (SELECT MAX(PROVISION) FROM PERS) AND P.GEHALT > (SELECT AVG(PROVISION) FROM PERS WHERE A.ANR = P.ANR) © Prof. Dr.-Ing. Wolfgang Lehner | Unabhängige Unteranfrage Korrelierte Unteranfrage Grundlagen von Datenbanken - Anfrageverarbeitung | 9 > Zerlegung der Anfrageverarbeitung Anfrageverarbeitung (AV) (im engeren Sinne) Logischer DB-Prozessor (System R: relational data system) liefert einen Ausführungsplan (query execution plan; QEP) zur Übersetzungszeit Anfrageausführung (AE) Physischer DB-Prozessor (System R: relational storage system) tatsächliche Ausführung des Anfrageplanes zur Laufzeit © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 10 > Phasen der Anfrageverarbeitung Anfrageoptimierung Anfrage Ergebnis Interndarstellung Ergebnisbereitstellung © Prof. Dr.-Ing. Wolfgang Lehner | Zugriffs- & Integritätskontrolle Ausführungskontrolle Anfragerestrukturierung Codeerzeugung Anfragetransformation Logischer DB-Prozessor (Anfrageprozessor) Anfrageausführungsplan (QEP) Übersetzungszeit Planparametrierung Laufzeit Physischer DB-Prozessor (Anfrageausführer) Grundlagen von Datenbanken - Anfrageverarbeitung | 11 > Phasen der Anfrageverarbeitung (2) Überführung in Interndarstellung Wie ist eine Anfrage intern repräsentiert? -> Operatorengraph Lexikalische und syntaktische Analyse Überprüfung auf korrekte Syntax (Parsing) Erstellung eines Anfragegraphen für die nachfolgenden Übersetzungsschritte (Überführung in Interndarstellung) Semantische Analyse Feststellung der Existenz und Gültigkeit der referenzierten Relationen und Attribute Ersetzen der externen durch interne Namen (Namensauflösung) Konversion vom externen Format in interne Darstellung Zugriffs- und Integritätskontrolle Durchführung einfacher Integritätskontrollen (Kontrolle von Formaten und Konversion von Datentypen) Generierung von Laufzeitaktionen für werteabhängige Kontrollen © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 12 > Interndarstellung Wie ist eine Anfrage intern repräsentiert? Strukturelle Betrachtung: Relationen, visualisiert als Tabellen Operationelle Betrachtung: Operatoren der Relationalen Algebra Selektion - Auswahl von ‚Zeilen‘: pred()(R) Projektion - Auswahl von ‚Spalten‘: {A1,…,Ak}(R) Gruppierung - Auswahl von ‚Spalten‘ und Aggregatbildung auf Duplikaten: {G1,…,Gn:A1,…,Ak}(R) Verbund - Verbinden von Relationen R und S: RP(Ai,Bj)⋈S auf logischer Ebene: n-äre Verbundoperationen Beispiel SQL-Server: ca. 200 logische DB-Operatoren Umsetzung in relationalen Operatoren effiziente Datenstruktur mit geeigneten Zugriffsfunktionen prozedurale Darstellung einer deskriptiven, mengenorientierten Anfrage Knoten sind Operatoren der Relationalen Algebra Operatorengraph Blattknoten sind (üblicherweise) Relationen gerichtete Kanten repräsentieren den Datenfluss Beispiel SELECT FROM WHERE AND AND Name, Beruf ABT a, PERS p, PM pm, PROJ pj a.Anr = p.Anr AND a.Aort = ‘Erlangen’ p.Pnr = pm.Pnr AND pm.Jnr = pj.Jnr pj.Port = ‘Erlangen’ © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 13 > Interndarstellung – Beispiele Mono-Block-Anfrage SELECT FROM WHERE AND C_NAME, C_ADDRESS TPCD.CUSTOMER, TPCD.SUPPLIER C_NAME = S_NAME C_MKTSEGMENT = ’MACHINERY’; Projektion Selektion Verbundoperation Quellrelationen Star-Query SELECT P_BRAND, O_SHIPPRIORITY, SUM(L_QUANTITY*L_EXTENDEDPRICE) AS TURNOVER FROM TPCD.LINEITEM, TPCD.ORDERS, TPCD.PART WHERE L_ORDERKEY = O_ORDERKEY AND L_PARTKEY = P_PARTKEY AND O_ORDERSTATUS = ’F’ AND P_CONTAINER = ’LG_BAG’ GROUP BY P_BRAND, O_SHIPPRIORITY HAVING AVG(L_QUANTITY) > 250; © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 14 > Phasen der Anfrageverarbeitung (2) Anfragerestrukturierung: algebraische bzw. logische Optimierung Anwendung von heuristischen Regeln zielt auf globale Verbesserung des Anfragegraphen ab Anfragetransformation: nicht-algebraische bzw. physischer Optimierung Berücksichtigung ausführbarer Operationen Ersetzung und ggf. Zusammenfassen der logischen Operatoren durch Planoperatoren Auswahl der günstigsten Planalternative meist sind mehrere Planoperatoren als Implementierung eines logischen Operators verfügbar meist sind viele Ausführungsreihenfolgen oder Zugriffspfade auswählbar Bewertung der Kosten und Auswahl des günstigsten Ausführungsplanes Code-Generierung Generierung eines zugeschnittenen Programms für die vorgegebene (SQL-) Anfrage Erzeugung eines ausführbaren Zugriffsmoduls Verwaltung der Zugriffsmodule in einer DBVS-Bibliothek ... zusätzlich bei verteilten Datenbanksystemen ... Anfragetransformation, Datenlokalisierung, globale Optimierung © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 15 > Anfrageoptimierung © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 16 > Einordnung und Phasen Aufgabeoptimierung erfolgt in zwei Phasen Anfragerestrukturierung Zugriffs- & Algebraische/logische Optimierung InternAnfrage Integritätsdarstellung& Vereinfachung Standardisierung kontrolle Restrukturierungsregel Anfrageoptimierung Anfragerestrukturierung Anfragetransformation nicht-algebraische/physischer Optimierung Kostenbasierte Planerstellung ErgebnisAusführungsCodeErgebnis bereit Realisierungsansätze: kontrolle erzeugung stellung Greedy-Ansatz, Dynamic Programming, Randomisierte Verfahren © Prof. Dr.-Ing. Wolfgang Lehner | Anfragetransformation Logischer DB-Prozessor (Anfrageprozessor) Anfrageausführungsplan (QEP) Übersetzungszeit Planparametrierung Laufzeit Physischer DB-Prozessor (Anfrageausführer) Grundlagen von Datenbanken - Anfrageverarbeitung | 17 > Anfrageoptimierung Ziel von der Anfrage (WAS?) zur Auswertung (WIE?) Ermittlung des kostengünstigsten Auswerteweges Zentrales Problem globale Optimierung ist im Allgemeinen zu aufwändig Fehlen von exakten statistischen Informationen Einsatz von Heuristiken Optimierungsziel entweder Maximierung des Outputs bei gegebenen Ressourcen: Durchsatzmaximierung oder Minimierung der Ressourcennutzung für gegebenen Output: Antwortzeitminimierung für eine gegebene Anfragesprache, einem Mix von Anfragen verschiedenen Typs und einer gegebenen Systemumgebung! © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 18 > Anfragerestrukturierung © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 19 > Anfragerestrukturierung Algebraische bzw. logische Optimierung Modellbasierte algebraische Umformung für effizientere Ausführung Zielt auf globale Verbesserung des Anfragegraphen ab Anwendung von heuristischen Regeln Basis Äquivalenzen in der relationalen Algebra Schritte Standardisierung von Prädikaten Vereinfachung von Prädikaten Auflösen von Verschachtelungen Anwenden Restrukturierungsregeln © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 20 > Beispiele für Restrukturierungen © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 21 > Algorithmus Algorithmus zur Anfragerestrukturierung - vereinfachte Vorgehensweise Zerlegen von komplexen Verbundoperationen in binäre Verbunde (Bilden von binären Verbunden) Separiere Selektionen mit mehreren Prädikatstermen in separate Selektionen mit jeweils einem Prädikatsterm Führe Selektionen so früh wie möglich aus, d.h., schiebe Selektionen hinunter zu den Blättern des Anfragegraphen (engl. selection push-down) Fasse einfache Selektionen zusammen, d.h. gruppiere aufeinanderfolgende Selektionen (derselben Relation) Führe Projektionen so früh wie möglich aus, d.h. schiebe Projektionen hinunter zu den Blättern des Anfragegraphen (engl. projection push-down) vermeide dabei die teure Duplikateliminierung! © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 22 > Anfragetransformation © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 23 > Einordnung und Phasen Aufgabeoptimierung erfolgt in zwei Phasen Anfragerestrukturierung Zugriffs- & Algebraische/logische Optimierung InternAnfrage Integritätsdarstellung& Vereinfachung Standardisierung kontrolle Restrukturierungsregel Anfrageoptimierung Anfragerestrukturierung Anfragetransformation nicht-algebraische/physischer Optimierung Kostenbasierte Planerstellung ErgebnisAusführungsCodeErgebnis bereit Realisierungsansätze: kontrolle erzeugung stellung Greedy-Ansatz, Dynamic Programming, Randomisierte Verfahren © Prof. Dr.-Ing. Wolfgang Lehner | Anfragetransformation Logischer DB-Prozessor (Anfrageprozessor) Anfrageausführungsplan (QEP) Übersetzungszeit Planparametrierung Laufzeit Physischer DB-Prozessor (Anfrageausführer) Grundlagen von Datenbanken - Anfrageverarbeitung | 24 > Anfragetransformation Nicht-algebraische/physischer Optimierung Abbildung eines relationalen Operatorengraphen auf physisch ausführbare Operatoren und deren Ausführungsreihen folge -> also Erstellung eines Ausführungsplans © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 25 > Beispiel für Anfrageausführungsplan © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 26 > Anfragetransformation (2) Problem Unterschiedliche Implementierungen (z.B. Join) bzw. Abbildungsvarianten (z.B. Indexnutzung) Teilprobleme Gruppierung von direkt benachbarten Operatoren zur Auswertung durch einen Planoperator Beispiel: Verbund mit Selektionen und/oder Projektionen auf den beteiligten Relationen lässt sich durch einen speziellen Planoperator ersetzen Verknüpfungsreihenfolge bei Verbundoperationen Ziel: minimale Kosten für die Operationsfolge Heuristik: Minimierung der Größe der Zwischenergebnisse, d. h. die kleinsten (Zwischen)Relationen immer zuerst zu verknüpfen Erkennung gemeinsamer Teilbäume Einmalige Berechnung dafür nötig: Zwischenspeichung der Ergebnisrelation © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 27 > Anfragetransformation (3) Eingabe Algebraisch optimierter Anfragegraph Existierende Speicherungsstrukturen und Zugriffspfade Kostenmodell Ausgabe optimaler (zumindest: guter) Ausführungsplan Rahmenbedingungen Fatale Annahmen Alle Datenelemente und alle Attributwerte sind gleichverteilt Suchprädikate in Anfragen sind unabhängig beide Annahmen sind (im allgemeinen Fall) falsch! Beispiel: (GEHALT ≥ ‘100K’) AND (ALTER BETWEEN 20 AND 30) mit Gehalt: [10K - 1M] und Alter: [20 - 65] -> lineare Interpolation, Multiplikation von Wahrscheinlichkeiten Riesiger Suchraum Beispiel: Für n-ären Verbund gibt es n! mögliche Verbundreihenfolgen Begrenzte Ressourcen Kosten der Anfrageoptimierung sollen nicht die erzielte Reduktion von Ausführungskosten überschreiten © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 28 > Planoperatoren © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 29 > Planoperatoren Was sind Planoperatoren Physisch ausführbare Operatoren Physische Realisierung der logischen Operatoren der Relationalen Algebra Basis des Anfrageausführungsplans © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 30 > Selektion und Projektion Planoperatoren für die Projektion Spalteneliminierung ist trivial wird typischerweise in Kombination mit Sortierung, Selektion oder Verbund durchgeführt Duplikateliminierung wird durch Gruppieren auf allen distinkten Attributen ohne zusätzliche Aggregation realisiert Planoperatoren zur Selektion Nutzung des Scan-Operators Definition von Start- und Stopp-Bedingung Definition von einfachen Suchargumenten Relationen-Scan Index-Scan Auswahl des kostengünstigsten Index © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 31 > Selektion und Projektion (3) Beispiel SELECT * FROM Umsätze WHERE Monat BETWEEN 1 AND 6 Umsetzung durch Relationen-Scan aktuellerScanID := open-rel-scan(Umsätze-RelationID); aktuellerTID := next-TID(aktuellerScanID); while (not end-of-scan(aktuellerScanID)) aktuellesTupel := fetch-tuple(Personen-RelationID, aktuellerTID); if aktuellesTupel.Monat >= 1 and aktuellesTupel.Monat <= 6 return(aktuellesTupel); aktuellerTID := next-TID(aktuellerScanID); close-scan (aktuellerScanID); Umsetzung durch Index-Scan aktuellerScanID := open-index-scan(Umsätze-Monat-IndexID, 1, 6); aktuellerTID := next-TID(aktuellerScanID); while (not end-of-scan(aktuellerScanID)) aktuellesTupel := fetch-tuple(Umsätze-RelationID, aktuellerTID); return(aktuellesTupel); aktuellerTID := next-TID(aktuellerScanID); close-scan (aktuellerScanID); © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 32 > Verbundoperatoren Eigenschaften der Verbundoperation teuer und häufig -> Optimierungskandidat !!! typisch: Gleichheitsverbund; allgemeines Verbundprädikat eher selten Standardszenario SELECT * FROM R, S WHERE R.VA Θ S.VA // Verbundprädikat AND P(R.SA) // lokale Selektionen AND P(S.SA) Mögliche Zugriffspfade DB-Scan über R uns S Scans über IR(R.VA) und IS(S.VA) Sortierreihenfolge nach R.VA und S.VA !!! Scans über IR(R.SA) und/oder IS(S.SA) schnelle Selektion für R.SA und S.SA !!! ... beliebige andere Kombinationen © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 33 > Nested-Loop Verbund Annahmen Sätze in R und S sind nicht nach den Verbundattributen geordnet es sind keine Indexstrukturen IR(VA) und IS(VA) vorhanden Algorithmus für Θ-Verbund Scan über S für jeden Satz s, falls PS gilt: Scan über R für jeden Satz r, falls PR AND (r.VA Θ s.VA) gilt: übernehme kombinierten Satz (r, s) in das Ergebnis Komplexität O(N2) © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 34 > Nested-Loop Verbund (2) Beispiel Annahme: Fremdschlüssel-Primärschlüssel-Beziehung! © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 35 > Sort-Merge Verbund Annahmen es sind Indexstrukturen IR(VA) und IS(VA) vorhanden Algorithmus zum Ausnützen von Indexstrukturen IR(R.VA) und IS(S.VA) Phase 1: Sortierung von R und S nach R.VA und S.VA (falls nicht bereits vorhanden), dabei frühzeitige Eliminierung nicht benötigter Tupel (durch Überprüfung von PR, PS) Phase 2: Schritthaltende Scans über sortierte R- und S-Relationen mit Durchführung des Verbundes bei r.VA = s.VA Pseudocode: Schritthaltende Scans über IR(VA) und IS(VA): für jeweils zwei Schlüssel aus IR(VA) und IS(VA), falls r.VA = s.VA: hole mit den zugehörigen TIDs die Tupel, falls PR und PS: übernehme kombinierten Satz (r, s) in das Ergebnis Komplexität O(N log N) © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 36 > Sort-Merge Verbund (2) Beispiel © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 37 > Hash-Verbund – Classic Hashing Schritt 1 Abschnittsweises Lesen der (kleineren) Relation R Aufbau einer Hash-Tabelle mit hA(r(VA)) nach Werten von R(VA) Aufteilen in p Abschnitte Ri (1 ≤ i ≤ p) derart, dass jeder der p Abschnitte in den verfügbaren Hauptspeicher passt jeder Satz, der gehasht wird, PR erfüllt Schritt 2 Überprüfung (Probing) für jeden Satz von S mit PS im Erfolgsfall Durchführung des Verbundes Schritt 3 Wiederhole Schritt 1 und 2 solange, bis alle p Abschnitte bearbeitet Komplexität O(p * N) Idealfall: R passt in den Hauptspeicher, d.h. p=1 © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 38 > Hash-Verbund – classic hashing (3) Aufbau der Hash-Tabelle und Probing Hash-Tabellen Hi(1 ≤ i ≤ p) werden schrittweise im Hauptspeicher aufgebaut nach jedem Durchlauf von S wird die aktuelle Hash-Tabelle wieder gelöscht © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 39 > Hash-Verbund – classic hashing (4) Beispiel Voraussetzung: Hauptspeicherkapazität = 3 Tupel Hashing von R1 mit h(x) = x mod 3 © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 40 > Zusammenfassung © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 41 > Zusammenfassung 5-Schichtenarchitektur von Datenbanksystemen mengenorientierte Schnittstelle satzorientierte Schnittstelle interne Satzschnittstelle Systempufferschnittstelle Dateischnittstelle Anfrageverarbeitung logischer/physischer DB-Prozessor (Compile/Runtime) Phasen: Interndarstellung – Anfrageoptimierung Anfragerestrukturierung Anfragetransformation Planoperatoren Unäre Operatoren Selektion und Projektion Verbundoperatoren Nested-Loop Verbund Sort-Merge Verbund Hash-Verbund © Prof. Dr.-Ing. Wolfgang Lehner | Grundlagen von Datenbanken - Anfrageverarbeitung | 42