KK10_14 Performance und Index

Werbung
Datenbanken
14 Performance und Index
Karl Meier
[email protected]
07.12.2010
Inhalt
Performance


Allgemeines
Benchmarking
Index


Allgemeines
Index
07.12.2010
14 Performance und Index
2
1
Performance
Performance ist ein subjektives Mass für die
Geschwindigkeit, mit der eine Applikation
verwendet werden kann.
Die Bewertung der Performance kann nur relativ sein:
• schneller als vorher
• schneller als auf einem anderen Rechner
• schneller als mit der alten Version
07.12.2010
14 Performance und Index
3
Was wenn?
Was passiert, wenn die Anzahl
Datensätze verzehnfacht wird?
Hilft mehr RAM?
Ist der neue Server doppelt so schnell wie
der alte?
Was bringt Query Cache?
Was ist effizienter? Subquery oder
einzelne kurze Queries?
Was passiert bei mehrmaliger Abfrage?
07.12.2010
14 Performance und Index
4
2
Warteschlangentheorie
Latenz = Wartezeit + Bearbeitungszeit
Systemverhalten am Sättigungspunkt nicht linear
Das System kollabiert an Wartezeit
-
Wer wartet wann worauf?
Kürzere Verarbeitungszeit
Parallelisierung
07.12.2010
14 Performance und Index
5
Performancemessung
Wer misst, misst Mist!
Wie wird die Performance von Datenbanksystemen
gemessen? Latenz - Durchsatz - Skalierbarkeit
Die wohl bekannteste Methode sind die verschiedenen
TPC-Benchmarks, deren Resultate auch in den
entsprechenden Produktblättern erscheinen.
07.12.2010
14 Performance und Index
6
3
TPC-Benchmarks
Datenbank Performance
http://www.tpc.org
TPC ist eine Organisation, der ca. 40 HW-Hersteller,
SW-Hersteller, Endbenutzerorganisationen und
Beratungsfirmen angehören. TPC definiert DatenbankBenchmarks, legt Regeln für deren Durchführung fest
und auditiert die von Herstellern eingereichten
Benchmarkergebnisse.
07.12.2010
14 Performance und Index
7
TPC Mitglieder
07.12.2010
14 Performance und Index
8
4
TPC Benchmarks
TPC-C / TPC-E (Order entry transactions, OLTP)
Simulates a complete computing environment
where a population of users executes
transactions against a database.
TPC-H (Decision support, OLAP)
Business oriented ad-hoc queries and
concurrent data modifications.
07.12.2010
14 Performance und Index
9
OLTP / OLAP
ORACLE
DB2
DW
MySQL
OLAP
OLTP
07.12.2010
14 Performance und Index
10
5
TPC-E / TPC-C
Characteristic
TPC-E
TPC-C
Tables
33
9
Columns
188
92
Min Cols / Table
2
3
Max Cols / Table
24
21
Data Type Count
Many
4
Data Types
UID, CHAR, NUM,
DATE, BOOL, LOB
UID, CHAR, NUM,
DATE
Primary Keys
33
8
Foreign Keys
50
9
Tables w/ Foreign
Keys
27
7
Check Constraints
22
0
Referential Integrity
Yes
No
07.12.2010
14 Performance und Index
11
TPC-H
07.12.2010
14 Performance und Index
12
6
TPC-H
Effizienzvergleich der verschiedenen
Architekturen mit Hilfe des TPC-H Benchmarks
TPC-H: Decision Support Benchmark für
Datenbankgrössen von 100-10000 GB:
Dabei werden die Zeiten für Ad-Hoc-Queries
gemessen, so dass es kein Vorwissen bzgl. der
Anfragen gibt, welches zur Optimierung der
Datenbank genutzt werden könnte.
07.12.2010
14 Performance und Index
13
SPEC Benchmarks
CPU Performance
Standard Performance
Evaluation Corporation
http://www.spec.org
Aktuelle Benchmarks:
SPECapc
SPEC HPC2002
SPEC OMP2001
SPEC appPlatform
SPEC jAppServer2004
SPEC JBB2000
SPEC MAIL2009
SPEC WEB2009
07.12.2010
14 Performance und Index
SPECviewperf 7.1
SPEC HPC2002
SPEC CPU2000
SPEC CPU2006
SPEC jAppServer2004
SPEC JVM2008
SPEC SFS2008
SPEC WEB2005
14
7
SPEC CPU2006
Eine Neuauflage ist notwendig geworden, da bei neuen CPUs die
Laufzeiten einzelner Testverfahren in der bisher gültigen CPU2000 auf
weniger als 1 Minute sinken. Ausserdem spiegelt die bisherige Suite die
Komplexität und die Struktur heutiger Anwendungen kaum noch wider. Ab
November 2006 veröffentlicht und prüft die SPEC nur noch Messungen, die
mit der CPU2006 zustande kamen.
Nach wie vor besteht die gesamte Suite aus einer Gruppe von Tests für
Festkomma- (CINT2006) und einer für das Gleitkommarechnen (CFP2006).
Es gibt wie bisher Resultate für eine nach strengen Regeln festlegte
Parametrisierung der Compiler (base) und solche mit höchster Optimierung
(peak).
Als Referenz dient nach wie vor eine betagte Ultra Enterprise von Sun mit
einer UltraSPARCII-CPU, 296 MHz "schnell", die mit 2 GByte
Hauptspeicher auskommen muss. Der schnellste Rechner beim
SPECint_base2006 stammt von Fujitsu Siemens. Die Celsius V830 mit
Opteron 256 (3 GHz) unter Linux 64 Bit ist knapp 12-mal schneller als die
Ultra von Sun. Ein Durchlauf des SPECfp_base2006 auf der Celsius
dauerte 12 Stunden.
07.12.2010
14 Performance und Index
15
Benchmark Kriterien
Kriterien für Standard-Benchmarks sind:




