Oracle 10G and Windows XP

Werbung
Database Administration & Tuning
Elena Povalyayeva
Eduard Schibrowski
Schritte bis TCP-H
Installation des Betriebsystems
Installation des
Datenbankmanagementsystems Oracle 10g Expres
Schritte bis TCP-H Schema
Anlegen einer neuen Datenbank und
Einfügen der „cddb“ Daten
Duplikatenelimination und
Abfragen an die Datenbank.
Duplikatenelimination
delete from song t1
where t1.songid in (select songid
from song t2
where t1.rowid > t2.rowid
and t1.songid = t2.songid
);
Fehler beim Import der Daten
- „ORA-01722: Ungültige Zahl Row 1: ¿1
the best of the modern years” beim Import
der Albums Tabelle.
Zur Lösung dieses Problems haben wir die Spaltennamen
am Anfang der Datei noch hinzugefügt, mit Tab getrennt,
so dass der erste Spaltenindex der Datei, in der Zweiten
Spalte steht. Dazu kann mann in Oracle explizit angeben
dass die Datei Spaltennamen beinhaltet.
Fehler beim Import der Daten
- „ORA-20001: Load csv data error: ORA01461: Ein LONG-Wert kann nur zur
Einfügung in eine LONG-Spalte gebunden
werden“ beim Einfügen der Daten in der
Tabelle Artists.
Dafür haben wir die Datei eingelesen und in einer
separaten Datei wieder geschieben, diesmal aber ohne
spezielle Zeichen (special characters).
Datenbank mit TCP-H Schema
Umgebung unter Windows - Cygwin
Makefile erstellt
CC = gcc
DATABASE= SQLSERVER
MACHINE = LINUX
WORKLOAD = TPCH
Datenbank mit TCP-H Schema
kompiliert man die Quelldateien mittels make dbgen & qgen
Aufrufen von dbgen für daten generieren $
./dbgen
Anlegen der Tabellen der Benchmark-Datenbank
sqlplus benutzer/passwort@datenbank <
dss.ddl
Bearbeitungen auf den Daten
Umwandlung der Daten vom amerikanischen in der deutschen
Schreibweise:
Dezimalpunkte durch Kommata ersetzten (bsp): vim
customer.tbl ":%s/\./,/"
!!!! Bei der Datei lineitem.tbl tratt folgendes Problem auf:
„vim out of memory“. sed -e 's/\./,/' -e 's/\./,/' -e 's/\./,/'
lineitem.tbl > lineitem.new
Laden der Daten in die Tabellen
Inhalt der *.ctl Datei:
load data
INFILE '<filename>'
INTO TABLE <tablename>
FIELDS TERMINATED BY '<delimiter>'
<table_format>
Einlesen der Daten
sqlldr xantia/xantia control=region.ctl
Generierung der Abfragen
$ run qgen -N -d 1 > 1_new.sql
Notwendige Änderungen:
Meistens weden die „as“ Aliases entfernt: „as shipping“,
„as all_nations“, “as profit”, usw.
Die Funktion “substring” wird mit “substr” ersetzt und die
Syntax angepasst indem man „for“ und „from“ mit
Kommatas ersetzt.
Tuning
Indexe
customer_idx1, der aus c_custkey und c_name besteht
lineitem_idx1, bestehend aus l_linenumber, l_orderkey, l_partkey, l_suppkey
nation_idx11 aus n_nationkey und n_name
orders_idx1 aus o_orderkey, o_custkey, o_orderdate
part_idx1, der aus P_partkey und p_partname besteht
partsupp_idx1, aus ps_partkey und ps_suppkey
region_idx1, aus r_regionkey und r_name
supplier_idx1, aus s_suppkey und s_name
Cluster Indexe
Übersicht
Ausführzeiten
16:48
14:24
12:00
Zeit
09:36
07:12
04:48
02:24
00:00
1
2
3
4
5
6
7
8
9
10 11 12 13 14 15
16 17 18 19 20 21 22
Abfrage Nummer
ohne tuning
primary&foreign keys
B Indexes
cluster Indexes
Durchschnittswerte
Average Time
04:48
04:19
03:50
03:21
Time
02:52
ohne tuning
primary and foreign keys
02:24
B Indexes
Cluster Indexes
01:55
01:26
00:57
00:28
00:00
Case
Statistics
Statistics
Schlußfolgerungen
Primary and Foreign Keys
Indexes
Cluster Indexes
Observations and Explinations
Herunterladen