Hash-Join Algorithmen

Ähnliche Dokumente
6. Anfragebearbeitung

Joins / Implementierung von Joins

Anfragebearbeitung 2. Vorlesung Datenbanksysteme vom

Wintersemester 2016/ Matrikelnummer: Hinweise. Unterschrift

IMPLEMENTIERUNG VON OPERATIONEN AUF RELATIONEN

[W, T4, D, 15] [start_transaction, T3] [W, T3, C, 30] [W, T4, A, 20] [commit, T4] [W, T2, D, 25] System Crash

Datenbanken 2. Anfragebearbeitung. Nikolaus Augsten. FB Computerwissenschaften Universität Salzburg. Version 1.

Inhalt. Datenbanken 2. Literatur und Quellen. Inhalt. Anfragebearbeitung. Nikolaus Augsten. Wintersemester 2017/18

Anfrageoptimierung Physische Optimierung

Übung Datenbanksysteme II Physische Speicherstrukturen. Thorsten Papenbrock

Abschlußbericht. Advanced Topics in Databases im Wintersemester 2008/2009. Verantwortlich: Prof. Felix Naumann Alexander Albrecht Jens Bleiholder

Übung Datenbanksysteme II Physische Speicherstrukturen. Maximilian Jenders. Folien basierend auf Thorsten Papenbrock

Datenbanksysteme II Multidimensionale Indizes (Kapitel 14) Felix Naumann

Literatur: Jeffrey D. Ullman: Principles of Database Systems, 2 nd Edition 1982, Kapitel 2.2

Inhalt. Datenbanken Vertiefung. Literatur und Quellen. Inhalt. Anfragebearbeitung. Nikolaus Augsten. Wintersemester 2013/14

Physische Anfrageoptimierung

Hash-Verfahren. Einführung

Hash-Verfahren. Prof. Dr. T. Kudraß 1

WS 2013/14. Diskrete Strukturen

Datenbanken Vertiefung Wintersemester 2013/ Matrikelnummer: Hinweise. Unterschrift

Operator-Kostenmodelle für Fortschrittsschätzung und Opt. Datenbanksystemen

Physische Datenorganisat

Physische Datenorganisat

Kapitel 5 Hash-basierte Indizes

w 1 (A) T 1 w 3 (B) w 1 (D) b 3 flush(p D ) flush(p B ) flush(p B )

Diskrete Strukturen Endterm

Definition 77 Sei n N. Der Median (das mittlere Element) einer total geordneten Menge von n Elementen ist deren i-kleinstes Element, wobei n i =.

Anfrageverarbeitung. Einführung

Beweis: Annahme: T (n) c n, wobei c = c(m) konstant ist. Die Annahme ist ok, falls T (n)

Kapitel 12: Schnelles Bestimmen der Frequent Itemsets

Datenbanksysteme SS 2013

IMPLEMENTIERUNG VON OPERATIONEN AUF RELATIONEN

Programmiertechnik II

Kapitel III Selektieren und Sortieren

Themen. Hashverfahren. Stefan Szalowski Programmierung II Hashverfahren

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

WS 2015/16 Diskrete Strukturen Kapitel 3: Kombinatorik (3)

Teil VII. Hashverfahren

Programmiertechnik II

Physischer DB-Entwurf

Seminar Datenbanken Martin Gerstmann

Oracle 9i Einführung Performance Tuning

5.4 Logische Anfrageoptimierung

Kapitel 7 Physische Datenorganisation. Speicherhierarchie Hintergrundspeicher / RAID B-Bäume Hashing R-Bäume. Register. Cache.

Anfrageoptimierung. Datenbankpuffer

Grundlagen Algorithmen und Datenstrukturen Kapitel 13

Vorlesung Datenstrukturen

Mengen. (Nicht-) Elemente einer Menge { 3, 4 } { 1, { 2 }, { 3, 4 }, { 5 } } 3 { 1, { 2 }, { 3, 4 }, { 5 } }

Untersuchen Sie, inwiefern sich die folgenden Funktionen für die Verwendung als Hashfunktion eignen. x 9

Mengen. Eigenschaften. Spezielle Mengen (1) Prominente Mengen. ! Mengenzugehörigkeit

Kostenmodelle und Tuning. Anfragebearbeitung 3. Kostenmodelle. Kostenbasierte Optimierung. VL Datenbanksysteme

Kapitel 4: Relationale Anfragebearbeitung

Aufgabe 9.1: Lösung: Block-Nested-Loop-Verbund Index-Nested-Loop-Verbund Sort-Merge-Verbund Hash-Verbund

Datenbanksysteme II Architektur und Implementierung von Datenbanksystemen

sort hash uncompress merge & mark hash collisions