Relevanz
Portabilität
Skalierbarkeit
Einfachheit
07.12.2010
14 Performance und Index
16
8
Benchmark Strategien
Performance Test vs. Stress Test
„Change one thing at a time“
Iterative Tests
Tests wiederholen

Restart MySQL / Reboot
Reale Daten verwenden (Art und Menge)
Nicht zu viele Clients verwenden
Client/Server trennen
07.12.2010
14 Performance und Index
17
Benchmark Funktion
mysql> SELECT BENCHMARK(1000000,10+10);
+--------------------------+
| BENCHMARK(1000000,10+10) |
+--------------------------+
| 0
|
+--------------------------+
1 row in set (0.14 sec)
Ein schneller Test für die CPU Geschwindigkeit ist die MySQL
Funktion BENCHMARK().
SELECT BENCHMARK(1000000, EXTRACT(YEAR FROM NOW()));
ACHTUNG: Query Cache !!!
07.12.2010
14 Performance und Index
18
9
MySQL Benchmark Suite
Bestandteil der MySQL Distribution
Perl Scripts (DBI und Benchmark Modul)
MySQL, PostgreSQL, MS-SQL, Oracle,…
Nicht für Multi-CPU Rechner geeignet
http://dev.mysql.com/doc/refman/5.1/en/mysql-benchmarks.html
Mit einem Linux Client können Tests auch auf einen
Windows DB-Server getätigt werden.
07.12.2010
14 Performance und Index
19
MySQL Bench Dateien
File
Description
Data/ATIS
Data/Wisconsin
Results
Makefile.am
test-ATIS.sh
test-connect.sh
test-create.sh
test-insert.sh
test-wisconsin.sh
run-all-tests
compare-results
server-cfg
Contains data for 29 related tables used in the ATIS tests.
Contains data for the Wisconsin benchmark.
Contains old benchmark results.
Automake Makefile
Creation of 29 tables and a lot of selects on them.
Test how fast a connection to the server is.
Test how fast a table is created.
Test create and fill of a table.
A port of the PostgreSQL version of this benchmark.
Use this to run all tests.
Generates a comparison table from different RUN files.
Contains the limits and functions for all supported SQL
servers. If you want to add a new server, this should be the
only file that needs to be changed.
07.12.2010
14 Performance und Index
20
10
Wisconsin Benchmark
„The Wisconsin Benchmark described in [Bitton, DeWitt,
and Turbyfill 1983] [Boral and DeWitt 1984] [Bitton and
Turbyfill 1985] [Bitton and Turbyfill 1988], and [DeWitt
1993] is the first effort to systematically measure and
compare the performance of relational database systems
with database machines. The benchmark is a single-user
and single-factor experiment using a synthetic database
and a controlled workload. It measures the query
optimization performance of database systems with 32
query types to exercise the components of the proposed
systems. The query suites include selection, join,
projection, aggregate, and simple update queries.“
http://firebird.sourceforge.net/download/test/wisconsin_benchmark_chapter4.pdf
07.12.2010
14 Performance und Index
21
Resultate
Testing server 'MySQL 4.1.7 nt' at 2005-02-21 11:26:55
ATIS table test
Creating tables
Time for create_table (28): 2 wallclock secs ( 0.02 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.02 CPU)
Inserting data
Time to insert (9768): 392 wallclock secs ( 1.46 usr 0.34 sys + 0.00 cusr 0.00 csys = 1.80 CPU)
Retrieving data
Time for select_simple_join (500): 2 wallclock secs ( 0.71 usr 0.29 sys + 0.00 cusr 0.00 csys = 1.00 CPU)
Time for select_join (100): 1 wallclock secs ( 0.49 usr 0.44 sys + 0.00 cusr 0.00 csys = 0.93 CPU)
Time for select_key_prefix_join (100): 8 wallclock secs ( 6.08 usr 2.19 sys + 0.00 cusr 0.00 csys = 8.27 CPU)
Time for select_distinct (800): 4 wallclock secs ( 2.36 usr 0.80 sys + 0.00 cusr 0.00 csys = 3.16 CPU)
Time for select_group (2400): 2 wallclock secs ( 1.42 usr 0.42 sys + 0.00 cusr 0.00 csys = 1.84 CPU)
Removing tables
Time to drop_table (28): 1 wallclock secs ( 0.01 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.01 CPU)
Total time: 412 wallclock secs (12.56 usr 4.50 sys + 0.00 cusr 0.00 csys = 17.05 CPU)
07.12.2010
14 Performance und Index
22
11
Testdatenbank für MySQL
https://launchpad.net/test-db
07.12.2010
14 Performance und Index
23
Tuning
Tuning ist eine Tätigkeit, welche die
Performance steigert.
Diese Tätigkeit wird vor, während und nach der
Entwicklung einer Applikation durchgeführt.
07.12.2010
14 Performance und Index
24
12
Tuning im Entwicklungsprozess
07.12.2010
Im
pl
em
en
ta
tio
n
eb
tri
Be
Performance
Tuning
e
lys
a
An
/
n
n
ig
sig des
De Re
Performance
Erwartungen
14 Performance und Index
Ermöglichen der
Performance
Performance
Überprüfung
25
Testkriterien
Am aussagekräftigsten sind Tests unter
realistischen Bedingungen.
Diese lassen sich aber oft nur schwer finden und
daher beschränkt man sich in der Praxis mit
einer realistischen Menge von Testdaten.
Steht das System schon im produktiven Einsatz,
kann die Belastung von Server und Netzwerk
mitberücksichtigt werden.
07.12.2010
14 Performance und Index
26
13
Aspekte des Tunings
 Design
