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