cs243: Datenbanken FS 2013 - Universität Basel | Informatik

Werbung
UNIVERSITÄT BASEL
Prof. Dr. Heiko Schuldt
Ihab Al Kabary, MSc
Ilir Fetai, MSc
Nenad Stojni¢, MSc
cs243: Datenbanken
FS 2013
Übung 5
Abgabe: 14.05.2013 (23:59 Uhr)
Modalitäten der Abgabe:
Bitte laden Sie Ihre Lösungen VOR dem Abgabeter-
min auf das courses-System. Verspätet abgegebene Lösungsblätter können nicht
berücksichtigt werden.
Modalitäten der Bearbeitung:
Kleingruppen von bis zu zwei Personen sind
möglich. Geben Sie auf der Lösung die Namen der Gruppenmitglieder an.
Aufgabe 1: Anfrageoptimierung
(10 Punkte)
Diese Aufgabe ist eine Fortsetzung der Aufgabe 1 des letzten Aufgabenblattes. Nehmen
Sie die Optimierung auf Basis von Aufgabe 1 des letzten Aufgabenblattes vor.
Nehmen Sie an, dass alle Attributwerte der Attribute
a, f
und
g
jeweils unter 10 Werten
gleichverteilt und unkorreliert sind. Die Werte der Fremdschlüssel (R.c und
S.e)
sollen
ebenfalls in Bezug auf die Schlüsselwerte gleichverteilt sein. Die Kardinalitäten der Relationen seien mit
Card(R) = 10, Card(S) = 10.000, Card(T ) = 100.000
gegeben.
Berechnen Sie die Grösse der erwarteten Zwischenergebnismengen (Anzahl Tupel) bei der
Ausführung des nichtoptimierten und des optimierten Operatorbaumes!
Aufgabe 2: Messung der Kosten einfacher Anfragen (20 Punkte)
Diese Aufgabe baut auf den Aufgaben zur Kostenschätzung von vergangener Woche (Aufgaben 2 und 3) auf, in der verschiedene Alternativen für den physischen Entwurf einer
Oracle-Datenbank betrachtet und bewertet werden sollten.
In dieser Aufgabe sollen Sie Ihre Schätzungen mit Hilfe einiger Performance-Messungen
überprüfen. Die Voraussetzungen sind die selben wie beim letzten Aufgabenblatt:
Daten
Wir betrachten eine Relation
R,
die zwei numerische Attribute
A
und
B
enthält. Die
beiden Attribute haben jeweils die Länge 6 Bytes. In dieser Relation sind 50 000 Tupel
1
gespeichert. Die Attributwerte von
A
sind aus dem Intervall [0 . . . 999] mit Gleichvertei-
lung der Tupel über die Attributwerte. Die Attributwerte von
B
sind aus dem Intervall
[0 . . . 999], wobei 40 000 Tupel über das Intervall [0 . . . 99] gleichverteilt und 10000 Tupel
über das Intervall [100 . . . 999] gleichverteilt sind.
Entwurfsalternativen
Für den physischen Datenbankentwurf der Relation
R
stehen verschiedene Möglichkeiten
oen. Im Rahmen dieser Übung sollen Sie die folgenden sechs näher betrachten:
1. Es ist lediglich die Relation
R
gespeichert (d.h. es gibt keinerlei Indexe).
∗
2. Es existiert ein Index (B -Baum) über dem Attribut
A
(Relationenname
RA).
∗
3. Es existiert ein Index (B -Baum) über dem Attribut
B
(Relationenname
RB).
4. Es existiert sowohl über
A
als auch über
B
∗
ein Index (B -Baum, Relationenname
RAB).
5. Es existiert ein clustered Index über
sortiert (Relationenname
A, d.h. die Relation ist bezüglich A physisch
RA$).
∗
6. Es existiert ein kombinierter Index (B -Baum) über
A und B , d.h. die Attributwerte
RC).
werden konkateniert und als ein Wert im Index gespeichert (Relationenname
∗
Alle Indexe ausser Alternative 5 seien mittelbar (indirekte B -Bäume). Nehmen Sie an,
dass Relationen und Indexe in verschiedenen Tablespaces gespeichert sind, wobei die
Seitengrösse 8 KBytes sei mit 70% Füllgrad für die Indexseiten und 90% Füllgrad für die
∗
Datenseiten. Ein TID oder Zeiger im B -Baum habe eine Länge von 6 Bytes. 48 Bytes
werden pro Seite für Seiteninformation benötigt.
In dieser Aufgabe geht es jedoch nicht um eine Schätzung der Kosten, wie in der letzten Woche, sondern um einen Messung der Kosten, die tatsächlich in der Datenbank
entstehen.
Kostenmessung
Das Script zum Anlegen der notwendigen Relationen und Indexe heisst kosten.sql und
ist auf den Übungsseiten herunterzuladen. Die Relationen können gefüllt werden, indem
Sie die public synonyms mit der Vorsilbe GEG_, also z.B. GEG_R für die Relation R,
abfragen:
insert into
Tabellenname
select * from GEG_R;.
Um die Baumhöhe zu ermitteln, können Sie das Attribut
user_indexes
blevel
der Systemtabelle
nutzen, welches die Schritte von der Wurzel zum Blatt angibt. Um eine
aktuelle Statistik vom Index zu erhalten, sollten Sie jedoch zuvor:
analyze index
Indexname
compute statistics;
ausführen.
Da Sie die Rolle PLUSTRACE besitzen, können Sie, um genauere Angaben zur Stati-
2
set autotrace on; arbeiten (zum Abschalten der Statistik- und Ausführungsplanausgabe: set autotrace off;).
stik und zum Ausführungsplan einer Anfrage zu erhalten, mit
Mit den so erhaltenen Daten können Sie die unten stehenden Mess-Tabellen ergänzen.
Nähere Angaben zu den Werten der Statistikausgabe nden Sie unter:
http://www.adp-gmbh.ch/ora/sqlplus/autotrace.html.
Bevor Sie jedoch ihre Abfragen das erste Mal ausführen, sollten Sie die Statistik aktualisieren, d.h.
analyze table
compute statistics;
Tabellenname
ausführen.
a) Indexhöhen und Anzahl Zugrie für die Suche im Index bestimmen
Ermitteln Sie zuerst die Höhe der Indexe und die nötige Anzahl Zugrie für die
Suche im Index. Verwenden Sie die Werte 10 und 500 für die Suche von
A und B
mit
den Entwürfen und tragen Sie ihre Resulate in die untenstehende Tabelle ein. (D.h.
verwenden Sie Anfragen der Art:
Entwurf
Höhe
R:
kein Index
RA:
Index über
RB:
RAB:
RA$:
RC:
select count(*) from R where A=10;)
A
Index über B
Indexe über A
u.
A = 10
B = 10
A = 500
B = 500
B
Clustered Index
Kombinierter Index
(8 Punkte)
b) Messen der Kosten
Überprüfen Sie die Richtigkeit Ihrer Kostenschätzungen aus der letzten Woche ebenfalls mit Hilfe von Leistungsmessungen. Tragen Sie die Messresultate in die folgende
Tabelle ein und vergleichen Sie die Werte mit Ihren Berechnungen der letzten Woche.
Wo gibt es Abweichungen? Können Sie diese Abweichungen erklären?
Anfrage
Q1
Entwurf
R:
kein Index
RA:
Index über
RB:
RAB:
RA$:
RC:
A
Index über B
Indexe über A
und
Q2
Q3
B
Clustered Index
Kombinierter Index
(12 Punkte)
3
Herunterladen