Aufbau der DB bestimmt die möglichen SQL Statements
 Applikation
Aufbau der Applikationen bestimmt die SQL Statements
 Speicher
Grösse der Speicher bestimmt die Anzahl Festplattenzugriffe
 I/O
Festplattenzugriffe und Netzwerkverkehr
 Contention
Locking Probleme durch Anzahl Benutzer und Prozesse
07.12.2010
14 Performance und Index
27
Typische Performancemängel
Wenn die Datenbank im Betrieb nicht die
gewünschte Performance aufweist sind meist
folgende Ursachen ausschlaggebend:





07.12.2010
Nicht optimales Datenbankdesign
Ineffiziente Abfragen
Fehlende Indizes
Konfigurationsmängel
Hardware
14 Performance und Index
28
14
Datenbankdesign
Beim Entwurf des Datenbankmodells mit dem
Entity-Relationship-Modelling (ERM) Verfahren
wird die Grundlage für eine gute Performance
gelegt (oder eben nicht).
In der Praxis geht es dabei darum, einen guten
Kompromiss zwischen strenger Normalisierung
und einfachen (schnellen) Modellen zu finden.
07.12.2010
14 Performance und Index
29
Fehlender Index
Steht kein Index für die SQL Abfrage zur
Verfügung, wird ein Full Scan über die ganze
Tabelle durchgeführt.
Somit wird für jede noch so spezifische Abfrage
die gesamte Tabelle durchlaufen, was enorm
zeitaufwändig ist!
O(n) Problem in der Informatik.
07.12.2010
14 Performance und Index
30
15
Index
Auch bei MySQL ist die Indizierung von Daten eine der
einfachsten und effizientesten Massnahmen zur
Steigerung der Performance.
Die Praxis zeigt, dass etwa 90% aller Probleme bei
MySQL wegen mangelhafter Indizes auftreten.
Da jeder Index auf ein bestimmtes Datenfeld aber auch
den Datenbestand erhöht, gilt es, eine optimale Balance
zwischen Speicherbedarf und Performance zu finden.
07.12.2010
14 Performance und Index
31
Partieller Index
Weil der Index für eine grosse Tabelle auch viel
Platz braucht, beschränkt man sich auf einen
Teil des Wertes.
ALTER TABLE t_ma ADD INDEX (name(4));
Besteht der Name aus durchschnittlich 8 Bytes, werden im
obigen Beispiel nur die ersten 4 Bytes indiziert. Dazu kommt
noch der Datensatzzeiger, der 4-8 Bytes pro Datensatz benötigt.
07.12.2010
14 Performance und Index
32
16
Ein- / Mehrspalten Index
Der Index kann auf eine oder mehrere Spalten definiert
werden (single-/multicolumn).
id
vorname
name
ort
…
…
…
…
…
…
273
Martin
Huber
Chur
…
274
Martin
Graf
Chur
…
275
Martin
Huber
Basel
…
276
Roland
Hofer
Bern
…
277
Martin
Graf
Zürich
…
…
…
…
…
…
SELECT id FROM telbuch WHERE vorname=`Martin`
AND name=`Huber` AND ort=`Chur`;
07.12.2010
14 Performance und Index
33
Frage
Sind drei einzelne Indizes auf die Spalten
vorname, name und ort geichbedeutend einem
Mehrspaltenindex auf (vorname, name, ort)?
ALTER TABLE t_ma ADD INDEX (vorname, name, ort);
07.12.2010
14 Performance und Index
34
17
Leftmost Prefixing
Mehrspaltenindizes haben in MySQL eine
weitere angenehme Eigenschaft, bekannt als
„Leftmost Prefixing“
Der Mehrspaltenindex aus dem vorherigen
Beispiel kann für die Suche nach folgenden
Kombinationen verwendet werden:



vorname, name, ort
vorname, name
vorname
07.12.2010
14 Performance und Index
35
Grundsatz
MySQL verwendet höchstens einen
Index pro Tabelle und Abfrage.
07.12.2010
14 Performance und Index
36
18
Index Sortierung
MySQL bietet ab der Version 4.0 eine gute
Optimierung für die Abfrage der Indizes.
SELECT * FROM t_ma WHERE name=„Huber“
ORDER BY vname DESC;
SELECT * FROM t_ma WHERE name=„Huber“
ORDER BY vname ASC;
MySQL merkt, wenn ein Index „rückwärts durchlaufen“
werden muss.
07.12.2010
14 Performance und Index
37
Index Typen
„Normaler“ Index


Meistverwendeter Index, keine Einschränkung
CREATE INDEX …
Primary Key

Werte sind UNIQUE, Spalte als NOT NULL definiert
Unique Index


Werte sind UNIQUE
CREATE UNIQUE INDEX …
Fulltext Index


Verwendung zur Volltext Suche
ALTER TABLE ADD FULLTEXT …
07.12.2010
14 Performance und Index
38
19
Index
Ein Index (Indexdatei) ist ein Zugriffspfad auf eine
Datei, der selbst wieder als Datei dargestellt wird.
Mit einem Index wird eine effizientere Verwaltung der
Daten möglich, indem auf jeden Datensatz schneller
zugegriffen werden kann als bei der einfachen
sequentiellen Suche in einer Datei. Zugriffspfade werden
u.a. durch Hashing, B-Trees und deren Varianten, GridFiles, R-Trees oder K-D-Trees unterstützt.
07.12.2010
14 Performance und Index
39
Geclusterte Indizes
Bei geclusterten Indizes werden der
Primärschlüssel und der Datensatz selbst
„geclustert“, d.h. zusammengefasst, und
die Datensätze werden in der Reihenfolge
des Primärschlüssels gespeichert.
InnoDB verwendet geclusterte Indizes.
Auf dem Primärschlüssel basierende Queries werden
sehr schnell ausgeführt.
07.12.2010
14 Performance und Index
40
20
Aufbau des Index
Jeder Indexeintrag besteht aus einem
Schlüsselelement K, dem Datensatz T und
eventuell einem Pointer P für die weitere Suche
im Zugriffspfad.