Fokus bisher lag bisher auf sinnvoller Abbildung eines Ausschnitts der realen Welt in einer relationalen Datenbank

4.4.1 Statisches perfektes Hashing. des Bildbereichs {0, 1,..., n 1} der Hashfunktionen und S U, S = m n, eine Menge von Schlüsseln.

Übung Datenbanksysteme II Anfrageausführung. Thorsten Papenbrock

Bäume, Suchbäume und Hash-Tabellen

Anfrageverarbeitung. Prof. Dr. T. Kudraß 1

Kapitel 7 Physische Datenorganisation. Speicherhierarchie Hintergrundspeicher / RAID Speicherstrukturen B-Bäume Hashing R-Bäume

3. Übung Algorithmen I

Algorithmen für Sortierung und relationale Operatoren

Rückblick: Pufferverwaltung

Physische Datenorganisation

2. Entsprechende Listen P i von Vorgängern von i 3. for i := 1 to n do. (ii) S i = Knoten 2 + 1}

Algorithm Engineering. Alexander Kröller, Abteilung Algorithmik, IBR

Partitionierungsstrategien für Data Vault

Praktikum Algorithmische Anwendungen WS 2006/07 Sortieren in linearer Laufzeit

Abschnitt 3: Mathematische Grundlagen

Dieses Quiz soll Ihnen helfen, Kapitel besser zu verstehen.

Kapitel 2. Mathematische Grundlagen. Skript zur Vorlesung Einführung in die Programmierung

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

5.8.2 Erweiterungen Dynamische Hash-Funktionen (mit variabler Tabellengröße)?

Übungen zur Vorlesung. Mobile und Verteilte Datenbanken. WS 2008/2009 Übung 2 Anfrageoptimierung in zentralisierten Datenbanksystemen LÖSUNG

Dynamisches Huffman-Verfahren

Datenbanksysteme II Indexstrukturen Felix Naumann

Klausur zum Kurs Betriebssysteme (1802) am 19. September 2009

Relationenoperationen - Implementierung 0

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2012

Vorlesung 1b. Wiederholte rein zufällige Wahl

Systeme 1. Kapitel 3 Dateisysteme WS 2009/10 1

Einstieg in die Informatik mit Java

Datenbanksysteme II Multidimensionale Indizes Felix Naumann

Übung Datenbanksysteme II Anfrageausführung

Zusammenfassung des 2. Abends

Algorithms & Data Structures 2

Hashing II. Übersicht. 1 Hashing und Verkettung. 2 Offene Adressierung

One of the few resources increasing faster than the speed of computer hardware is the amount of data to be processed. Bin Hu

Hashing II. Übersicht. 1 Hashing und Verkettung. 2 Offene Adressierung

Satz 23 In einer Hashtabelle der Größe n mit m Objekten tritt mit Wahrscheinlichkeit

Transkript:

Hash-Join lgorithmen dvanced Topics in Databases Ws08/09 atthias ichly

Einleitung 2 Grundlage ist das Paper: Join Processing in Database Systems With Large ain emories Quelle: C Transactions on Database Systems (TODS) Volume 11, No. 3 Pages: 239 264 September 1986 utor: Leonard D. Shapiro Professor of Computer Science

Gliederung 3 Hash-Join lgorithmen allgemein Einfacher Hash-Join GCE Hash-Join Hybrid Hash-Join Vergleich der lgorithmen Partition Overflow

Hash-Join lgorithmen allgemein 4 klassisch: kleinere elation passt in Hauptspeicher Erzeuge Hash-Tabelle für Tupel aus in Hauptspeicher, gehasht auf die Join-ttribute lies andere elation S sequenziell, berechne für jedes Tupel den Hashwert und prüfe unter diesem Wert in der Hash-Tabelle, ob es passende Tupel gibt hier: kleinere elation passt nicht in Hauptspeicher partitioniere zunächst und S in disjunkte Teilmengen, joine dann sich entsprechende Teilmengen Partitionierung: teile Wertebereich der Hashfunktion h in Teilmengen H 1,,H n ; ein Tupel t landet in Partition P i, wenn h(t) H i lgorithmen erfordern, dass die Partitionierung Partitionen bestimmter Größe liefert

Notation/nnahmen 5 zu berechnen ist der Equijoin der elationen und S, beide sind weder geordnet noch indiziert - nzahl der Blöcke, die belegt (entsprechend für S) S - für Join zu Verfügung stehender Hauptspeicher - nzahl der zu Verfügung stehenden Blöcke im HS ( Large ain emory ) die Partitionierung funktioniert perfekt, keine Partition wird größer als erwartet bei I/O-Kosten: erstes Einlesen und usgabe des Join- Ergebnisses zählen nicht mit

