Oracle Datenbankkopplung SNI BS2000 { KSR1

Transcription

Oracle Datenbankkopplung SNI BS2000 { KSR1
Oracle Datenbankkopplung
SNI BS2000 { KSR1
Heinz Kredel, Robert Schumacher (eds.)
Rechenzentrum Universitat Mannheim
RUM 37/94
Juni 1994
Vorwort
Der folgende Bericht ist aus einer Ausarbeitung von Teilen eines internen Arbeitsberichts der Projektgruppe Datenbankkopplung entstanden. Das Projekt diente
der Evaluierung einer Oracle Datenbank-Kopplung fur Decision Support Anwendungen zwischen einem SNI BS2000 Rechner und einem KSR1 massiv parallelen
Rechner. Der Bericht gibt zunachst die Aufgabenstellung an und diskutiert dann
die Ergebnisse der einzelnen Teilaufgaben. In den Anhangen werden die durchgefuhrten Messungen und wichtige Parameter dokumentiert.
Zu den Zeitmesungen ist zu bemerken, da unsere Hard- und Software Konguration den Bedurfnissen einer Universiat entspricht. D.h. wir haben keine spezielle
Datenbank Hardware (leistungsfahiger I/O, dedizierter Rechner) und besitzen
auch nicht die Oracle Tuning Kenntnisse von groen Datenbank Anwendern.
Dieser Text bendet sich auch auf dem FTP Server der Universitat Mannheim
ftp.uni-mannheim.de in dem Verzeichniss pub/info/rumdoc in der komprimierten PostScript Datei rum3794.ps.Z.
Verbesserungsvorschlage und Fehlerhinweise nehmen wir dankbar entgegen. Wir
sind unter der e-Mail Adresse [email protected] zuerreichen.
Mannheim, 15. Juni 1994
Heinz Kredel, Robert Schumacher
1
Inhaltsverzeichnis
1 Aufgabenstellung
4
2 Zur Durchfuhrung
6
2.1 Wahl der Datenbank
2.2 Wahl der Abfragen
: : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : :
3 Oracle 7.0 auf KSR1, Unix
3.1
3.2
3.3
3.4
3.5
3.6
Funktionsweise des Query{Decomposer von KSR
Installation und Betriebserfahrungen mit Oracle auf der KSR1
Generierung und Laden der Daten
Verwendete Begrie
Performance in Abhangigkeit der Verteilung der Daten
Performance fur unterschiedliche Queries
3.6.1 Query 1
3.6.2 Query 2
3.6.3 Query 8
3.6.4 Query 12
8
: : : : : : : : : :
: :
: : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : :
: : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : :
4 Oracle 7.0 auf SNI H60, BS2000
4.1 Installation
4.2 Laden der Datenbank
4.3 Queries
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
5 Oracle Kopplung BS2000 { KSR1
5.1 Installation
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
2
6
6
8
10
10
11
11
12
15
16
16
16
18
18
19
19
20
20
5.2 Datenbank Kommunikation
: : : : : : : : : : : : : : : : : : : : :
6 Zusammenfassung
6.1 Ausblick
21
22
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
22
A Projektstatistik
25
B Arbeitsplan, Zeitplan
27
C Messungen auf KSR1
29
C.1 Messungen auf einem Prozessor
C.2 Messungen fur verschiedene Verteilungen
C.3 Ergebnisse fur die einzelnen Queries
: : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : :
29
29
30
D Messungen auf SNI H60
33
E Messungen der Kopplung
34
F Listings
36
F.1 Denition der Datenbank
F.2 Queries
F.3 Umformulierte Queries
: : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : :
3
36
39
42
Kapitel 1
Aufgabenstellung
Ziel der Evaluierung der Datenbank-Kopplung ist die Sammlung von Erfahrungen
und die Gewinnung von Performancedaten fur den Einsatz eines KSR1 massiv
parallelen Rechners als Datenbankbackend fur eine SNI-BS2000 Anlage. Insbesondere soll festgestellt werden, ob eine solche Konguration fur den Einsatz im
praktischen Betrieb geeignet ist. Die Universitat Mannheim und die Fachhochschule Luneburg erwarten bei der Evaluierung Erfahrungen im Betrieb von Datenbanken auf massiv parallelen Rechnern sowie wissenschaftliche Erkenntnisse
bei der Parallelisierung von Decision Support Problemen.
Das Rechenzentrum der Universitat Mannheim, vertreten durch Herrn Prof. Dr.
H.-W. Meuer, beteiligt sich mit folgenden Ressourcen an dem Projekt:
Bereitstellung der SNI-H60, BS2000 Rechenanlage,
Bereitstellung des KSR1 Parallelrechners,
Knowhow, Durchfuhrung und Unterstutzung bei der Installation der Software und der Netzkopplung.
Einrichten und Laden der Test-Datenbank, Durchfuhrung der Test-Queries.
Der FB Wirtschaft der Fachhochschule Luneburg, vertreten durch Herrn Prof.
Dr. Mayer-Wachsmuth, unterstutzt die Evaluierung bei
dem Aufbau einer geeigneten Oracle Testdatenbank,
der Formulierung und Durchfuhrung der Datenbankabfragen,
und der Durchfuhrung von Referenzmessungen.
Die Firma Siemens Nixdorf Informationssysteme AG ubernimmt im Rahmen der
Evaluierung
4
die Beratung beim Vorgehen und bei der Analyse der Messungen,
die Bereitstellung der erforderlichen Software, soweit nicht bei der Universitat Mannheim vorhanden,
die Bereitstellung eventuell zusatzlicher Hardware, um eine sinnvolle Evaluierung zu ermoglichen,
die Kosten fur Personal (bis zu einem maximalen Betrag),
eventuell anfallende Reisekosten und Spesen.
Die Evaluierung wird vom 1. Februar 1994 bis zum 31. Mai 1994 durchgefuhrt.
Der genauere Zeitplan ist im Anhang enthalten.
5
Kapitel 2
Zur Durchfuhrung
Aufgrund der heterogenen Systemumgebung eignet sich besonders das Oracle 7.0
Datenbanksystem. Oracle 7.0 ist sowohl fur BS2000 als auch fur KSR1 Rechner
verfugbar und stellt mit SQL*Net alle erforderliche Kommunikationssoftware zur
Verfugung. Zusatzlich bietet die Firma KSR einen Query Decomposer (QD) fur
Oracle auf KSR1 Rechner an, dessen Aufgabe die Parallelisierung, d.h. in diesem
Fall die Verteilung der Queries auf die Prozessoren der KSR1 ist.
2.1 Wahl der Datenbank
Fur den uns interessierenden Fall von Decision Support Anwendungen gibt es
einen von SNI verwendeten Datenbank Benchmark. Der Benchmark umfat u.A.
die Denition einer geigneten Test-Datenbank, Programme um den Inhalt der Datenbank zu erzeugen und auf DSS zugeschnittene Datenbank Abfragen. Die TestDatenbank ist skalierbar in Schritten von ca. 100 MB. Der Benchmark enthalt
Datenbank Abfragen, die zu einem `full table scan' fuhren und solche, die zu
komplexen `multiple join' Operationen fuhren. Beide Arten von Abfragen sollten
sich gut fur die Parallelisierung auf einem massiv parallelen Rechner eignen.
2.2 Wahl der Abfragen
Aus den 19 im Benchmark vorbereiteten Queries ist es sinnvoll sich zunachst auf
wenige typische Queries zu beschranken. Es sollen dabei unterschiedliche Typen
von Queries erfat werden und es soll vermieden werden, ahnliche Abfragen zu
wiederholen. Die Wahl el auf folgende 4 Queries:
Q1: Partitionierung der Daten, parallel full table scan,
6
Q2: Einfacher Join mit Subquery, block parallelization,
Q8: Vielfach-Join,
Q12: Union, block parallelization.
7
Kapitel 3
Oracle 7.0 auf KSR1, Unix
Die KSR1 ist der zentrale Compute{Server des Rechenzentrums der Universitat
Mannheim. Bei dem Rechner handelt es sich um ein skalierbares MPP (massiv
paralleles) System mit 32 Prozessoren, 1 GB Hauptspeicher und 10 GB Plattenspeicher. Die Leistung eines Prozessors mit der Taktrate von 20 MHz betragt 40
Mips bzw. 40 Mops.
Das Betriebssystem des Rechners ist OSF1 kompatibles UNIX, das symmetrisch
auf allen Prozessoren lauft. Die KSR1 ist mit FDDI und Ethernet in das Netz
der Universitat eingebunden.
Im folgenden werden die Funktionsweise des von KSR entwickeltem Query Decomposer dargestellt, und die Betriebserfahrungen mit Oracle auf der KSR1 geschildert, sowie die erzielten Leistungssteigerungen diskutiert.
3.1 Funktionsweise des Query{Decomposer von
KSR
Der Query Decomposer (QD) ist ein von KSR entwickeltes Softwareprodukt,
welches zusammen mit dem Datenbanksystem Oracle insbesondere fur Decision
Support Anwendungen (DSS) eine erhebliche Reduzierung der Antwortzeiten {
von mehreren Stunden auf einige Minuten { ermoglichen soll.
Die QD{Software ist als ein Teil von SQL*Plus anzusehen. Bevor eine Query
von SQL*Plus an Oracle zur Bearbeitung gegeben wird, wird von dem QD eine
Analyse vorgenommen, und bei vorhandener Parallelitat die Query in Subqueries
zerlegt, die dann an Oracle ubergeben werden.
Fur jede Subquery wird ein eigener Proze gestartet. Nach Abarbeitung der Subqueries werden die Ergebnisse von dem QD wieder zusammengefuhrt. Findet der
8
QD keine Moglichkeit der Parallelisierung, erfolgt die weitere Behandlung der
Query, als wenn es den QD nicht gabe.
Voraussetzung fur die Parallelisierung ist, da die Tabellen auf mehrere Dateien
{ auf die dann parallel zugegrien werden kann { verteilt vorliegen. Es konnen
also maximal soviele Subqueries gestartet werden, wie Dateien vorliegen. U ber
Direktiven kann diese Zahl verringert werden, bzw. der QD auch abgeschaltet
werden.
Als Ausgangspunkt fur die Parallelisierung wahlt der QD die von Oracle bestimmte 'driving table' (i. d. R. ist dies die Tabelle mit den meisten Zeilen), ist
diese Tabelle auf mehrere Dateien verteilt, wird die Query parallelisiert.
Die Funktionsweise des QD wird durch eine, ebenfalls von KSR vorgenommene
Erweiterung der SQL*Plus explain Funktion veranschaulicht.
In Abb. 3.1 ist die Wirkungsweise des QD fur Query 1 exemplarisch vorgefuhrt.
SQL> explain plan for
2 select
3
l_returnflag, l_linestatus, sum(l_quantity),
4
sum(l_extendedprice),
5
sum(l_extendedprice * (1 - l_discount/100)),
6
sum(l_extendedprice * (1 - l_discount/100) * l_tax/100),
7
avg(l_quantity),
8
avg(l_extendedprice), avg(l_discount), count(*)
9
from lineitem
10
where l_shipdate <= to_date('01-DEC-98') - 90
11
group by l_returnflag, l_linestatus
12
order by l_returnflag, l_linestatus;
Explained.
QUERY_PLAN
-------------------------------------------------------------1 0 KSR PARALLEL EXECUTION AGGREGATION LINEITEM
2
1 0 SORT GROUP BY
3
2 1 TABLE ACCESS FULL LINEITEM
Abbildung 3.1: Wirkungsweise des Query Decomposers
Bei der Query wird auf eine Tabelle (lineitem) zugegrien, damit ist diese Tabelle
gleichzeitig die 'driving table'. Da diese Tabelle auf mehrere Dateien verteilt ist,
wird der QD aktiviert. Das Ergebnis ist dem Query Plan zu entnehmen.
9
3.2 Installation und Betriebserfahrungen mit
Oracle auf der KSR1
Die Oracle Software wird auf einem Exabyte{Tape geliefert und ist nach uberspielen auf ein internes Plattenlaufwerk einsatzbereit. Die Installation erfolgte
am 31. Marz dieses Jahres, die Version war 7.0.12.2.2.
Am 26. April wurde die Version 7.0.13.1.1 ebenso leicht eingespielt. Die zu diesem Zeitpunkt schon bestehende Testdatenbank konnte in vollem Umfang weiter
benutzt werden. Mittlerweile besteht die Datenbank aus uber 100 Dateien mit
uber 5 GB Gesamtkapazitat verteilt auf 16 Plattenlaufwerken.
Alle Oracle und SQL Funktionen sind vorhanden und nutzbar. Einzige Einschrankung ist, da der Query{Decomposer nicht von Pro*C und SQL*Net aus
aufrufbar ist, dieses wird sich jedoch nach Aussage von KSR in einem nachsten
Release, dessen Erscheinen fur Juni angekundigt ist, andern.
Folgende Software{Komponenten umfat die momentane Oracle{Installation auf
der KSR1:
ORACLE Server 7.0.13.1.1
SQL*DBA 7.0.13.1.1
SQL*Loader 7.0.13.1.1
SQL*Plus 3.1.2.2.1
PL/SQL 2.0.15.1.0
KSR Query Decomposer 1.0.0
Pro*C 1.5.7.0.1
SQL*Net V1
SQL*Net V2
Wahrend der jetzt achtwochigen Erfahrung mit Oracle auf der KSR1 gab es
wegen Oracle keinerlei Absturze oder Einschrankungen fur den Betrieb zu verzeichnen. Weiterhin wurde die KSR1 wahrend der gesamten Zeit im Multiuser{
Timesharing{Betrieb gefahren. Die MTBF{Zeit der KSR1 fur April lag mit 7.5
Tagen (=30 Tage/4 Crashes) uber dem Durchschnitt, der bei 5{6 Tagen MTBF{
Zeit liegt.
3.3 Generierung und Laden der Daten
Zur Generierung der Daten wurde das Programm `dbgen' auf die KSR1 portiert,
dh. die 64bit{Architektur der KSR hat unmittelbaren Einu auf Pointer und
andere Groen, was bei der Umstellung beachtet werden mute.
10
Die Generierung der Daten fur Skalierungsfaktor (SF) 1 (600 000 Zeilen) betrug
ca. 33 min, fur SF 10 (6 000 000 Zeilen) ca. 6 Std. Das Laden der Daten im 'direct{
mode' betrug fur SF 1 ca. 45 min und fur SF 10 ca. 7 Std.
3.4 Verwendete Begrie
Die im Report benutzten Begrie { Wall{Clock Zeit, Ezienz und Speedup {
sollen kurz erlautert werden.
Alle gemessenen Zeiten sind Antwortzeiten oder Wall{Clock Zeiten, man stelle
sich einen Benutzer vor, der mit seiner Armbanduhr oder einer Wanduhr die Zeit
mit. Naturlich ubernimmt ein Programm die Funktion der Wanduhr, in diesem
Fall wurden alle Zeiten mit der Oracle Funktion set timing on gemessen. Die
Ezienz wird aus den Wall{Clock Zeiten wie folgt berechnet: die Wall{Clock
Zeit 1 fur den Ein{Prozessor Lauf entspricht einer Ezienz von 100%, fur den
16{Prozessor Lauf errechnet sich die Ezienz damit: e16 = 1 (16 16), oder
allgemein en = 1 ( n), wenn die Anzahl der Prozessoren ist. Hieraus lat
sich wiederum der Speedup n berechnen mit: n = en .
t
t =
t = n t
t
n
Sp
Sp
n
3.5 Performance in Abhangigkeit der Verteilung der Daten
Die Parallelisierung einer Query auf der KSR erfolgt auf der Basis der vorhandenen Dateien fur eine Tabelle, z. B.: besteht eine Tabelle aus 16 Dateien, kann
eine Query zu dieser Tabelle mit maximal 16 Prozessoren abgearbeitet werden.
Im ersten Abschnitt des Projekts, uber den hier berichtet wird, ging es im wesentlichen um die Fragestellung, ob die Festplattenkapazitat der Konguration (10
Platten a 1 GB, davon stehen fur die Messungen eektiv 4 Platten zur Verfugung)
ausreicht, um Aussagen uber die Performance zu machen. Aussagen von KSR zufolge, macht es erst Sinn Oracle zu betreiben, wenn man 20 und mehr Platten
zur Verfugung hat, oder genauer pro Datei oder Prozessor ein Plattenlaufwerk.
Um das zu untersuchen, wurde die in Anlehnung an den Benchmark ausgesuchte
Query 1 { ein full table scan { in 16 unterschiedlichen Kongurationen auf einer
100MB groen Tabelle vermessen. Die genauen Ergebnisse sind in Anhang C zu
nden. Fur eine geringe Anzahl Dateien spielt deren Verteilung keine Rolle; bei 4
Dateien auf 4 Laufwerken erhalt man 94% Ezienz und bei 4 Dateien auf einem
Laufwerk 93% Ezienz. Erhoht sich die Anzahl der Dateien, ist eine Abnahme
der Ezienz zu beobachten, so ergibt sich bei 12 Dateien verteilt auf 4 Laufwerke
eine Ezienz von 83%, und bei einer Verteilung auf 3 Laufwerke nur noch 76%.
Im Falle von 16 Dateien el die Ezienz gar auf 69%. Aufgrund dieses Ergebnisses
11
erfolgte die Beschaung weiterer 10 Laufwerke fur die KSR1, was auch zu einer
nochmaligen Leistungssteigerung fuhrte, s. Abb. 3.2. Die Zunahme des Speedups
von 13.4 auf 14.9 bei 16 Prozessoren bedeutet eine Vergroerung der Ezienz um
nahezu 10% von 84% auf 93%.
16
14
12
Speedup 10
8
6
4
.
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
?
?
?
.
?
.
.
?
.
?
.
4
.
.
2
.
.
16 Laufwerke
4 Laufwerke
linearer Speedup
6
8 10 12 14 16
Prozessoren
Abbildung 3.2: Speedup bei der parallelen Abarbeitung einer 1 GB groen Datenbanktabelle verteilt auf 4 Laufwerke und auf 16 Laufwerke
Scheinbar ohne Einu ist die Anzahl der Dateien und damit auch deren Verteilung bei Abarbeitung der Query ohne den QD. Die Einprozessorlaufzeiten variierten innerhalb der Toleranzgrenzen nicht, unabhangig davon, ob die Tabelle in
einer Datei oder in 16 Dateien verteilt abgespeichert ist.
3.6 Performance fur unterschiedliche Queries
Ursprunglich wurden 4 Queries aus dem Benchmark, die jeweils einen Typus reprasentieren, ausgewahlt. Queries 1 und 2 parallelisierten sofort, Queries 8 und 12
muten umformuliert werden. Zusatzlich wurden dann noch weitere 5 Queries bearbeitet, deren Ergebnisse hier nur wiedergegeben, aber nicht diskutiert werden.
12
Zur Auswertung wurden die jeweils besten erzielten Leistungen herangezogen.
Alle Messungen wurden an der SF 10 Datenbank vorgenommen.
Abb. 3.3 zeigt den Speedup fur jede einzelne Query bei Verwendung von 16 Prozessoren. Die durchschnittliche Ezienz betragt dabei 50%, mit einer Streuung
von 24% bis 93%. Bedenkt man, da bis hierhin noch keinerlei Tuning der Queries
stattgefunden hat, ist dieses Ergebnis nicht hoch genug zu bewerten.
13
14
Speedup
2
4
6
8
10
12
14
16
1
2
6
7
8
10
Query Nr.
Abbildung 3: Speedup fur unterschiedliche Queries
3
12
13
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Im folgenden sollen die vier ausgesuchten Queries 1, 2, 8 und 12 naher besprochen
werden. Der Querytext bendet sich in Anhang F.3.
3.6.1
Query 1
Bei dieser Query wird eine Tabelle (1 GB Daten) unter einer Bedingung durchsucht. Der QD hat diese Query auf Anhieb parallelisiert. Das Ergebnis ist Abb.
3.4 zu entnehmen.
32
30
28
26
24
22
20
18
Speedup 16
14
12
10
8
6
4
2
.
.
.
.
.
?
?.
.
.
.
.
?
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
?
?
.
?
.
linearer Speedup
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32
Prozessoren
Abbildung 3.4: Speedup fur Query 1
Wahrend die restlichen Queries nur auf 16 Prozessoren ausgemessen wurden,
wurde Query 1 auch auf 32 Prozessoren gemessen. Der relativ starke Abfall der
Ezienz von 93% bei 16 Prozessoren auf 81% bei 32 Prozessoren hat sicherlich
zwei Ursachen, zum einen sind 5 Prozessoren zusatzlich mit I/O{Operationen
beschaftigt, bei den Messungen mit 16 Prozessoren waren alle 16 Prozessoren frei
von I/O{Operationen; zum anderen wurden pro Laufwerk 2 Dateien angelegt, da
keine 32 Laufwerke vorhanden sind.
Mit dieser Query wurden die besten Ergebnisse erzielt.
15
3.6.2
Query 2
Diese Query, die eine Subquery enthalt, parallelisiert zwar auch auf Anhieb, wie
jedoch Abb. 3.5 zeigt, ist der Speedup sehr gering.
16
14
12
Speedup 10
8
6
4
2
.
.
.
.
?
.
.
.
.
.
.
?
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
?
?
linearer Speedup
2 4 6 8 10 12 14 16
Prozessoren
Abbildung 3.5: Speedup fur Query 2
.
.
?
Die Grunde fur die schlechte Skalierung liegen nicht auf der Hand, zum einen kann
es am QD liegen, es kann aber auch am Oracle Optimizer liegen. Eine veranderte
Abspeicherung der 3 involvierten Tabellen, z. B. als Cluster, konnte ebenfalls eine
Verbesserung der Performance bringen.
3.6.3
Query 8
Der ursprungliche Querytext enthielt mehrere geschachtelte Views, wegen derer
der QD nicht parallelisieren konnte. Aus diesem Grund wurde die Query umformuliert. Die Views konnten elimiert werden, soda der QD aktiv werden konnte,
da Ergebnis aber nicht verandert wurde. Abb. 3.6 zeigt die Skalierung fur Query
8.
Bemerkenswert ist, da durch die Umformulierung die Einprozessor{Laufzeit um
30% verkurzt werden konnte.
3.6.4
Query 12
Der QD ist nicht in der Lage ein 'UNION ALL' Statement, welches in dieser Query
verwendet wird zu parallelisieren. Daher mute auch diese Query umformuliert
16
16
14
12
Speedup 10
8
6
4
2
.
.
.
.
?
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
?
?
?
linearer Speedup
2 4 6 8 10 12 14 16
Prozessoren
Abbildung 3.6: Speedup fur Query 8
.
?
.
werden, damit der QD parallelisieren konnte. Die Ergebnisse fur Query 12 sind
in Abb. 3.7 dargestellt.
16
14
12
Speedup 10
8
6
4
2
.
.
.
?
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
?
?
?
linearer Speedup
2 4 6 8 10 12 14 16
Prozessoren
Abbildung 3.7: Speedup fur Query 12
.
?
.
Wiederum ergab sich fur die umformulierte Query eine diesmal um einen Faktor
2 reduzierte Einprozessor{Laufzeit.
17
Kapitel 4
Oracle 7.0 auf SNI H60, BS2000
Der SNI Rechner am Rechenzentrum der Universiat Mannheim ist vom Typ
H60-F2 mit einem Prozessor und 32 MB Hauptspeicher. Die Leistung des Prozessors betragt ca. 5.5 Mips. Der freie Plattenplatz fur das Projekt betragt ca.
1.5 GB.
Entsprechend der Zielsetzung des Projekts sollte Oracle 7.0 mit SQL*Net auf
dem BS2000 Rechner installiert werden. Da die Konguration des Rechners nicht
primar fur Datenbankanwendungnen ausgelegt ist, sollte hauptsachlich die Funktionalitat von Oracle mit der Netzverbindung zur KSR1 getestet werden.
4.1 Installation
Zum Betrieb von Oracle Version 7.0 auf BS2000 mit SQL*Net sind die Versionen TCP-IP-AP V1.0 und BCAM/DCAM V11.0 erforderlich, die fur die H60
beschat werden muten.
Ende der Kalenderwoche 9 ist die ORACLE BS2000 Software zusammen mit
den notwendigen Zusatzen im Rechenzentrum in Mannheim angekommen. Im
einzelnen handelt es sich um folgende Software:
ORACLE Server 7.0.13.0.40
SQL*DBA 7.0.13.0.40
SQL*Loader 7.0.13.0.40
PL/SQL 2.0.15.0.40
SQL*Plus 3.1.1.9.40
SQL*Net 7.0.13.0.40
TCP/IP NET SERVER 1.2.7.1.40
ONC 1.0.0.2.40
18
Die Installation von Oracle wurde in der Kalenderwoche 10 durchgefuhrt aber die
notwendigen Systemarbeiten am BS2000 haben sich noch bis zur Kalenderwoche
12 hingezogen.
4.2 Laden der Datenbank
Die Test-Datenbank wurde ohne besondere Optimierungen, nur mit den eingestellten Default-Werten erzeugt. Die Groe der Datenbank war ca. 100 MB entsprechend dem Skalierungsfaktor 1.
Die Ladedaten wurden als ASCII File von der KSR1 per ftp in ca 20 min U bertragen. Das Laden selbst wurde mit SQL*Load mit der Option direct=true durchgefuhrt. Die Zeit betrug etwa 80 min.
4.3 Queries
Die vorgesehenen Queries konnten ohne besondere Vorbereitungen direkt von der
KSR1 ubernommen werden.
Die Zeiten fur die Queries mit SF=1, nachts gemessen, waren:
Q1:
Q2:
Q8:
Q12:
CPU
CPU
CPU
CPU
Time 1509.07 sec
Time 182.17 sec
Time 641.16 sec
Time 1110.59 sec
Die Zeiten liegen in der Groenordnung der Zeiten auf einem Prozessor der KSR1
mit der alten Oracle Version.
19
Kapitel 5
Oracle Kopplung BS2000 {
KSR1
Oracle bietet die Moglichkeit auf Datenbanken (insbesondere auf einzelne Tabellen) auf verschiedenen Rechnern und gar auf verschiedenen Rechnerarchitekturen
zuzugreifen. Die Verbindung wird uber die SQL*Net Software, die in unserem
Falle TCP/IP verwendet, hergestellt.
Als Verbindungsvarianten gibt es die Moglichkeit sich direkt mit einer SQL*Plus
Sitzung auf dem anderen Rechner `einzuloggen', oder es gibt die Moglichkeit aus
einer SQL*Plus Sitzung auf einem Rechner einen Link auf eine Tabelle auf einem
anderen Rechner herzustellen. Mit dem Link kann dann wie mit einer lokalen
Tabelle gearbeitet werden.
Bei der Datenbank Kopplung stand zunachst die Funktionalitat im Vordergrund,
Performance-Daten waren nur fur die Groenordnung wichtig.
5.1 Installation
Die TCP/IP Software wurde auf der BS2000 Seite auf den neuesten Stand gebracht. `telnet', `ftp' usw. funktionieren unabhangig von Oracle.
Die Installation der SQL*Net Verbindung erforderte die Verwendung eines nichtpriviligierten TCP/IP Ports (=3000) auf der BS2000. Mit der Oracle Version
7.0.12 auf der KSR1 kam keine Verbindung uber SQL*Net zustande. Der Fehler
war immer ORA-6136. Mit der Oracle Version 7.0.13 auf der KSR1 kommen nun
Verbindungen uber SQL*Net zustande. Die SQL*Net Verbindung funktioniert
im Moment nur von BS2000 nach KSR1, die umgekehrte Richtung KSR1 nach
BS2000 bringt noch Fehlermeldungen. Daher gibt es auch noch keine Zeiten fur
`snapshot' der DB von der BS2000 nach KSR1. Das `insert into' von Tabellen
20
von BS2000 von und nach KSR1 funktioniert.
Es funktioniert auf der BS2000 Seite
sqlplus
create database link
insert into
insert into
create snapshot
BS2000
BS2000
BS2000
KSR1
KSR1
--->
--->
--->
--->
--->
KSR1
KSR1
KSR1
BS2000
BS2000.
5.2 Datenbank Kommunikation

Die Ubertragungstests
wurden zunachst ohne besondere Optimierungen in der
gegebenen Konguration durchgefuhrt. Durch den Initialisierungsoverhead sind
bei kleineren Tabellen die U bertragungsraten schlechter als bei groeren Tabellen.
Das TCP/IP Netz ist in unserer Konguration nicht der Engpass.
Es ergaben sich folgende Datenraten
7.5 - 8.6 KB / sec fur das U bertragen mit DB Tools,
18.6 KB / sec fur das Laden auf BS2000,
163.6 KB / sec fur das U bertragen mit TCP/IP Tools.
Die Datenubertragungsrate mit DB Tools ist somit etwa 0.5 MB / min, d.h. 30
MB / h. Eine Datenbank von 1 GB wurde somit etwas mehr als einen Tag fur
die U bertragung benotigen.
Das U bertragen von Tabellen mittels Oracle SQL*Net von der BS2000 zur KSR1
dauert etwa 2 bis 2.5 mal die Zeit des Ladens dieser Tabelle auf der BS2000 Seite.
Die CPU Zeit ist fur das Schreiben von Tabellen etwa 2 mal so hoch wie fur das
Lesen von Tabellen.
Eine bessere Alternative zu `insert into' stellt ein `snapshot' der Datenbank dar.
Ein `snapshot' ist eine `read only' Kopie der DB, d.h. man kann alle Abfragen
durchfuhren, aber keine Modikationen. Der `snapshot' einer Tabelle ist etwa 10
bis 20 % schneller als das entsprechende `insert into'.
21
Kapitel 6
Zusammenfassung
Es konnte nachgewiesen werden, da die KSR1 als ORACLE-Datenbankbackend
fur einen BS2000 Mainframe gut geeignet ist.
Dies basiert auf folgenden Ergebnissen:
Die Interoperabilitat beider Anlagen ist bezuglich Hardware und Software
gut moglich.
Die Oracle Software auf der KSR1 ist stabil und uneingeschrankt benutzbar.
Die zugrundeliegende Decision Support Anwendung ist sehr gut parallelisierbar; die grobkornige Parallelitat liefert praktisch einen idealen, linearen
Speedup.
Obwohl ein einzelner Prozessor der KSR1 bei dieser Anwendung nur etwa die Leistung einer SNI H60 ausweist, gewahrleistet die Architektur der
KSR1 beliebige Skalierbarkeit bezuglich der Rechenleistung.
Auch bezuglich der Datenbankgroe (gemessen bis 1 GB) konnten wir mit
der KSR1 eine sehr gute Skalierbarkeit nachweisen.
Eine weitere Leistungsverbesserung liee sich erreichen, wenn zusatzlich zu den
parallelisierten Datenbankabfragen, auch das parallele Laden und Update der
Datenbank genutzt wurde. Diese Funktionalitat ist fur die Oracle Version 7.1
angekundigt und auch im Query Decomposer von KSR enthalten.
6.1 Ausblick
Um ein vollstandigeres Bild der Parallelisierbarkeit von Decision Support Anwendungen zu erhalten, ware es sinnvoll den gesammten Benchmark mit groe22
ren Datenbanken und mehr Prozessoren weiter zu fuhren. Insbesondere bleiben
folgende Probleme:
1.
2.
3.
4.
5.
6.
Test der Oracle Version 7.1.
Tests im Mehrbenutzerbetrieb.
Testen des parallelen Ladens der DB.
Testen der parallelen Queries von der BS2000 Seite aus.
Analyse des Einues der KSR1 Architektur.
Analyse der Systemresourcen.
23
Anhange
In den folgenden Anhangen werden die verschiedenen Zeitplane, Datenbank Denitionen und Queries, sowie die Messungen dokumentiert.
Die Mitarbeiter und Unterstutzer der Projektgruppe waren
RZ Universitat Mannheim:
Prof. Dr. H.-W. Meuer, Dr. H. Kredel, Dr. R. Schumacher, Dr. E. Strohmaier, Hr. R. Muller.
FB Wirtschaft Fachhochschule Luneburg:
Prof. Dr. H. Meyer-Wachsmuth, Hr. T. Slotos.
Kendall Square Research (KSR):
Hr. Henry Strau, Mch, Ph.D. Stephen Pass, UK, Hr. David Wheat, USA.
Siemens Nixdorf Informationssysteme (SNI):
Hr. Ewinger, Mch-P SU BS2, Dr. Biller, Mch-P SU BS2, Dr. Kostler, Mch-P
SU BS2, Hr. Prohl, MA.
24
Anhang A
Projektstatistik
Sondierungsgesprache im Herbst 1993.
Erstes Treen der Projektgruppe am 24. Januar 1994.
Letztes Treen der Projektgruppe am 19. Mai 1994.
Zeitdauer: 4 Monate, Februar bis Mai 1994.
Treen: 5 Sitzungen, 24.1., 7.2., 24.3., 14.4. und 19.5. 1994.
2 Tage Besuch eines Oracle Experten von KSR UK vom 14.4. bis 15.4.
5 Tage Besuch eines Oracle Experten von KSR USA vom 16.5. bis 20.5.
Kommunikation: im Wesentlichen mittels E-Mail, zum Teil per FAX und
Telefon.
Wochentliche Projektberichte uber eine Projekt-Mailing-Liste.
Personalaufwand: 6 Mannmonate.
vorhandene Resourcen:
1. SNI H60, BS2000, 32 MB, 5.5 Mips, 1.5 GB Platten,
2. KSR1, OSF1 Unix, 32 Prozessoren, 1 GB, 32*40=1280 Mips, 10 GB
Platten,
3. TCP/IP uber Ethernet Verbindungen.
zusatzlicher Sachaufwand:
1. Oracle 7.0 Demo Lizenz fur BS2000,
2. neue Versionen von TCP/IP und DCAM fur BS2000,
25
3. Oracle 7.0 Lizenz fur KSR1,
4. Benchmark Software,
5. 10 GB Platten fur KSR1.
26
Anhang B
Arbeitsplan, Zeitplan
Arbeitsplan vom Februar 1994.
Zeit
6. KW
Aktivitaten
Klarung der Hardwarevoraussetzungen,
Installation von DBGEN, Erstellung der Queries,
Laden und Messungen auf AIX in Luneburg,
Installation von Oracle auf KSR1 und SNI BS2000,
bis 9. KW
Installation und Test des SQL*net.
10. KW
Erstellung der ca. 1 GB grossen Testdatenbank,
Messung der 4 wichtigten Queries
auf SNI BS2000 und KSR1 ohne und Parallelisierung.
11. KW
Auswertung und Analyse mit KSR Experten,
Entscheidungen uber weiteres Vorgehen und
weiteren Zeitplan.
12. und 13. KW Tuning und Optimierungen der Datenbank.
Durchfuhrung weiterer Queries,
Messung der Lade- und Updatezeiten,
bis 19. KW
Vervollstandigung der Messungen.
`KW' bedeutet Kalenderwoche im Jahr 1994.
27
Aktualisierter Arbeitsplan vom Marz 1994.
Zeit
Aktivitaten
bis 14. KW Klarung der HW/SW Situation,
Vorbereiten der Queries und Messungen in Luneburg,
Installation von Oracle auf KSR1 und BS2000,
Installation der Verbindung uber SQL*Net,
bis Datenbank groe 1 GB, 4 Queries.
15. KW
Messung der 4 wichtigten Queries
auf KSR1 ohne und mit Parallelisierung,
(BS2000 nicht zwingend im ersten Schritt),
Verbindung BS2000 - KSR1 uber SQL*Net.
14.4.
Auswertung und Analyse mit KSR-Experten.
16. KW
Entscheidungen uber Weiteres Vorgehen,
bis 19. KW Tuning und Optimierungen der Datenbank.
20. KW
Messungen mit Oracle SQL*Net, BS2000 - KSR1,
21. KW
Parallelisierung, Laden und update der DB auf KSR1,
Hinzunahme weiterer Queries aus dem Benchmark,
Groere Datenbank, weitere Queries.
Aktualisierter Arbeitsplan vom April 1994.
Zeit
Aktivitaten
Ende KW 17 hochskalieren der DB bis 1 GB,
Load / Unload BS2000 - KSR1 uber SQL*Net,
Entscheidung uber Plattenbeschaung 10 GB.
18. KW
Durchfuhrung der Queries, Parallelisierung,
Vorlauger Bericht uber das Projekt,
20. KW
Hinzuziehen eines KSR Oracle Experten aus USA,
Abschlu Bericht und Sitzung uber das Projekt.
28
Anhang C
Messungen auf KSR1
C.1 Messungen auf einem Prozessor
Ergebnisse der Queries mit Oracle Version 7.0.13 auf einem Prozessor.
SF 1
Q 1:
Q 2:
Q 8:
Q12:
1281.0
206.0
1128.0
852.0
SF 10
sec
sec
sec
sec
11993
1381
4715
8895
sec
sec
sec
sec
SF 10
Neufassung
--3670 sec
4108 sec
C.2 Messungen fur verschiedene Verteilungen
Ergebnisse fur unterschiedliche Verteilung der Tabellen auf Dateien.
Ergebnisse fur SF 1
cpu
1
1
2
2
3
3
4
4
4
6
disk
1
1
1
2
1
3
1
2
4
2
files
1
16
2
2
3
3
4
4
4
6
7.0.12
1436
879
425
29
7.0.13
1281
1230
629
621
447
437
344
329
342
253
6
8
8
9
12
12
16
3
2
4
3
3
4
4
6
8
8
9
12
12
16
227
157
142
235
202
194
171
140
128
116
Ergebnisse fur SF 10
cpu
1
1
2
4
8
16
disk
4
4
4
4
4
4
files
16
4
4
4
16
16
7.0.13
12933*
12534*
6113*
3210**
1760*
962
Ergebnis aus 1 Messung.
Ergebnis aus 2 Messungen.
Bemerkungen:
*
**
Von Version 7.0.12 auf 7.0.13 ist eine Leistungsteigerung von 20% aufgetreten.
Die verbrauchte CPU{Zeit (die Messung geschah mit dem Betriebssystem)
schwankte zwischen 10%, unabhangig von Anzahl der CPUs, Files oder
Disks.
Die System-Zeit, sie betragt zwischen 5% und maximal 10% der CPU-Zeit,
steigt mit der Anzahl der Files.
C.3 Ergebnisse fur die einzelnen Queries
Query 1:
cpu
1
2
4
8
16
32
time
11993
5990
2966
1532
805
462
30
Query 2:
cpu
1
2
4
8
16
time
1381
932
572
406
362
Query 3:
cpu
1
2
4
8
16
time
12526
7239
4266
2495
2220
Query 6:
cpu
1
2
4
8
16
time
2221
1090
595
310
184
Query 7:
cpu
1
2
4
8
16
time
12946
8378
4585
2404
1573
Query 8:
cpu
1
2
4
8
16
time
3670
2052
1214
907
658
31
Query 10:
cpu
1
2
4
8
16
time
6251
3698
2156
1608
865
Query 12:
cpu
1
2
4
8
16
time
4108
2356
1142
675
393
Query 13:
cpu
1
2
4
8
16
time
403
232
132
80
60
32
Anhang D
Messungen auf SNI H60
Die Zeiten wurden mit `set timing on' von Oracle erhalten. Das Laden der Datenbank mit SF=1, ca. 100 MB Daten benotigte 80 min Elapsed time und 68 min
CPU time.
Die Zeiten fur die einzelnen Tabellen waren
Tabelle
SUPPLIERS
LINEITEM
PARTSUPP
PARTS
ORDERS
CUSTOMES
Elapsed Time
17.80
61:36.52
5:03.70
1:32.08
10:22.68
1:37.38
sec
min
min
min
min
min
CPU Time
6.37
52:30.97
3:49.93
1:11.00
8:23.33
1:14.63
sec
min
min
min
min
min
Die Zeiten fur die Queries mit SF=1 waren:
Q1:
Q2:
Q8:
Q12:
CPU
CPU
CPU
CPU
tagsueber
Time 1521.6 sec
Time 184.6 sec
Time 4622.4 sec
Time 1127.2 sec
33
nachts
1509.07
182.17
641.16
1110.59
sec
sec
sec
sec
Anhang E
Messungen der Kopplung
Die `Elapsed Times' wurden mit der `Wall Clock' gemessen. Die `CPU Times'
wurden den Oracle Meldungen auf der BS2000 entnommen, bzw. dem Zeitverbrauch von orasrv auf der KSR1.
Insert in Tabelle auf der KSR1 via SQL*Net database link, select von einer Tabelle auf BS2000:
Tabelle: suppliers mit 1000 rows, 0.1 MB
Elapsed time 40
sec,
CPU time H-60 4.4 sec
CPU time KSR1 5.7 sec.
Zum Vergleich: das Laden dieser Tabelle dauert ca. 18 sec auf der BS2000 und
das U bertragen der ASCII Datei per ftp dauert ca. 1 sec.
Damit ergeben sich folgende Datenraten
2.5 KB / sec fur das U bertragen mit DB Tools,
5.6 KB / sec fur das Laden,
100.0 KB / sec fur das U bertragen mit TCP/IP Tools.
Tabelle: customers mit 15000 rows, 1.8 MB
Elapsed time 210-240 sec,
CPU time H-60
73 sec (read)
CPU time KSR1
77 sec (write).
Zum Vergleich: das Laden dieser Tabelle dauert ca. 97 sec auf der BS2000 und
das U bertragen der ASCII Datei per ftp dauert ca. 11 sec.
Damit ergeben sich folgende Datenraten
34
7.5 - 8.6 KB / sec fur das U bertragen mit DB Tools,
18.6 KB / sec fur das Laden,
163.6 KB / sec fur das U bertragen mit TCP/IP Tools.
Die Datenubertragungsrate mit DB Tools ist somit etwa 0.5 MB / min, d.h. 30
MB / h. Eine Datenbank von 1 GB wurde somit etwas mehr als einen Tag fur
die U bertragung benotigen.
Insert in Tabelle auf der BS2000 via SQL*Net database link, select von einer
Tabelle auf KSR1:
Tabelle: customers mit 15000 rows, 1.8 MB
Elapsed time 310 sec,
CPU time H-60 169 sec (write)
CPU time KSR1 30 sec (read).
Snapshot auf der BS2000 via SQL*Net, select von einer Tabelle auf KSR1:
Tabelle: customers mit 15000 rows,
Elapsed time 290 sec,
CPU time H-60 180 sec (write)
CPU time KSR1 38 sec (read).
35
Anhang F
Listings
In diesem Abschnitt werden die wesentlichen SQL Statements zur Denition der
Test-Datenbank und der Abfragen dokumentiert.
F.1 Denition der Datenbank
set echo on
DROP TABLE customers;
CREATE TABLESPACE tsc
DATAFILE
'tsc.dbf' SIZE 4M REUSE;
CREATE TABLE customers
(
c_custkey
number(12)
NOT NULL,
c_name
char(25),
c_address
char(25),
c_nation
char(25),
c_region
char(25),
c_phone
char(15),
c_acctbal
number(12,2),
c_mktsegment
char(10),
c_comment
char(27)
)
TABLESPACE tsc
STORAGE (INITIAL 100K NEXT 100K PCTINCREASE 0);
CREATE UNIQUE INDEX i_customers ON customers
(
c_custkey
)
TABLESPACE tsc;
36
DROP TABLE lineitem;
CREATE TABLESPACE tsl
DATAFILE 'tsl.dbf' SIZE 150M REUSE;
CREATE TABLE lineitem
(
l_orderkey
number(12)
NOT NULL,
l_partkey
number(12),
l_suppkey
number(12),
l_linenumber
number(12)
NOT NULL,
l_quantity
number(12),
l_extendedprice number(12,2),
l_discount
number(12),
l_tax
number(12),
l_returnflag
char(1),
l_linestatus
char(1),
l_shipdate
date,
l_commitdate
date,
l_receiptdate
date,
l_shipinstruct char(25),
l_shipmode
char(10),
l_comment
char(59)
)
STORAGE ( INITIAL 1000K NEXT 1000K PCTINCREASE 0 )
TABLESPACE tsl;
CREATE UNIQUE INDEX i_lineitem ON lineitem
(
l_orderkey,
l_linenumber
)
TABLESPACE tsl;
DROP TABLE orders;
CREATE TABLESPACE tso
DATAFILE 'tso.dbf' SIZE 30M REUSE;
CREATE TABLE orders
(
o_orderkey
o_custkey
o_orderstatus
o_totalprice
o_orderdate
o_orderpriority
o_clerk
o_shippriority
number(12)
number(12),
char(1),
number(12,2),
date,
char(15),
char(15),
number(12),
NOT NULL,
37
o_comment
char(49)
)
TABLESPACE tso
STORAGE (INITIAL 6000K NEXT 3000K PCTINCREASE 0);
CREATE UNIQUE INDEX i_orders ON orders
(
o_orderkey
)
TABLESPACE tso;
DROP TABLE parts;
CREATE TABLESPACE tsp
DATAFILE 'tsp.dbf' SIZE 4700K REUSE;
CREATE TABLE parts
(
p_partkey
number(12)
NOT NULL,
p_name
varchar2(50),
p_mfgr
char(25),
p_brand
char(10),
p_type
char(25),
p_size
number(12),
p_container
char(10),
p_retailprice
number(12,2),
p_comment
char(14)
)
TABLESPACE tsp
STORAGE (INITIAL 1000K NEXT 1000K PCTINCREASE 0);
CREATE UNIQUE INDEX i_parts ON parts
(
p_partkey
)
TABLESPACE tsp;
DROP TABLE partsupp;
CREATE TABLESPACE tsps
DATAFILE
'tsps.dbf' SIZE
20M REUSE;
CREATE TABLE partsupp
(
ps_partkey
number(12)
ps_suppkey
number(12)
ps_availqty
number(12),
ps_supplycost
number(12,2),
ps_comment
char(124)
NOT NULL,
NOT NULL,
38
)
TABLESPACE tsps
STORAGE (INITIAL
500K NEXT 500K PCTINCREASE 0);
CREATE UNIQUE INDEX i_partsupp ON partsupp
(
ps_partkey,
ps_suppkey
)
TABLESPACE tsps;
DROP TABLE suppliers;
CREATE TABLESPACE tss
DATAFILE 'tss.dbf' SIZE
500K REUSE;
CREATE TABLE suppliers
(
s_suppkey
number(12)
s_name
char(25),
s_address
char(25),
s_nation
char(25),
s_region
char(25),
s_phone
char(15),
s_acctbal
number(12,2),
s_comment
char(17)
)
TABLESPACE tss;
NOT NULL,
CREATE UNIQUE INDEX i_suppliers ON suppliers
(
s_suppkey
)
TABLESPACE tss;
F.2 Queries
Query 1:
set echo on;
set timing on;
select
l_returnflag, l_linestatus, sum(l_quantity), sum(l_extendedprice),
sum(l_extendedprice * (1 - l_discount/100)),
sum(l_extendedprice * (1 - l_discount/100) * l_tax/100),
avg(l_quantity),
avg(l_extendedprice), avg(l_discount), count(*)
from lineitem
39
where l_shipdate <= to_date('01-DEC-98') - 90
group by l_returnflag, l_linestatus
order by l_returnflag, l_linestatus;
Query 2:
set echo on;
set timing on;
select
s_name, s_acctbal, s_address, s_phone, s_comment
from parts, suppliers, partsupp
where p_partkey = ps_partkey
and s_suppkey = ps_suppkey
and p_size = 15
and p_type = 'BRASS'
and s_nation = 'FRANCE'
and ps_supplycost = (select min(ps_supplycost)
from partsupp ps1, suppliers s1
where p_partkey = ps1.ps_partkey
and s1.s_suppkey = ps1.ps_suppkey
and s1.s_nation = s_nation);
Query 8:
set echo on;
set timing on;
create view country (year, volume) as select
to_char(o_orderdate, 'YY'), l_extendedprice*(1-l_discount/100)
from parts, suppliers, lineitem, orders, customers
where p_partkey = l_partkey
and s_suppkey = l_suppkey
and l_orderkey = o_orderkey
and o_custkey = c_custkey
and c_nation = s_nation
and o_orderdate between to_date('01-JAN-95')
and to_date('31-DEC-96')
and c_nation = 'BRAZIL'
and p_type = 'STEEL';
create view sum_country (year, volume) as select
year, sum(volume)
from country
group by year;
create view continent (year, volume) as select
to_char(o_orderdate,'YY'), l_extendedprice*(1-l_discount/100)
from parts, suppliers, lineitem, orders, customers
where p_partkey = l_partkey
and s_suppkey = l_suppkey
and l_orderkey = o_orderkey
and o_custkey = c_custkey
40
and
and
and
and
and
c_region = s_region
o_orderdate between to_date('01-JAN-95')
to_date('31-DEC-96')
c_region = 'AMERICA'
p_type = 'STEEL';
create view sum_continent (year, volume) as select
year, sum(volume)
from continent
group by year;
select
a.year, a.volume/b.volume
from sum_country a, sum_continent b
where a.year = b.year;
drop
drop
drop
drop
view
view
view
view
country;
sum_country;
continent;
sum_continent;
Query 12:
set echo on;
set timing on;
select
l_shipmode, count(*), 'High Priority'
from orders, lineitem
where o_orderkey = l_orderkey
and o_orderpriority in ('1-URGENT', '2-HIGH')
and (l_shipmode = 'MAIL' or l_shipmode = 'SHIP')
and l_commitdate < l_receiptdate
and l_shipdate < l_commitdate
and l_receiptdate >= to_date('01-JAN-94')
and l_receiptdate < to_date('01-JAN-94') + 360
group by l_shipmode
union all
select
l_shipmode, count(*), 'Low Priority'
from orders, lineitem
where o_orderkey = l_orderkey
and o_orderpriority in ('1-URGENT', '2-HIGH')
and (l_shipmode = 'MAIL' or l_shipmode = 'SHIP')
and l_commitdate < l_receiptdate
and l_shipdate < l_commitdate
and l_receiptdate >= to_date('01-JAN-94')
and l_receiptdate < to_date('01-JAN-94') + 360
group by l_shipmode
order by 2 desc;
41
F.3 Umformulierte Queries
Neufassung von Query 8:
select
to_char(o_orderdate, 'YY'),
sum(decode(c_nation, 'BRAZIL
',
decode(s_nation, 'BRAZIL
',
l_extendedprice*(1-l_discount/100), 0), 0))
/ sum(l_extendedprice*(1-l_discount/100))
from parts, suppliers, lineitem, orders, customers
where p_partkey = l_partkey
and s_suppkey = l_suppkey
and l_orderkey = o_orderkey
and o_custkey = c_custkey
and c_region = s_region
and o_orderdate between '01-JAN-95' and '31-DEC-96'
and c_region = 'AMERICA'
and p_type = 'STEEL'
group by to_char(o_orderdate, 'YY');
Neufassung von Query 12:
select l_shipmode, count(*),
decode(o_orderpriority, '1-URGENT
', 'High Priority',
'2-HIGH
', 'High Priority',
'Low Priority')
from orders, lineitem
where o_orderkey = l_orderkey
and (l_shipmode = 'MAIL' or l_shipmode = 'SHIP')
and l_commitdate < l_receiptdate
and l_shipdate < l_commitdate
and l_receiptdate >= to_date('01-JAN-94')
and l_receiptdate < to_date('01-JAN-94') + 360
group by l_shipmode,
decode(o_orderpriority, '1-URGENT
', 'High Priority',
'2-HIGH
', 'High Priority',
'Low Priority')
order by 2 desc;
42