P zeigt auf die nächste Indexseite der Indexdatei
T kann vollständig im Index gespeichert sein
T kann auch als Datensatzidentifikator TID vorliegen
Im RDBS ist K ein Attribut der indizierten Tabelle
07.12.2010
14 Performance und Index
41
Sekundäre Indizides
Sekundäre Indizes verweisen auf den
Primärschlüssel (K) und nicht auf den
Datensatz.
Probleme:
- Langer Primärschlüssel
- Änderung des Primärschlüssels
07.12.2010
14 Performance und Index
42
21
Dünn- vs. dichtbesetzter Index
dünnbesetzter Index: Es existiert nicht für jeden
Zugriffsattributwert K ein Eintrag in der
Indexdatei.
Tabelle ist sortiert nach Zugriffsattributen und es
gilt: Ki ≤ Kx < Ki+1.
Indexsequentielle Datei: sortierte Datei mit
dünnbesetztem Index als Primärindex
dichtbesetzter Index: Für jeden Datensatz
existiert ein Eintrag in der Indexdatei
07.12.2010
14 Performance und Index
43
Unique Index / Primärschlüssel
Bei MyISAM ist der Primärschlüssel ein NOT NULL
UNIQUE INDEX mit Namen PRIMARY. MyISAM
Tabellen müssen keinen Primärschlüssel haben.
InnoDB- und BDB-Tabellen verlangen Primärschlüssel.
Die Storage Engine fügt einen intern generierten
Schlüssel (AUTOINCREMENT) ein, wenn bei der Erstellung
kein Primärschlüssel angegeben wird.
HEAP-Tabellen benötigen keinen Primärschlüssel,
erzeugen aber ebenfalls einen.
07.12.2010
14 Performance und Index
44
22
Index und NULL
NULL Werte können in normalen Indizes
vorkommen.
MySQL (ab 4.0) erlaubt das Vorkommen
von NULL auch im UNIQUE INDEX.
NULL Werte im Index wirken sich nicht auf
die Performance aus!
07.12.2010
14 Performance und Index
45
Index Strukturen
B-Tree
Hash
R-Tree
07.12.2010
14 Performance und Index
46
23
Suchbaum
Suchbäume haben eine Ordnung p, so dass in
jedem Knoten p-1 Werte und p Pointer auf
weitere Knoten vorhanden sind.
Suchbäume erlauben es, Werte in den
Suchbaum aufzunehmen, ohne die zugrunde
liegenden Daten zu sortieren.
Suchbäume werden nicht automatisch balanciert!
07.12.2010
14 Performance und Index
47
B-Tree (B-Baum)
Der B-Tree ist ein Algorithmus zur Erstellung eines
Index. Er generiert einen Mehrwege-Baum, d.h. jeder
Knoten hat mehrere Nachfolger. Haupteigenschaft ist,
dass jeder Pfad im Baum gleich lang und das ganze
Gebilde daher balanciert ist.
Jeder Knoten entspricht einer Seite in der Datei. Jede
Seite (bis auf die Wurzel) ist mit mindestens m und
höchstens 2*m Indexeinträgen gefüllt. Jede Seite enthält
eine Sequenz von sortierten Schlüsseln.
( Vereinfachte Annahmen: Primärindex und TID als Referenz auf
den eigentlichen Datensatz )
07.12.2010
14 Performance und Index
48
24
B-Tree Eigenschaften
Am weitesten verbreiteter Indextyp
Kombination aus Flexibilität und Grösse
z.B. für bereichsbasierte Abfragen
O(log n) Performance für einfaches Query
Flacher als binäre Bäume
07.12.2010
14 Performance und Index
49
B-Tree
07.12.2010
14 Performance und Index
50
25
Beispiel
07.12.2010
14 Performance und Index
51
Hash Index
ebenfalls weit verbreitet
Flache Strukturen (vgl. mit Bäumen)
basierend auf Hash Funktion

Der Hash Wert wird genutzt, um zu ermitteln, in
welchem Fach (Bucket) der Schlüssel abgelegt wird.
Sehr schnelle Lookups möglich

O(1), solange Hash Werte gut verteilt sind
Geringere Flexibilität

