Vorlesung Datenbanksysteme vom 27.10.2004
Prüfungsvorbereitung: Physische Datenorganisation und
Anfragebearbeitung
Beispiel
p
A
p.PersNr=v.gelesenVonπ
s.Semesterσ
p.Name = ´Sokrates´A
v.VorlNr=h.VorlNrNested loop join verwenden.
Relationengrößen
|p|=800
|s|=38000
|v|=2000
|h|=60000
Durchschn Tupelgrößen p: 50 Bytes
S: 50 Bytes v: 100 Bytes h: 16 Bytes Selektivitäten
Sel[sh] = 2.6 * 10^-5
Sel[hv] = 5 * 10^-4
Beispiel
Nested loop join verwenden.
Relationengrößen
|p|=800
|s|=38000
|v|=2000
|h|=60000
Durchschn Tupelgrößen p: 50 Bytes
S: 50 Bytes v: 100 Bytes h: 16 Bytes Selektivitäten
Sel[sh] = 2.6 * 10^-5 Sel[hv] = 5 * 10^-4
#Tupel pro Seite:
p: c 1024/50 d =20 s: c 1024/50 d = 20 v: c 1024/100d = 10 h: c 1024/16d = 64
(Seitenoverhead wird ignoriert)
#Seiten:
p: 800/20 = 40
s: 38000/20 = 1900
Beispiel
Access(p) NL - A
s.MatrNr=h.MatrNrNL - A
p.PersNr=v.gelesenVonπ
s.Semesterσ
p.Name = ´Sokrates´NL - A
v.VorlNr=h.VorlNrh
v
s
Beispiel
Access(p) NL - A
s.MatrNr=h.MatrNrNL - A
p.PersNr=v.gelesenVonπ
s.Semesterσ
p.Name = ´Sokrates´NL - A
v.VorlNr=h.VorlNrs h
v
Beispiel
Access(p) NL - A
s.MatrNr=h.MatrNrNL - A
p.PersNr=v.gelesenVonπ
s.Semesterσ
p.Name = ´Sokrates´NL - A
v.VorlNr=h.VorlNrs h
v
Beispiel
Access(p) NL - A
s.MatrNr=h.MatrNrNL - A
p.PersNr=v.gelesenVonπ
s.Semesterσ
p.Name = ´Sokrates´NL - A
v.VorlNr=h.VorlNrs h
v
Beispiel
Access(p) NL - A
s.MatrNr=h.MatrNrNL - A
p.PersNr=v.gelesenVonπ
s.Semesterσ
p.Name = ´Sokrates´NL - A
v.VorlNr=h.VorlNrs h
v
Beispiel
Access(p) NL - A
s.MatrNr=h.MatrNrNL - A
p.PersNr=v.gelesenVonπ
s.Semesterσ
p.Name = ´Sokrates´NL - A
v.VorlNr=h.VorlNrs h
v
Beispiel
s h
v Access(p) NL - A
s.MatrNr=h.MatrNrNL - A
p.PersNr=v.gelesenVonπ
s.Semesterσ
p.Name = ´Sokrates´NL - A
v.VorlNr=h.VorlNrBeispiel 2
s
h
NL - A
s.MatrNr=h.MatrNrNL - A
p.PersNr=v.gelesenVonπ
s.Semesterσ
NL - A
v.VorlNr=h.VorlNrBeispiel 2
s
h
NL - A
s.MatrNr=h.MatrNrNL - A
p.PersNr=v.gelesenVonπ
s.Semesterσ
NL - A
v.VorlNr=h.VorlNrBeispiel 2
s
h
NL - A
s.MatrNr=h.MatrNrNL - A
p.PersNr=v.gelesenVonπ
s.Semesterσ
NL - A
v.VorlNr=h.VorlNrBeispiel 2
s
h
NL - A
s.MatrNr=h.MatrNrNL - A
p.PersNr=v.gelesenVonπ
s.Semesterσ
NL - A
v.VorlNr=h.VorlNrBeispiel 2
s
h
NL - A
s.MatrNr=h.MatrNrNL - A
p.PersNr=v.gelesenVonπ
s.Semesterσ
NL - A
v.VorlNr=h.VorlNrBeispiel 2
s
h
NL - A
s.MatrNr=h.MatrNrNL - A
p.PersNr=v.gelesenVonπ
s.Semesterσ
NL - A
v.VorlNr=h.VorlNrBeispiel 3
Beispiel 3
Beispiel 3
Beispiel 3
Beispiel 3
Beispiel 3
Beispiel 3
Beispiel 3
Beispiel 3
Beispiel 3b
Beispiel 3c
Beispiel 3d
Beobachtungen
Joinreihenfolgen haben SEHR großen Einfluß auf die Queryevaluationszeiten!
Man kann Kosten von Operationen und Größen von (Zwischen)resultaten GETRENNT berechnen.
Die Wahl eines Joinoperators hat nur lokalen Einfluss auf die Laufzeit der Query, außer er zerstört eine für weitere
Operationen wichtige Eigenschaft der Daten wie Sortierung.
Beispiel 4: Selektivitätsabschätzungen
Diesmal sind keine Selektivitäten gegeben, dafür ist bekannt, daß
• Professoren (p) in einem 1:n Verhältnis mit Vorlesungen (v) stehen (mit Fremdschlüssel gelesen_von).
• Jeder Professor entweder Grad
„Ordinarius“ oder „Extraordinarius“ hat.