pptx - Institut für Informationssysteme

Werbung
Datenbanken
Prof. Dr. Ralf Möller
Universität zu Lübeck
Institut für Informationssysteme
Karsten Martiny (Übungen)
Architektur eines DBMS
Architecture of a DBMS / Course Outline
Applications
Anwendungen
SQL
Interface
SQL-Schnittstelle
Figure inspired by Ramakrishnan/ Gehrke: “Dat abase Management Systems”, McGraw-Hill 2003.
Webformulare
Web
Forms
Ausführer
Executor
Parser
Parser
Operator
Evaluator
Operator-Evaluierer
Optimizer
Optimierer
Transaction
Transaktions
Manager
Dateiverwaltungsund Zugriffsmethoden
Files and Access
Methods
Verwalter
Puffer-Verwalter
Buffer
Manager
Lock
SperrVerwalter
Manager
Verwalter
für Manager
externen
Disk
Space
RWiederecovery
herstellungsManager
Verwalter
dieser Teil des
thiscourse
Kurses
SQL-Kommandos
SQLCommands
Speicher
DBMS
Dateien
für Daten
und Indexe...
data
files,
indices,
Fall 2008
Datenbank
Database
Systems Group — Department of Computer Science — ETH Zürich
3
2
Anfragebeantwortung
Aggregation
SELECT C.CUST_ID, C.NAME, SUM (O.TOTAL) AS REVENUE
FROM CUSTOMERS AS C, ORDERS AS O
Selektion
WHERE C.ZIPCODE BETWEEN 8000 AND 8999
AND C.CUST_ID = O.CUST_ID
Join
GROUP BY C.CUST_ID
Gruppierung
ORDER BY C.CUST_ID, C.NAME
Sortierung
Ein DBMS muss eine Menge von Aufgaben erledigen:
• mit minimalen Ressourcen
• über großen Datenmengen
• und auch noch so schnell wie möglich
3
Danksagung
• Diese Vorlesung ist inspiriert von den Präsentationen
zu dem Kurs:
„Architecture and Implementation of Database
Systems“
von Jens Teubner an der ETH Zürich
• Graphiken und Code-Bestandteile wurden mit
Zustimmung des Autors und ggf. kleinen Änderungen
aus diesem Kurs übernommen
4
Sortierung
Wichtige Datenbankoperation mit vielen Anwendungen
• Eine SQL-Anfrage kann Sortierung anfordern
SELECT A,B,C FROM R ORDER BY A
• Bulk-loading eines B+-Baumes fußt auf sortierten
Daten
• Duplikate-Elimination wird besonders einfach
SELECT DISTINCT A,B,C FROM R
• Einige Datenbankoperatoren setzen
sortierte Eingabedateien
voraus
(kommt
später)
Wie können wir eine Datei
sortieren,
die
nicht in den Hauptspeicher passt (und auf
keinen Fall in den vom Pufferverwalter
bereitgestellten Platz)?
5
Zwei-Wege-Mischsortieren (Merge Sort)
Sortierung von Dateien beliebiger Größe in nur 3 Seiten
aus dem Pufferverwalter
• Sortierung von N Seiten in mehreren Durchgängen
6
Beispiel
Illustration / Example
input file
65
43
47
89
52
13
8
Pass 0
1-page runs
56
34
47
89
25
13
8
Pass 1
2-page runs
34
56
47
89
12
35
8
Pass 2
4-page runs
34
45
67
89
12
35
8
Pass 3
7-page run
Fall 2008
12 33 44 55 67 88 9
Systems Group — Department of Computer Science — ETH Zürich
7
123
Zwei-Wege-Mischsortieren
Pass 0
(Input: N = 2k unsorted pages; Output: 2k sorted runs)
1. Read N pages, one page at a time
2. Sort records in main memory.
3. Write sorted pages to disk (each page results in a run).
This pass requires one page of buffer space.
Pass 1
(Input: N = 2k sorted runs; Output: 2k− 1 sorted runs)
1. Open two runs r1 and r2 from Pass 0 for reading.
2. Merge records from r1 and r2, reading input page-by-page.
3. Write new two-page run to disk (page-by-page).
This pass requires three pagesof buffer space.
..
.
Pass n
(Input: 2k− n+ 1 sorted runs; Output: 2k− n sorted runs)
1. Open two runs r1 and r2 from Pass n − 1for reading.
2. Merge records from r1 and r2, reading input page-by-page.
3. Write new 2n -page run to disk (page-by-page).
This pass requires three pagesof buffer space.
..
.
Fall 2008
Systems Group — Department of Computer Science — ETH Zürich
122
8
I/O-Verhalten
• Um eine Datei mit N Seiten zu sortieren, werden in
jedem Durchgang N Seiten gelesen und
geschrieben
⟶ 2∙N I/O-Operationen pro Durchgang
• Anzahl der Durchgänge: 1 + ⎡ log2 N ⎤
Durchgang 0
Durchgänge 1..k
• Anzahl der I/O-Operationen:
2 ∙ N ∙ (1 + ⎡ log2 N ⎤ )
9
Aufgabe:
Anzahl der Durchgänge: 1 + ⎡ log2 N ⎤
Anzahl der I/O-Operationen:
2 ∙ N ∙ (1 + ⎡ log2 N ⎤ )
Wie lange dauert die Sortierung einer
8GB Datei bei einer Travelstar 7k200?
– ts = 10 ms, tr = 4.17 ms, ttr = 0,16ms, 8KB pro Seite
10
Lösung
≈ 6d
(Herleitung an der Tafel)
11
Externes Mischsortieren
• Bisher freiwillig nur 3 Seiten verwendet
• Wie kann ein großer Pufferbereich genutzt werden:
B Seiten auf einmal bearbeiten
• Zwei wesentliche Stellgrößen
– Reduktion der initialen Durchgänge durch
Verwendung
des Pufferspeichers beim Sortieren im Hauptspeicher
– Reduktion der Anzahl der Durchgänge durch Mischen
von mehr als 2 Seiten
12
Reduktion der Anzahl der Durchgänge
Reducing the Number of Initial Runs
Mit
Seitenavailable
im Puffer
B we
Seiten
eingelesen
WithBBframes
in thekönnen
buffer pool,
can read
Bpages at
und
Hauptspeicher
werden
a timeim
during
Pass 0 and sort sortiert
them in memory
(% slide 122):
Pass 0
(Input: N unsorted pages; Output: :d:N:/:B:e: sorted
runs)
: : : : : : : : : : : :
1. Read N pages, B
pagesat a time
: : : : : : : : : : : : : : : : : :
2. Sort records in main memory.
3. Write sorted pages to disk (resulting in d: N: /: B: eruns).
: : : : : :
This pass uses :Bpagesof
buffer space.
: : : : : : :
•TheAnzahl
der
I/O-Operationen:
number of
initial
runsdetermines the number of passeswe
need to make (% slide 124):
2 ∙ N ∙ (1 + ⎡⌃log2 ⎡ N/B
⌥⎤ ⎤ )
Total number of I/ O operations: 2 · N · 1+ log2 dN/ Be
!
.
• Was ist das Zugriffsmuster auf diese Ein-Ausgaben?
How many I/ Osdoesit now take to sort an 8 GBfile?
Fall 2008
Systems Group — Department of Computer Science — ETH Zürich
126
13
Aufgabe:
Wie lange dauert die Sortierung einer
8GB Datei mit B=1000 Pufferseiten je 8KB mit einer
Travelstar 7k200?
– ts = 10 ms, tr = 4.17 ms, ttr = 0,16ms, 8KB pro Seite
Anzahl der Durchgänge: 1 + ⎡ log2 ⎡ N /B ⎤ ⎤
Anzahl der I/O-Operationen:
2 ∙ N ∙ (1 + ⎡ log 2 ⎡ N/B ⎤ ⎤ )
14
Lösung
≈ 3d
(Herleitung an der Tafel)
15
Reduktion der Anzahl der Durchgänge
Mit B Seiten im Puffer können auch B-1 Seiten
gemischt werden (eine Seite dient als Schreibpuffer)
(B-1)-Wege-Mischen:
• Anzahl der I/O-Operationen:
2 ∙ N ∙ (1 + ⎡ logB-1 ⎡ N/B ⎤⎤ )
• Was ist das Zugriffsmuster auf diese Ein-Ausgaben?
16
Aufgabe:
Wie lange dauert die Sortierung einer
8GB Datei mit B=1000 Pufferseiten je 8KB mit einer Travelstar
7k200?
– ts = 10 ms, tr = 4.17 ms, ttr = 0,16ms, 8KB pro Seite
Anzahl der Durchgänge: 1 + ⎡ logB-1 N /B⎤
Anzahl der I/O-Operationen:
2 ∙ N ∙ (1 + ⎡ log B -1 ⎡ N/B ⎤ ⎤ )
17
Lösung
ca. 4 ∙ 106 Plattenzugriffe mit je 14.33ms
≈ 16h
(Herleitung an der Tafel)
18
Blockweise Ein-Ausgabe
Man kann das I/O-Muster verbessern, in dem man
Blöcke von b Seiten in den Mischphasen verarbeitet
• Alloziere b Seiten für jede Eingabe (statt nur eine)
• Reduktion der Ein-Ausgabe um Faktor b
• Preis: Reduzierte Einfächerung (was in mehr
Durchgängen und damit in mehr I/O-Operationen
resultiert)
19
Aufgabe:
Wie lange dauert die Sortierung einer
8GB Datei mit B=1000 Pufferseiten je 8KB und
blockweisem IO mit b=32 bei einer Travelstar 7k200 ?
– ts = 10 ms, tr = 4.17 ms, ttr = 0,16ms, 8KB pro Seite
– 63 Sektoren pro Spur, Track-to-Track-Suchzeit ts,track-to-track =1 ms
– Ein Block mit 8 KB benötigt 16 Sektoren
Anzahl der Durchgänge: 1 + ⎡ log ⎡ B/b ⎤ -1 N /(B/b)⎤
Anzahl der I/O-Operationen:
2 ∙ ⎡ N/b ⎤ ∙ (1 + ⎡ log ⎡ B/b ⎤ -1 ⎡ N/(B/b) ⎤ ⎤
)
20
Lösung
Mit blockweisem I/O (B=1000 Blöcke mit b=32 Seiten):
ca. 8 ∙ 31250 Plattenzugriffe mit je 27.41 ms
≈2h
(Herleitung in der Übung)
21
Hauptsspeicher als Ressource
In der Praxis meist genügend Hauptspeicher
vorhanden, so dass Dateien in einem Mischdurchgang
sortiert werden kann (mit blockweisem I/O).
22
Aufgabe:
Wieviel Hauptspeicher wird bei Pufferseiten mit je 8KB und
blockweisem IO mit b=32 benötigt, so dass ein
Mischvorgang für eine 8GB Datei reicht?
Anzahl der Durchgänge: 1 + ⎡ log ⎡ B/b ⎤ -1 N /(B/b)⎤
⎡
log ⎡ B/b ⎤ -1 ⎡ N/(B/b) ⎤ ⎤ = 1
23
Lösung
≈ 1h
(Herleitung in der Übung)
24
Bisher nur IO-Zeit betrachtet
Selection Trees
Auswahl des nächsten Datensatzes aus
Choosing the next record from B − 1(or B/ b − 1) input runs can be
B-1
(oder B/b -1) Eingabeläufen kann
quite CPU intensive (B − 2 comparisons).
CPU-intensiv
sein (B-2 Vergleiche)
I Use a selection tree to reduce this cost .
• Verwende
Auswahlbaum
zur
Kostenreduktion
I E.g., “tree of
losers” (% D. Knuth,
TAoCP
, vol. 3):
23
(„Tree of Losers“)
95
79
142
91
985
985
..
.
650
670
23
..
.
850
132
873
91 670 605 850 873
..
..
..
..
..
.
.
.
.
.
190
79 190 132
..
..
..
.
.
.
278
412
390
901
95 412 142 390 278 901
..
..
..
..
..
..
.
.
.
.
.
.
• Reduktion
der
Vergleiche
auf log
(B-1)
I This cuts the
number
of comparisons
to 2log
(B − 1).
2
Fall 2008
Systems
— The
Department
of Computer
Science — ETH Zürich
D.Group
Knuth,
Art of Computer
Programming,vol.3,
1973
130
25
Externes Sortieren: Diskussion
• Misch-Schritte können auch parallel ausgeführt
werden
• Bei ausreichend Speicher reichen zwei Durchgänge
auch für große Dateien
• Mögliche Optimierungen:
– Seitenersetzung während des Sortierens: Erneutes
Laden neuer Seiten während des initialen Laufs
(dadurch Erhöhen der initialen Lauflänge)
– Doppelpufferung: Verschränkung des
Seitenladevorgangs und der Verarbeitung, um
Latenzzeiten der Festplattenspeicher zu kaschieren
26
Datenbanken
Prof. Dr. Ralf Möller
Universität zu Lübeck
Institut für Informationssysteme
Karsten Martiny (Übungen)
Ausführungspläne
Query Plans
• Externes Sortieren ist eine
External sorting is one
Instanz
instance
of eines
a (physical)
physikalischen
FETCH
I XSCAN
database
operator.
/
\
/
\
I Operators
RI DSCN Tabl e:
I ndex:
Tabl e:
Datenbankoperators
can be assembled
|
G_PRE_SI ZE G_PRE_SI ZE G_PRE_SI ZE
into a query execution plan.
SORT
DOC
PARENT_I DX DOC
•
Operatoren können zu
|
I Each plan operator performs
I XSCAN
Ausführungsplänen
/
\
one
sub-task of a given
I ndex:
Tabl e:
zusammengesetzt
werden
G_PRE_SI ZE G_PRE_SI ZE
query.
Together, the
PROP_I DX
DOC
of a plan evaluateführt
• operators
Jeder Planoperator
the full query.
Actual DB2 execution(DB2)
plan.
Ausführungsplan
zur Verarbeitung einer vollständigen Anfrage eine
I We’ll have a deeper look into join operatorsnext .
Unteraufgabe aus
RETURN
|
NLJOI N
/ ---/
\ ---\
I
Wir werden zunächst Verbundoperatoren betrachten
Fall 2008
Systems Group — Department of Computer Science — ETH Zürich
132
28
The Verbundoperator
Join Operator 1 (Join) R⋈S
The join operator 1 p is actually a short-hand for a combination of
Ein Verbundoperator ⋈p ist eine Abkürzung für die
crossproduct ⇥ and selection σp.
Zusammensetzung von Kreuzprodukt × und Selektion
sp
,
1p
R
σp
⇥
S
R
S
One
way toergibt
implement
follow this
equivalence:
p is to
Daraus
sich 1eine
einfache
Implementierung
von
1. Enumerate all records in the cross product of Rand S.
⋈
p
2. Then
pick those
that
satisfy p. aus R × S
1.
Enumeriere
alle
Datensätze
More
try to
the obvious inefficiency in
2. advanced
Wähle diealgorithms
Datensätze,
dieavoid
p erfüllen
Step 1(the size of the intermediate result is |R| · |S|).
Ineffizienz aus Schritt 1 kann überwunden werden
29
Verbund-als-geschachtelte-Schleifen
Nested Loops Join
The nested loopsjoin is the straightforward implementation of
Einfache
Implementierung des Verbundes:
the σ–⇥ combination:
1
Function: nl j oi n ( R, S, p)
2
foreach record r 2 Rdo
foreach record s 2 Sdo
if hr, si satisfies p then
append hr, si to result
3
4
5
Sei
und
NS number
die Seitenzahl
R und
und p
Let NN
and
NS the
of pagesininRand
S; letS,
pRsei
andppR
RR
S be the S
die
Anzahl
der Datensätze
proS.Seite in R und S
number
of records
per page in Rand
Anzahl
Plattenzugriffe:
The totalder
number
of disk readsis then
NNRR ++ ppRr ·∙NNRR·N∙S N. S
| {z }
#Tupel in#Rtuples in R
Fall 2008
Systems Group — Department of Computer Science — ETH Zürich
134
30
Verbund-als-geschachtelte-Schleifen
Nur 3 Seiten nötig (zwei Seiten fürs Lesen von R und
S und eine um das Ergebnis zu schreiben)
I/O-Verhalten: Leider sehr viele Zugriffe
• Annahme pR = pS = 100, NR = 1000, Ns = 500:
1000 + 5 ∙ 107 Seiten zu lesen
• Mit einer Zugriffszeit von 10ms für jede Seite dauert
der Vorgang 140 Stunden
• Vertauschen von R und S (kleinere Relation S nach
außen) verbessert die Situation nur marginal
Seitenweises Lesen bedingt volle Plattenlatenz, obwohl beide Relationen in
sequentieller Ordnung verarbeitet werden.
31
Blockweiser
Verbund
mit Schleifen
Block
Nested Loops
Join
Again we canvon
saveKosten
random durch
access cost
by reading
Rand Sin
Einsparung
wahlfreien
Zugriff
durch
blocksof, say, bR and bS pages.
blockweises
Lesen von R und S mit bR und bS vielen
Seiten
1
Function: bl ock nl j oi n ( R, S, p)
2
foreach bR-sized block in Rdo
foreach bS-sized block in Sdo
find matches in current R- and S-blocks and
append them to the result ;
3
4
Ris still
read once,gelesen,
but now with
only
dNRnur
/ bRe disk
seeks.
• RI wird
vollständig
aber
mit
⎡NR/b
R⎤
I Sis scanned only dNR/ bRe times now, and we need to perform
Lesezugriffen
dNR/ bRe · dNS/ bSe disk seeks to do this.
• S nur ⎡NR/bR⎤ mal gelesen,
mit ⎡NR/bR⎤ ∙ ⎡NS/bS⎤ Plattenzugriffen
Fall 2008
Systems Group — Department of Computer Science — ETH Zürich
32
136
Wahl von bR und bS
Choosing bR and bS
Pufferbereich
mit
B B==100
Rahmen,
NR =NS1000,
E.g., buffer pool
with
100 frames,
NR = 1000,
= 500: NS =
500:
Blockgröße fürs Lesen von S (b )
block size used for reading S(bSs)
Plattenzugriffe
disk seeks
7000
90
80
70
60
50
40
30
20
10
7000
6000
6000
5000
5000
4000
4000
3000
3000
2000
2000
1000
1000
0
10
20
30
40
50
60
70
80
90
0
block
size used
reading
R(b
Blockgröße
fürsfor
Lesen
von R
(bR))
R
Fall 2008
Systems Group — Department of Computer Science — ETH Zürich
137
33
Datenbanken
Prof. Dr. Ralf Möller
Universität zu Lübeck
Institut für Informationssysteme
Karsten Martiny (Übungen)
Blockweiser
Verbund
mit Schleifen
Block
Nested Loops
Join
Again we canvon
saveKosten
random durch
access cost
by reading
Rand Sin
Einsparung
wahlfreien
Zugriff
durch
blocksof, say, bR and bS pages.
blockweises
Lesen von R und S mit bR und bS vielen
Seiten
1
Function: bl ock nl j oi n ( R, S, p)
2
foreach bR-sized block in Rdo
foreach bS-sized block in Sdo
find matches in current R- and S-blocks and
append them to the result ;
3
4
Ris still
read once,gelesen,
but now with
only
dNRnur
/ bRe disk
seeks.
• RI wird
vollständig
aber
mit
⎡NR/b
R⎤
I Sis scanned only dNR/ bRe times now, and we need to perform
Lesezugriffen
dNR/ bRe · dNS/ bSe disk seeks to do this.
• S nur ⎡NR/bR⎤ mal gelesen,
mit ⎡NR/bR⎤ ∙ ⎡NS/bS⎤ Plattenzugriffen
Fall 2008
Systems Group — Department of Computer Science — ETH Zürich
35
136
Performanz des Hauptspeicher-Verbunds
In-Memory Join Performance
• Zeile 4 in block_nljoin(R, S, p) bedingt einen
I Line 4 in bl ock nl j oi n ( R, S, p) implies an in-memory join
Hauptspeicherverbund
Blocken
aus R und
between the R- and Szwischen
-blocks currently
in memory.
S
I Building a hash table over the R-block can speed up this join
considerably.
• Aufbau einer
Hashtabelle kann den Verbund
erheblich
beschleunigen
1 Function: bl ock nl j oi n’ ( R, S, p)
2
3
4
5
6
foreach bR-sized block in Rdo
build an in-memory hash table H for the current R-block ;
foreach bS-sized block in Sdo
foreach record s in current S-block do
probe H and append matching hr, si tuples to result ;
I
Note that this optimization only helps equi-joins.
• Funktioniert nur für Equi-Verbunde
Fall 2008
Systems Group — Department of Computer Science — ETH Zürich
138
36
Indexbasierte Verbunde R⋈S
Index Nested Loops Join
Verwendung
eines
Index
für die
innereofRelation
S the
The index nested
loops
join takes
advantage
an index on
(ggf.
innere
und
äußere
inner
relation
(swap
outer $vertauschen)
inner if necessary):
1
Function: i ndex nl j oi n ( R, S, p)
2
foreach record r 2 Rdo
probe index using r and append all matching
tuples to result ;
3
• Index
muss
verträglich
mit der
Verbundbedingung
I The
index must
be compatible
with
the join condition p.
sein I Hash indices, e.g., only support equality predicates.
I
Remember
about composite keys in
– Hash-Index
(nurthe
fürdiscussion
Gleichheitsprädikate)
B+-trees (% slide 73).
– Vergleiche auch die Diskussion über
I Such predicates are also called sargable
(SARG: search
zusammengesetzte Schlüssel in B+-Bäumen
argument % Selinger et al., SIGMOD 1979)
• ArgumenteAccess
heißen
„sargable“ (SARG= search
Path Selection in a Relational Database
Management System, Selinger et al., SIGMOD 1979
argument)
Fall
2008
Systems Group — Department of Computer Science — ETH Zürich
37
139
I/O-Verhalten
Für jeden Datensatz in R verwende Index zum
Auffinden von korrespondierenden S-Tupeln. Für
jedes R-Tupel sind folgende Kosten einzukalkulieren:
1. Zugriffskosten für den Index zum Auffinden des
ersten Eintrags: Nidx I/O-Operationen
2. Entlanglaufen an den Indexwerten (Scan), um
passende Rids zu finden (I/O-Kosten
vernachlässigbar)
3. Holen der passenden S-Tupel aus den Datenseiten
– Für ungeclusterten Index: n I/O-Operationen
– Für geclusterten Index: ⎡n/ps⎤ I/O-Operationen
Wegen 2. und 3. Kosten von der Verbundgröße
abhängig
38
Zugriffskosten für Index
Falls Index ein B+-Baum:
• Einzelner Indexzugriff benötigt Zugriff auf h Indexseiten1
• Bei wiederholtem Zugriff sind diese Seiten im Puffer
• Effektiver Wert der I/O-Kosten 1-3 I/O-Operationen
Falls Index ein Hash-Index:
• Caching nicht effektiv (kein lokaler Zugriff auf Hashfeld)
• Typischer Wert für I/O-Kosten: 1,2 I/O-Operationen
(unter Berücksichtigung von Überlaufseiten)
Index rentiert sich stark, wenn nur einige Tupel aus
einer großen Tabelle im Verbund landen
1
h = Höhe des B+-Baumes
39
Sortier-Misch-Verbund
Sort-Merge
Join
Verbundberechnung
wird einfach wenn
Join computation becomes
particularly
simple if both inputssortiert
are
Eingaberelationen
bzgl.
Verbundattribut(en)
sorted with respect to the join attribute(s).
• Misch-Verbund
mischt Eingabetabellen ähnlich
I The merge join essentially mergesboth input tables, much
wie
likebeim
we didSortieren
for sorting.
I Contrast
to sorting,
however, we
need to be careful
• Es
gibt aber
mehrfache
Korrespondenzen
in der
wheneverRelation
a tuple has multiple matches in the other relation:
anderen
A
" f oo"
" f oo"
" bar "
" baz"
" baf "
B
1
2
2
2
4
1
B= C
C
1
2
2
3
D
false
true
false
true
I Merge join is typically
equi-joinsonly.
• Misch-Verbund
nurused
fürfor
Equi-Verbünde
verwendbar
Fall 2008
Systems Group — Department of Computer Science — ETH Zürich
142
40
Misch-Verbund
1
2
3
4
5
6
8
9
10
11
13
14
/ / ↵ , β: join columns in R, S
r
position of first tuple in R;
s position of first tuple in S;
while r 6
= eof and s 6
= eof do
while r.↵ < s.β do
advance r ;
/ / r, s, s0: cursors over R, S, S
/ / eof: end of file marker
while r.↵ > s.β do
advance s ;
7
12
Function: mer ge j oi n ( R, S, ↵ = β)
s0 s ;
/ / Remember current position in S
while r.↵ = s0.β do
/ / All R-tuples with same ↵ value
s s0 ;
/ / Rewind sto s0
while r.↵ = s.β do
/ / All S-tuples with same β value
append hr, si to result ;
advance s;
advance r ;
15
Fall 2008
Systems Group — Department of Computer Science — ETH Zürich
143
41
I/O-Verhalten
• Wenn beide Eingaben sortiert und keine
außergewöhnlich langen Sequenzen mit identischen
Schlüsselwerten vorhanden, dann ist der I/OAufwand NR + NS (das ist dann optimal)
• Durch blockweises I/O treten fast immer
sequentielle Lesevorgänge auf
• Es kann sich für die Verbundberechnung auszahlen,
vorher zu sortieren, insbesondere wenn später eine
Sortierung der Ausgabe gefordert wird
• Ein abschließender Sortiervorgang kann auch mit
einem Misch-Verbund kombiniert werden, um
Festplattentransfers einzusparen
42
Aufgabe:
Bei welchen Eingaben tritt beim Sortier-Misch-Verbund das
schlimmste Verhalten auf?
43
Lösung
• Wenn all verbundenen Attribute gleiche Werte
beinhalten, dann ist das Ergebnis ein Kreuzprodukt.
• Der Sortier-Misch-Verbund verhält sich dann wie ein
geschachtelte-Schleifen-Verbund.
44
Hash-Verbund
• Sortierung bringt korrespondierende Tupel in eine
„räumliche Nähe“, so dass eine effiziente
Verarbeitung möglich ist
• Ein
ähnlicher
Effekt erreichbar mit Hash-Verfahren
Hash
Join
I Sorting effectively brought related tuples into spacial
• Zerlege
R und
Teilrelationen
R1, ..., Rn und
proximity,
which S
we in
exploited
in the merge join algorithm.
I We can achieve a similar effect with hashing, too.
S1,...,S
der gleichen Hashfunktion (angewendet
n mit
I Partition
Rand Sinto partitions R1, . . . , Rn and S1, . . . , Sn
auf dieusing
Verbundattribute)
the same hash function (applied to the join attributes).
Partition 1(R1 and S1)
Relation R
h
Partition 2 (R2 and S2)
Partition 3 (R3 and S3)
Relation S
..
.
h
Partition n (Rn and Sn )
Sj = ?i ≠
for jall i 6
= j.
• Ri ⋈I RObserve
fürRi 1alle
j = that
Fall 2008
Systems Group — Department of Computer Science — ETH Zürich
145
45
Hash-Verbund
• Durch Partitionierung werden kleine Relationen Ri
and Si geschaffen
• Korrespondierende Datensätze kommen garantiert
in korrespondierende Partitionen der Relationen
• Es muss Ri ⋈ Si (für all i) berechnet werden
(einfacher)
• Die Anzahl der Partitionen n (d.h. die Hashfunktion)
sollte mit Bedacht gewählt werden, so dass Ri ⋈ Si
als Hauptspeicher-Verbund berechnet werden kann
• Hierzu kann wiederum eine (andere) Hashfunktion
Warum eine
verwendet werden (siehe
blockweisen Verbund mit
andere
Schleifen)
Hashfunktion?
46
Hash-Verbund-Algorithmus
Join Algorithm
Hash
1
2
3
4
5
6
7
8
9
10
Function: hash j oi n ( R, S, ↵ = β)
foreach record r 2 Rdo
append r to partition Rh(r.↵ )
foreach record s 2 Sdo
append s to partition Sh(s.β)
foreach partition i 2 1, . . . , n do
build hash table H for Ri , using hash function h0;
foreach block in Si do
foreach record s in current Si -block do
probe H and append matching tuples to result ;
Fall 2008
Systems Group — Department of Computer Science — ETH Zürich
47
147
Gruppierung und Duplikate-Elimination
• Herausforderung: Finde identische Datensätze in
einer Datei
• Ähnlichkeiten zum Eigenverbund (self-join)
basierend auf allen Spalten der Relation
– Man könnte einen Hash-Verbund-ähnlichen
Algorithmus verwenden oder Sortierung, um
Duplikate-Elimination oder Gruppierung zu realisieren
48
Andere Anfrage-Operatoren
Projektion p
• Implementierung durch
a. Entfernen nicht benötigter Spalten
b. Eliminierung von Duplikaten
• Die Implementierung von a) bedingt das Ablaufen
(scan) aller Datensätze in der Datei, b) siehe oben
• Systeme vermeiden b) sofern möglich (in SQL muss
Duplikate-Eliminierung angefordert werden)
Selektion s
• Ablaufen (scan) aller Datensätze
• Eventuell Sortierung ausnutzen oder Index
verwenden
49
Organisation der Operator-Evaluierung
Orchestrating Operator Evaluation
So far wegehen
have assumed
that all database
consume
• Bisher
wir davon
aus, operators
dass Operatoren
and produce files(i.e., on-disk items):
ganze
Dateien verarbeiten
···
σ
⇡
1
···
⇡
···
file1
file2
file3
filen
• Das
erzeugt offensichtlich viel I/O
I Obviously, this causes a lot of I/ O.
I In addition,lange
we sufferAntwortzeiten
from long response times:
• Außerdem:
An operator cannot start computing its result before all
– Ein Operator
kann nicht anfangen solange nicht seine
its input files are fully generated (“materialized”).
Eingaben
vollständig
(materialisiert
Effectively,
all operatorsbestimmt
are executedsind
in sequence.
sind)
– Operatoren werden nacheinander ausgeführt
I
I
Fall 2008
Systems Group — Department of Computer Science — ETH Zürich
152
50
Pipeline-orientierte Verarbeitung
• Alternativ könnte jeder Operator seine Ergebnisse
direkt an den nachfolgenden senden, ohne die
Ergebnisse erst auf die Platte zu schreiben
• Ergebnisse werden so früh wie möglich
weitergereicht und verarbeitet (Pipeline-Prinzip)
• Granularität ist bedeutsam:
– Kleinere Brocken reduzieren Antwortzeit des Systems
– Größere Brocken erhöhen Effektivität von
Instruktions-Cachespeichern
– In der Praxis meist tupelweises Verarbeiten
verwendet
51
Finding the right plan can dramatically impact performance.
Auswirkungen
auf
die
Performanz
SELECT L. L PARTKEY, L. L QUANTI TY, L. L EXTENDEDPRI CE
FROM LI NEI TEM L, ORDERS O, CUSTOMER C
SELECT L.L_PARTKEY, L.L_QUANTITY, L.L_EXTENDEDPRICE
WHFROM
ERELINEITEM
L. L ORD
ERORDERS
KEY =O,O.CUSTOMER
O ORDER
L,
CKEY
WHERE
= O.O
AND L.L
O. OORDERKEY
CUSTKEY
= CORDERKEY
. C CUSTKEY
AND O.O_CUSTKEY = C.C_CUSTKEY
AND AND
C. CC.C_NAME
NAME == ’ ’IBM
I BMCorp.’
Cor p. ’
•
57
Tupelweises
57
Verarbeiten
1
1
14
der Relation C
6 mio
1
6 mio
1
L
1.5mio
• Sofortiges
Weiterleiten
σ
1
1
σ
O
150,000
1.5mio
6 mio
nach der
Selektion
150,000
L
O
C
C
• Kombiniert mit
tupelweisem
Verarbeiten
I In
terms of execution
times, these differences can easily
der Relationen
O und
L
mean
“seconds versus
days.”
Fall 2008
Systems Group — Department of Computer Science — ETH Zürich
163
52
Volcano Iteratormodell
• Aufrufschnittstelle wie bei Unix-Prozess-Pipelines
• Im Datenbankkontext auch Open-Next-CloseSchnittstelle oder Volcano Iteratormodell genannt
• Jeder Operator implementiert
– open() Initialisiere den internen Zustand des
Operators
– next()
Produziere den nächsten Ausgabe-Datensatz
– close() Schließe allozierte Ressourcen
• Zustandsinformation wird Operator-lokal vorgehalten
Goetz Graefe. Volcano—An Extensibel and Parallel Query
Evaluation
System. Trans. Knowl. Data Eng. vol. 6, no. 1, February 1994
53
Beispiel: Selektion (s)
Example: Selection (σ)
I Input operator R, predicate p.
Eingabe:
Relation R, Prädikat p
1
Function: open ( )
2
R.open ( ) ;
1
Function: cl ose ( )
2
R.cl ose ( ) ;
1
Function: next ( )
2
4
while ((r
R.next ( ) ) 6
= eof) do
if p(r) then
return r ;
5
return eof ;
3
Fall 2008
Systems Group — Department of Computer Science — ETH Zürich
156
54
Geschachtelte Schleifen Verbund: VolcanoHow would you implement a Volcano-style nested loops join?
Stil
1
Function: open ( )
2
4
R.open ( ) ;
S.open ( ) ;
r
R.next ( ) ;
1
Function: next ( )
2
while (r 6
= eof) do
while ((s S.next ( ) ) 6
= eof) do
if p(r, s) then
return hr, si ;
3
3
4
5
6
7
8
9
Fall 2008
S.cl ose ( ) ;
S.open ( ) ;
R.next();
sr ⟵ S
.next ( ) ;
1
Function: cl ose ( )
2
R.cl ose ( ) ;
S.cl ose ( ) ;
3
R <- R.next()
return eof ;
Systems Group — Department of Computer Science — ETH Zürich
157
55
Blockierende Operatoren
• Pipelining reduziert Speicheranforderungen und
Antwortzeiten, da jeder Datensatz gleich
weitergeleitet
• Funktioniert so nicht für alle Operatoren
• Welche?
– Externe Sortierung
– Hash-Verbund
– Gruppierung und Duplikate-Elimination über
einer unsortierten Eingabe
• Solche Operatoren nennt man blockierend
• Blockierende Operatoren konsumieren die gesamte
Eingabe in einem Rutsch bevor die Ausgabe erzeugt
56
werden kann (Daten auf Festplatte
Zusammenfassung
Teile-und-Herrsche
• Zerlegung einer großen Anfrage in kleine Teile
• Beispiel:
– Laufgenerierung und externe Sortierung
– Partitionierung mit Hashfunktion (Hash-Verbund)
Blockweises Durchführen von I/O
• Lesen und Schreiben von größeren Einheiten kann die
Verarbeitungszeit deutlich reduzieren, da wahlfreier
Zugriff auf Daten vermieden wird
Pipeline-orientierte Verarbeitung
– Speicherreduktion und Laufzeitverbesserung durch Vermeidung
der vollständigen Materialisierung von Zwischenresultaten
Beim nächsten Mal...
Architecture of a DBMS / Course Outline
Applications
Anwendungen
SQL
Interface
SQL-Schnittstelle
Figure inspired by Ramakrishnan/ Gehrke: “Dat abase Management Systems”, McGraw-Hill 2003.
Webformulare
Web
Forms
Ausführer
Executor
Parser
Parser
Operator
Evaluator
Operator-Evaluierer
Optimizer
Optimierer
Transaction
Transaktions
Manager
Dateiverwaltungsund Zugriffsmethoden
Files and Access
Methods
Verwalter
Puffer-Verwalter
Buffer
Manager
Lock
SperrVerwalter
Manager
Verwalter
für Manager
externen
Disk
Space
RWiederecovery
herstellungsManager
Verwalter
dieser Teil des
thiscourse
Kurses
SQL-Kommandos
SQLCommands
Speicher
DBMS
Dateien
für Daten
und Indexe...
data
files,
indices,
Fall 2008
Datenbank
Database
Systems Group — Department of Computer Science — ETH Zürich
3
58
Herunterladen