Bereichsbasierte Abfragen nutzen Index nicht
07.12.2010
14 Performance und Index
52
26
Hash Theorie
Der MD5 Algorithmus erzeugt 128Bit-Werte (die standardmässig in
Base-64 dargestellt werden), also gibt es über 3.4 * 1038 mögliche
Werte. Weil die meisten Rechner nicht über derart viel Plattenplatz
verfügen (und schon gar nicht Arbeitsspeicher), sind die HashTabellen immer auf den verfügbaren Speicherplatz beschränkt.
Eine gängige Technik, den Schlüsselplatz zu beschränken, besteht
darin, eine feste Zahl von Speicherplätzen (Buckets) zu allozieren
(meist eine relativ grosse Primzahl wie 35149). Der Hash-Wert wird
nun durch diese Primzahl dividiert und der Rest legt fest, in welchen
Bucket der Wert eingetragen wird.
Die Implementierung ist aber meist noch etwas komplexer.
07.12.2010
14 Performance und Index
53
MyISAM Tabellen
Default B-Tree
Präfix Komprimierung

z.B. wird bei URL http:// komprimiert
Gepackte Schlüssel PACK_KEYS=1

höherwertige Bytes werden komprimiert bei
INTEGER Werten
Verzögertes Schreiben von Indizes

delay_key_write (on, off, all)
07.12.2010
14 Performance und Index
54
27
MEMORY Tabellen
ursprünglich nur Hash Index
ab 4.1 auch B-Tree möglich

CREATE TABLE …
INDEX USING BTREE (name) …
Höchste Query Performance

Kombination von B-Tree Flexibilität und
Memory basierten Tabellen und Indizes
07.12.2010
14 Performance und Index
55
InnoDB Tabellen
B-Tree
Keine Präfix Komprimierung, kein Packen
Primärschlüssel notwendig

Wenn nicht definiert, wird 64-Bit-Wert bereitgestellt
Geclusterte Indizes
Indizes im InnoDB Tablespace
gespeichert
07.12.2010
14 Performance und Index
56
28
Volltextindex
Nur in MyISAM
Normaler zweiteiliger MyISAM-B-Tree


erstes Feld: indiziertes Wort als VARCHAR
zweites Feld: Gewichtung innerhalb Zeile als FLOAT
Ein Datensatz für jedes Wort jedes indiziertes
Feldes (Platz vs. Performance)
SELECT * FROM t_bücher WHERE titel = “%mysql%“;
SELECT * FROM t_bücher (titel) MATCH AGAINST (‘mysql‘);
07.12.2010
14 Performance und Index
57
Weitere Performance Engpässe
Wildcard Matching

LIKE „%string%“
Reguläre Ausdrücke

RLIKE „(ber|ger)$“
Fehlerhafte oder beschädigte Statistiken

MySQL interne Indexstatistiken
Zu viele passende Datensätze

Grenze 30%
07.12.2010
14 Performance und Index
58
29
Index Pflege
SHOW INDEX FROM tabelle \G
OPTIMIZE TABLE


Alle Indizes werden neu aufgebaut
Kann lange dauern und Tabelle ist locked
myisamchk

MyISAM Tabelle kann offline geprüft werden
ANALYZE TABLE für InnoDB

Daten werden neu gelesen und Statistik
verbessert
07.12.2010
14 Performance und Index
59
Konfigurationsmängel
Haben globalen Einfluss auf das System
Systemparameter
Optionen beim Start der DB
Verteilung der Datenbank Dateien
Konfiguration der SGA
Konfigurationsmängel passieren meist bei der Implementation des
DBS und können allenfalls in der Testphase noch behoben werden.
Im produktiven Betrieb sind Konfigurationsmängel oft schwer
erkennbar und lassen sich nur mit grösserem Aufwand beheben.
07.12.2010
14 Performance und Index
60
30
Hardware
Zeigt sich die gewählte Hardware als zu
leistungsschwach, muss unter Umständen ein
stärkerer Rechner gekauft und das System neu
implementiert werden.
Harmlosere Fälle sind die Erweiterung des
Hauptspeichers oder zusätzliche Festplatten.
Ist die Kombination Hardware/Software nicht für
den Einsatzzweck ausgelegt, kann dies sogar
einen Redesign des ganzen Systems bedingen!
07.12.2010
14 Performance und Index
61
Übungen

Zeichnen Sie einen Suchbaum (p=3), in den folgende Zahlen
(Reihenfolge) eingetragen werden: 1, 2, 3, 4, 5, 6, 7, 8

Wie würde der resultierende B-Tree aussehen?

In einer Tabelle gibt es in Attribut Status, welches die Werte
„offeriert, bestellt, geliefert, abgelaufen“ haben kann. Welchen
Index schlagen sie dafür vor?
07.12.2010
14 Performance und Index
62
31
07.12.2010
14 Performance und Index
63
32
Herunterladen