Einfacher Hash-Join 6 lgorithmus: wähle eine Hashfunktion h und eine Teilmenge H ihres Wertebereichs, so dass alle -Tupel, die in H gehasht werden, gerade in passen lies, für jedes Tupel r: wenn h(r) H, füge es in Hashtabelle in ein; sonst schreibe es in eine extra Datei auf Disk lies S, für jedes Tupel s: wenn h(s) H, suche in Hashtabelle nach atches und gib diese aus; sonst schreibe s in eine extra Datei auf Disk wiederhole die Schritte für die übrig gebliebenen Tupel aus den beiden extra Dateien, solange bis keine -Tupel mehr übrig bleiben

Einfacher Hash-Join - nimation 7 Hauptspeicher einlesen S einlesen Hash-Tabelle atch? Join- Ergebnis h(t) H? Drop -est S-est S

8 Einfacher Hash-Join I/O-Kosten lgorithmus benötigt Durchläufe Schreiben und wieder Einlesen der -Tupel in/aus extra Datei: Schreiben und wieder Einlesen der S-Tupel in/aus extra Datei: nnahme: Gleichverteilung der Join-ttribute in und S gesamt: ( ) ( ) i i i i i 2 1 1 2 2 2 1 1 1 ( ) ( ) S S S i S S i S i i i 2 1 1 2 2 2 1 1 1 ( ) ( ) ( ) + + S S 1 2 1 1 2

Einfacher Hash-Join Fazit 9 gut, wenn fast ganz in Hauptspeicher passt große Teile von und S werden dann nur einmal gelesen schlecht, wenn nur wenig von in Hauptspeicher passt viele Durchläufe nötig

GCE Hash-Join 10 Phase 1 Phase 2 lgorithmus: wähle Hashfunktion h und Teilmengen ihres Wertebereichs, so dass alle -Partitionen etwa gleich groß werden, lege für jede Partition einen usgabepuffer in an lies, für jedes Tupel r: berechne h(r) und füge r in den entsprechenden usgabepuffer ein; wenn ein Puffer voll ist, schreibe ihn auf Disk; am Ende schreibe alle Puffer auf Disk lies S, verfahre wie bei für jede -Partition i : lies i in und erzeuge dabei Hashtabelle lies S i, für alle Tupel s: berechne h(s) und prüfe in Hashtabelle auf atches, gib diese ggf. aus

GCE Hash-Join nimation (Phase 1) 11 Hauptspeicher einlesen S einlesen h(t)? Bucket1 Bucket2 -Bucket1 -Bucket2 S S-Bucket1 S-Bucket2

GCE Hash-Join nimation (Phase 2) 12 Hauptspeicher Hash-Tabelle atch? Join- Ergebnis Drop -Bucket1 -Bucket2 S S-Bucket1 S-Bucket2

GCE Hash-Join I/O-Kosten 13 Schreiben der partitionierten elationen auf Disk + S Einlesen der partitionierten elationen von Disk + S I/O Einsparungen, wenn mehr als Blöcke HS zur Verfügung stehen Blöcke können zwischengespeichert werden min( + S, - ) 2 gesamt: 2 (( + S ) - min( + S, - ))

GCE Hash-Join Fazit 14 gut, wenn wenig (nicht viel mehr als ) Blöcke Hauptspeicher zur Verfügung stehen vermeidet im Ggs. zum einfachen Hash-Join, dass Blöcke wiederholt eingelesen werden müssen schlecht, wenn große Teile von in den Hauptspeicher passen immer 2 Durchläufe

Hybrid Hash-Join 15 Idee: kombiniere die Vorteile von den beiden vorangegangenen lgorithmen nutze so wenig wie möglich Blöcke von, um in Phase 1 Partitionen zu erzeugen, die in Phase 2 gerade in passen; verfahre mit diesen wie beim GCE Hash-Join nutze den est der Blöcke von, um für eine Partition eine Hashtabelle in aufzubauen, die schon in Phase 1 zum Joinen verwendet wird (einfacher Hash-Join) Konstante B mindestens benötigte nzahl an Partitionen, die in Phase 1 auf Disk erzeugt werden, so dass jede entstehende -Partition nicht mehr als Blöcke verbraucht

