Vorlesung Datenbanksysteme vom 18.10.2004 Anfragebearbeitung Logische Optimierung Physische...

Click here to load reader

download Vorlesung Datenbanksysteme vom 18.10.2004 Anfragebearbeitung Logische Optimierung Physische Optimierung

of 87

  • date post

    06-Apr-2015
  • Category

    Documents

  • view

    119
  • download

    1

Embed Size (px)

Transcript of Vorlesung Datenbanksysteme vom 18.10.2004 Anfragebearbeitung Logische Optimierung Physische...

  • Folie 1
  • Vorlesung Datenbanksysteme vom 18.10.2004 Anfragebearbeitung Logische Optimierung Physische Optimierung
  • Folie 2
  • 2 Architektur eines DBMS DML-CompilerDDL-Compiler Abfrageoptimierung Datenbankmanager Schemaverwaltung Dateiverwaltung LogdateienIndexeDatenbasisData Dictionary Mehrbenutzersynchronisation Fehlerbehandlung Interactive AbfrageAPI/PrcompilerVerwaltungswerkzeug
  • Folie 3
  • 3 Pull-based Query Evaluation open next Return Ergebnis
  • Folie 4
  • 4 Pipelining vs. Pipeline-Breaker RS... T
  • Folie 5
  • 5 Pipeline-Breaker Unre Operationen sort Duplikatelimination (unique,distinct) Aggregatoperationen (min,max,sum,...) Binre Operationen Mengendifferenz Je nach Implementierung Join Union
  • Folie 6
  • 6 Beispiele: Op6Employee A DNO = Dnumber Department Op7 Department A MgrSSN = SSN Employee Zu betrachten allgemein: Implementierungs-Varianten fr R A A=B S JOIN - Implementierung
  • Folie 7
  • 7
  • Folie 8
  • 8 J1 nested (inner-outer) loop brute force-Algorithmus foreach r R foreach s S if s.B = r.A then Res := Res (r s) Nested Loop Join
  • Folie 9
  • 9
  • Folie 10
  • 10 Block-Nested Loop Join- Algorithmus m-k R k S kkkkk
  • Folie 11
  • 11 J2 Zugriffsstruktur auf S Index Nested Loop Join in jedem Durchlauf von R werden nur die in S qualifizierenden Tupel gelesen dazu ist ein Index auf B erforderlich foreach r R foreach s S[B=r.A] Res := Res (r s) Index Nested Loop Join
  • Folie 12
  • 12
  • Folie 13
  • 13 J3 Sort-Merge Join erfordert zwei Sortierungen 1. R muss nach A und 2. S nach B sortiert sein sehr effizient falls A oder B Schlsselattribut ist, wird jedes Tupel in R und S nur genau einmal gelesen (wenn Duplikate eliminiert werden) Sort-Merge-Join R S Ergebnis:
  • Folie 14
  • 14
  • Folie 15
  • 15 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R 2 3 44 5 76 90 13 17 42 88 S 44 17 97 4 6 27 2 13 3 R S Nested Loop: O(N 2 ) Sortieren: O(N log N) Partitionieren und Hashing
  • Folie 16
  • 16 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R 2 3 44 5 76 90 13 17 42 88 S 44 17 97 4 6 27 2 13 3 R S R 3 90 42 76 13 88 2 44 5 17 Mod 3
  • Folie 17
  • 17 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R 2 3 44 5 76 90 13 17 42 88 S 44 17 97 4 6 27 2 13 3 R S R 3 90 42 76 13 88 2 44 5 17 S 6 27 3 97 4 13 44 17 2 Mod 3
  • Folie 18
  • 18 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R 2 3 44 5 76 90 13 17 42 88 S 44 17 97 4 6 27 2 13 3 R S R 3 90 42 76 13 88 2 44 5 17 S 6 27 3 97 4 13 44 17 2 Mod 3
  • Folie 19
  • 19 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R S R 3 90 42 76 13 88 2 44 5 17 S 6 27 3 97 4 13 44 17 2 6 27 3 Mod 5 Build- Phase Hashtabelle
  • Folie 20
  • 20 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R S = {3, } R 3 90 42 76 13 88 2 44 5 17 S 6 27 3 97 4 13 44 17 2 6 27 3 Mod 5 Probe- Phase
  • Folie 21
  • 21 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R S = {3, } R 3 90 42 76 13 88 2 44 5 17 S 6 27 3 97 4 13 44 17 2 97 13 4 Mod 5 Build-Phase 2. Partition
  • Folie 22
  • 22 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R S = {3, } R 3 90 42 76 13 88 2 44 5 17 S 6 27 3 97 4 13 44 17 2 97 13 4 Mod 5 Probe-Phase 2. Partition
  • Folie 23
  • 23 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R S = {3, 13 } R 3 90 42 76 13 88 2 44 5 17 S 6 27 3 97 4 13 44 17 2 97 13 4 Mod 5 Probe-Phase 2. Partition
  • Folie 24
  • 24 Mengendurchschnitt mit einem Hash/Partitionierungs-Algorithmus R 2 3 44 5 76 90 13 17 42 88 S 44 17 97 4 6 27 2 13 3 R 3 90 42 76 13 88 2 44 5 17 S 6 27 3 97 4 13 44 17 2 Mod 3 R S = {3, 13, 2, 44, 17 }
  • Folie 25
  • 25 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h angewendet auf R.A und S.B auf (dieselben) Hash- Buckets abgebildet Hash-Buckets sind i.Allg. auf Hintergrundspeicher (abhngig von der Gre der Relationen) Zu verbindende Tupel befinden sich dann im selben Bucket Wird (nach praktischen Tests) nur vom Merge-Join geschlagen, wenn die Relationen schon vorsortiert sind Hash-Join
  • Folie 26
  • 26 Hash-Join RS r1r1 5 s1s1 5 r4r4 5 s4s4 5 10s3s3 r2r2 7 s2s2 7 r3r3 8 h(A)h(A)h(B ) Bucket 3 Bucket 2Bucket 1
  • Folie 27
  • 27 Normaler blockierender Hash- Join mit berlauf: Partitionieren Send R Send S receive P1 P2P3 Partition h(R.A) P1 P2 P3 Partition h(S.A) receive
  • Folie 28
  • 28 Normaler blockierender Hash-Join mit berlauf: Build/Probe Send R Send S P1 P2P3 Partition h(R.A) P1 P2 P3 build Hashtabelle probe Lade Blcke von P1
  • Folie 29
  • 29
  • Folie 30
  • 30 Nested-Loop JoinHash Join
  • Folie 31
  • 31
  • Folie 32
  • 32 Hybrid Hash-Join Fange so an, als wenn der Build-Input S vollstndig in den Hauptspeicher passen wrde Sollte sich dies als zu optimistisch herausstellen, verdrnge eine Partition nach der anderen aus dem Hauptspeicher Mindestens eine Partition wird aber im Hauptspeicher verbleiben Danach beginnt die Probe-Phase mit der Relation R Jedes Tupel aus R, dessen potentielle Join-Partner im Hauptspeicher sind, wird sogleich verarbeitet Hybrid Hash-Join ist dann besonders interessant, wenn der Build-Input knapp grer als der Hauptspeicher ist Kostensprung beim normalen Hash-Join Wird oft auch Grace-Hash-Join genannt, weil er fr die Datenbankmaschine Grace in Japan erfunden wurde
  • Folie 33
  • 33 Hybrid Hash-Join RS P1 P2 P3 Hashtabelle
  • Folie 34
  • 34 Hybrid Hash-Join RS P3 P1 P2 Hashtabelle
  • Folie 35
  • 35 Hybrid Hash-Join RS P2 P3 P1 Hashtabelle
  • Folie 36
  • 36 Hybrid Hash-Join R P2P3 Partition h(R.A) P2 P3 Hashtabelle probe Wenn r zur ersten Partition gehrt
  • Folie 37
  • 37 1 1 1 1 0 0 1 1 1 1 0 0 False drops 6 Bit Join mit Hashfilter (Bloom-Filter) R1 R2 partitionieren S1 S2 partitionieren
  • Folie 38
  • 38.. Join mit Hashfilter (False Drop Abschtzung) Wahrscheinlichkeit, dass ein bestimmtes Bit j gesetzt ist W. dass ein bestimmtes r R das Bit setzt: 1/b W. dass kein r R das Bit setzt: (1-1/b) |R| W. dass ein r R das Bit gesetzt hat: 1- (1-1/b) |R| 0 1.. j b-1
  • Folie 39
  • 39 Vergleich: Sort/Merge-Join versus Hash-Join R run S merge R partition S
  • Folie 40
  • 40 Illustration: Externes Sortieren 97 17 3 5 27 16 2 99 13
  • Folie 41
  • 41 Illustration: Externes Sortieren 97 17 3 5 27 16 2 99 13
  • Folie 42
  • 42 Illustration: Externes Sortieren 97 17 3 5 27 16 2 99 13 97 17 3
  • Folie 43
  • 43 Illustration: Externes Sortieren 97 17 3 5 27 16 2 99 13 3 17 97 sort
  • Folie 44
  • 44 Illustration: Externes Sortieren 97 17 3 5 27 16 2 99 13 3 3 17 97 17 97 sort run
  • Folie 45
  • 45 Illustration: Externes Sortieren 97 17 3 5 27 16 2 99 13 5 3 17 97 27 16 run
  • Folie 46
  • 46 Illustration: Externes Sortieren 97 17 3 5 27 16 2 99 13 5 3 17 97 5 16 27 16 27 sort run
  • Folie 47
  • 47 Illustration: Externes Sortieren 97 17 3 5 27 16 2 99 13 2 3 17 97 5 16 27 99 13 run
  • Folie 48
  • 48 Illustration: Externes Sortieren 97 17 3 5 27 16 2 99 13 2 3 17 97 5 16 27 2 13 99 13 99 sort run
  • Folie 49
  • 49 Illustration: Externes Sortieren 3 3 17 97 5 16 27 2 13 99 5 2 merge run
  • Folie 50
  • 50 Illustration: Externes Sortieren 2 3 3 17 97 5 16 27 2 13 99 5 2 merge run
  • Folie 51
  • 51 Illustration: Externes Sortieren 2323 3 3 17 97 5 16 27 2 13 99 5 13 merge run
  • Folie 52
  • 52 Illustration: Externes Sortieren 235235 17 3 17 97 5 16 27 2 13 99 5 13 merge run
  • Folie 53
  • 53 Illustration: Externes Sortieren 235235 17 3 17 97 5 16 27 2 13 99 16 13 merge run
  • Folie 54
  • 54 Illustration: Externes Sortieren 2 3 5 13 17 3 17 97 5 16 27 2 13 99 16 13 run
  • Folie 55
  • 55 Mehrstufiges Mischen / Merge
  • Folie 56
  • 56 Replacement Selection whrend der Run-Generierung 97 17 3 5 27 16 2 99 13 Ersetze Array durch Einen Heap
  • Folie 57
  • 57 Replacement Selection whrend der Run-Generierung 97 17 3 5 27 16 2 99 13 Heap 97
  • Folie 58
  • 58 Replacement Selection whrend der Run-Generierung 97 17 3 5 27 16 2 99 13 Heap 1-97 1-17
  • Folie 59
  • 59 Replacement Selection whrend der Run-Generierung 97 17 3 5 27 16 2 99 13 Heap 1-17 1-97
  • Folie 60
  • 60 Replacement Selection whrend der Run-Generierung 97 17 3 5 27 16 2 99 13 Heap 1-17 1-971-3
  • Folie 61
  • 61 Replacement Selection whrend der Run-Generierung 97 17 3 5 27 16 2 99 13 Heap 1-3 1-971-17
  • Folie 62