Hybrid Hash-Join 16 lgorithmus: wähle Hashfunktion h und Teilmengen H 0,,H B ihres Wertebereichs, so dass für eine Partition 0 mit -B Blöcken entsteht, und Partitionen 1,, B gleicher Größe ( Blöcke) entstehen verwende B Blöcke von als usgabepuffer und den est für eine Hashtabelle der Partition 0 Phase 1 lies, für jedes Tupel r: berechne h(r); wenn h(r) H 0, füge r in Hashtabelle ein, sonst in den entsprechenden Puffer; ist Puffer voll: schreibe auf Disk, am Ende alle Puffer auf Disk schreiben lies S, für jedes Tupel s: berechne h(s); wenn h(s) H 0, prüfe auf atches in der Hashtabelle von 0 und gib Tupel ggf. aus, sonst schreibe s in den entsprechenden Puffer, Phase 2 (GCE) wiederhole für i 1,,B lies i und erzeuge Hashtabelle davon in lies S i, für jedes Tupel s: berechne h(s) und prüfe in Hashtabelle von i auf atches, gib ggf. Tupel aus

Hybrid Hash-Join nimation (Phase 1) B 1 17 Hauptspeicher einlesen S einlesen h(t) H 0? atch? Join- Ergebnis Puffer 1 0 Hash-Tabelle Drop S -Bucket1 S-Bucket1

Hybrid Hash-Join nimation (Phase 2) 18 B 1 Hauptspeicher Hash-Tabelle atch? Join- Ergebnis Drop S -Bucket1 S-Bucket1

Hybrid Hash-Join 19 Herleitung der Formel für Konstante B: B mindestens benötigte nzahl an Partitionen, die in Phase 1 auf Disk erzeugt werden, so dass jede entstehende -Partition nicht mehr als Blöcke verbraucht B B B ( 1) nzahl der Blöcke von, die in Phase 2 bearbeitet werden müssen B Blöcke im Hauptspeicher B B B ( B) 1 + B ist das theoretische inimum, also : B 1

Hybrid Hash-Join I/O-Kosten 20 q: nteil von 0 an q 0 / ( -B) / Größe von S 0 q S nnahme: Gleichverteilung der Join-ttribute in und S d.h. der nteil von und S, der auf Disk geschrieben wird ( 1 B und S 1 S B ), ist (1-q) Schreiben und wieder Einlesen der Partitionen von und S auf Disk 2 ( + S ) (1-q)

Hybrid Hash-Join Fazit 21 verbindet die Vorteile von einfachen Hash-Join und GCE-Join wenn wenig Hauptspeicher ( ) zur Verfügung steht GCE-Join wenn viel Hauptspeicher zur Verfügung steht, können große Teile schon in Phase 1 verjoint werden ( einfacher Hash-Join)

I/O-Kosten-Vergleich der lgorithmen 22 Hybrid Hash-Join dominiert einfachen Hash-Join identisch, wenn mehr als /2 Blöcke in passen sonst: einfacher Hash-Join schreibt und liest einige Blöcke mehrfach Hybrid Hash-Join dominiert GCE Hash-Join GCE: 2 (( + S ) - min( + S, - )) Hybrid: 2 (( + S ) - q ( + S )) GCE Hash-Join dominiert Sort-erge-Join in typischen Fällen usnahme: und S sind ähnlich groß Hybrid Hash-Join dominiert Sort-erge-Join Einfluss von Partition Overflows auf Laufzeit von Hashbasierten lgorithmen nicht im Paper beschrieben; Kostenabschätzungen sind zu optimistisch

I/O-Kosten-Vergleich der lgorithmen 23 Beispiel 800, S 1600 Blockgröße: 512 kbytes, Lesen / Schreiben eines Blocks: 30 ms Sort-erge einfacher Hash-Join GCE Hybrid Hash-Join 300,00 benötigte Zeit für I/O in Sekunden 250,00 200,00 150,00 100,00 50,00 0,00 0 100 200 300 400 500 600 verfügbarer Hauptspeicher in Bytes

Partition Overflow 24 nnahme, dass man die Hashfunktion/Teilmengen so wählen kann, dass entstehende Partitionen genau die gewünschte Größe haben, ist unrealistisch benötigt genaues Wissen über die Werteverteilung der Joinattribute in den elationen bei speziellen Verteilungen auch gar nicht möglich in der ealität werden manche Partitionen zu leer bleiben und andere ihre Größenbeschränkung überschreiten, also nicht mehr in passen nur relevant für Partitionen der kleineren elation

Partition Overflow - Lösungsansätze 25 Partition Overflow auf Disk: zu große Partitionen überarbeiten teilen in 2 (oder mehr) kleinere Partitionen oder: teilen in eine große Partition, die gerade in passt und est zu einer anderen, zu leer gebliebenen Partition hinzufügen Partition Overflow in (einfacher Hash): einige Buckets der Hashtabelle in zu den anderen, nicht bearbeiteten Tupeln, auf Disk schreiben Partition Overflow in (Hybrid Hash): ( 0 wird zu groß) einige Buckets zu einer neuen Partition B+1 zuordnen und auf Disk schreiben

bschluss 26 ENDE FGEN???