Welche Vorteile hat Oracle gegenüber anderen Datenbanken
·
DB Server ist für unterschiedliche
Rechnerstrukturen optimiert
·
Datensätze werden ohne
Eskalationsverfahren gesperrt à Minimierung von Deadlock
Häufigkeiten
·
Lesen ohne Sperren für konsistente
Leseoperationen bei gleichzeitig beliebigen Änderungsoperationen
·
Fast Commit zur Verminderung der
physischen Plattenzugriffe
·
Verteilte Datenstrukturen auf
beliebig viele Platten
·
Frei Konfigurierbarer DB-Cache
·
SQL Optimierer zur Ermittlung der
Optimalen Zugriffspfade zu den Daten
Wichtig beim Tunen ist, daß
Schwachstellen erkannt werden. Das hinzufügen von Indices kann z.B. die
Antwortzeit um den Faktor 10 bis 1000 verbessern. Im Gegenteil dazu kann z.B.
die Erhöhung des DB-Cache in manchen Fällen nur zu Verbesserungen von 1 %
führen.
Was kann man Tunen:
1.
Die Datenstruktur (logische
Struktur der Objekte, Index, Cluster)
2.
SQL Operationen SQL
Optimierung , Ermittlung der Statistiken für DB Objekte
3.
Anwendung PL/SQL
Programme, Integritätsbedingungen, diskrete Transaktionen
4.
DB – Server DB-Cache
Otimierung, Checkpointing
5.
Datenbank Objektverteilung
auf Disk, Rollback Segmente, Redo-Log-File
1.
Die Datenstruktur
This paragraph has been concealed! Download the complete document for free! • Click on download to get complete and readable text • This is a free of charge document sharing network • First upload your own document, and you get a word document per email • No registration necessary, gratis Swap homeworks and notes at no charge! Gratis scripts for students and pupils!
2.
SQL Befehls Ebene
SQL Optimierer suchen den
schnellsten Zugriffspfad zu den Daten. Es gibt dafür in Oracle7 3 Methoden
·
Regel – Methode
·
Statistische Methode
·
Statistische Methode + Hinweise
Bei der Regel-Methode
bestimmen die Bedingungen in der ‚where‛ Klausel den Zugriffspfad.
Bei statistischen Methoden
werden statistische Informationen über Tabellen, Indizes und Cluster mit
einbezogen. Diese Infos erhält man mit dem ‚analyze‛ Befehl
Analyze table tab compute
statistics; //compute
liefert immer exakte Werte (dauert sehr lange)
Analyze index iname
estimate statistics; //estimate
liefert geschätzte Werte die aber genau genug sind
In Oracle 7 wird defaultmäßig
die Statistische Methode verwendet, sind keine Statistiken vorhanden führt der
SQL Optimierer verschieden Schätzungen durch um den Pfad zu ermitteln
Die Aktivierung von anderen
Optimiermethoden kann durch Hinweise geschehen. Diese Hinweise können genutzt
werden bei select, update und delete, und müssen als erste Klausel nach dem
Operator Schlüsselwort angegeben werden.
Update /*+rule*/ table
set ....
3.
Anwendungs Ebene
Positiv wirken sich hier z.B.
gespeicherte PL/SQL Programme aus die zentral und kompiliert am Server liegen
und einmal aktiviert allen Benutzern zur Verfügung stehen.
Auch sollten
Integritätsbedingungen zentral und optimiert am DB-Server ausgeführt werden,
anstatt innerhalb des Anwendungsprogrammes
4.
DB – SERVER Ebene
This paragraph has been concealed! Download the complete document for free! • Click on download to get complete and readable text • This is a free of charge document sharing network • First upload your own document, and you get a word document per email • No registration necessary, gratis Swap homeworks and notes at no charge! Gratis scripts for students and pupils!
Die Ermittlung der Trefferrate
erfolgt so:
Select
name,value
from v$sysstat
where name
in(‚consistent gets‛,‛db block gets‛,‛physical reads‛)
Als Ergebnis erhält man nun
Beispielsweise diese 3 Werte
Consistent gets: 121.001 Lesezugriffe
konsistent und
Db block gets: 340.010 Lesezugriffe
aus dem Cache
Physical reads:
85.990 Plattenzugriffe
Physical reads
Trefferrate =
(1- ------ ) *100 = 88%
Db block gets + consistent gets
Für eine exakte Ermittlung
der optimalen Cachegröße muß man aber über einen bestimmten Zeitraum eine DB
Pufferanalyse mit dem typischen Anwendungsprofil durchführen. Daraus erhält man
dann genau Statistiken über die Auslastund der einzelnen DB-Cache Blöcke.
5.
Datenbank
Hier geht’s es vor allem
darum, die unterschiedlichen Filetypen einer Datenbank und die Zuordnung zu den
DB Objekten optimal zu gestalten.
So sollten z.B. Index
Segmente, Redo-Log-Files und Rollback Segmente von den Benutzerdaten getrennt
auf anderen, schnelleren Platten gespeichert werden.
INDEXES
Indexes sollten für jene
Spalten angelegt werden die in der ‚where‛ Klausel verwendet werden, da sie die
Antwortzeit enorm beschleunigen.
Indexes sind in ihrer
Struktur aufsteigend sortierte,selbst ausbalancierte B-Tree’s, die bei jedem
insert oder delete neu balanciert werden.
This paragraph has been concealed! Download the complete document for free! • Click on download to get complete and readable text • This is a free of charge document sharing network • First upload your own document, and you get a word document per email • No registration necessary, gratis Swap homeworks and notes at no charge! Gratis scripts for students and pupils!
Bsp. Workerskill
table
ROWID Name Skill Ability
000204.0001.0001 Dick
Jones Smithy Excellent
000204.0002.0001 Wilfred
Lowell Discus Slow
000204.0003.0001 John
Pearson Smithy Average
000204.0004.0001 John
Pearson Combine Driver
Index für Primary
Key, Name und Skill
Dick Jones Smithy 000204.0001.0001
John Pearson Combine
Driver 000204.0004.0001
John Pearson Smithy 000204.0003.0001
Wilfried Lowell Discus 000204.0002.0001
Index erzeugen
Create index
indexname on table(column1,column2,...)
Beim Indexnamen sollte
folgendes Format eingehalten werden:
TABLENAME_COLUM1_COLUM2
Alle Indexes die vom Benutzer
erstellt werden, sind im Table USER_INDEXES abgespeichert.
Wo kann man Indexes verwenden
Index sind vor allem bei
jenen Spalten sinnvoll, die in where Klauseln oder bei Joins verwendet werden.
Aber Achtung, wird in der where Klausel IS NOT NULL oder IS NULL verwendet, so
erhält man keinen Geschwindigkeitsvorteil.
Auch bei ORDER BY, MIN und
MAX wird der Index verwendet, aber er wrid nicht bei
GROUP BY und DISTINCT genutzt !
Sinnvoll sind Indexes auch
nur bei Spalten deren Daten variieren, also zum Beispiel bei Telefonnummern
oder Postleitzahlen. Ein Index für eine Spalten die nur ‚Y‛ oder ‚N‛ enthält
wäre eine schlechte Wahl, und kann die Systemleistung sogar beeinträchtigen.
This paragraph has been concealed! Download the complete document for free! • Click on download to get complete and readable text • This is a free of charge document sharing network • First upload your own document, and you get a word document per email • No registration necessary, gratis Swap homeworks and notes at no charge! Gratis scripts for students and pupils!
Variieren die Spalten etwa
gleich, so sollte die Spalte auf die am öftesten zugegriffen wird die erste
sein.
Kleine Tabellen mit weniger
als 30 Reihen sollten besser keinen Index enthalten, über 100 Reihen ist ein
Index auf jeden Fall sinnvoll.
Wieviele Indexes sollten erstellt werden
Es können pro Tabelle maximal
16 einspaltige Indexes vergeben werden, oder maximal 1000 bis 2000 Byte pro
Index (je nach Betriebssystem).
Die Nachteile von so vielen
Indexes betreffen jedoch Insert und Delete Funktionen, da ja alle B-Tree’s neu
balanciert werden müssen, und es braucht etwas mehr Festplattenspeicher.
Im Normalfall ist der Vorteil
den man dadurch erhält größer als der verlorene Plattenplatz.
NULL Werte in Indexspalten
Legt man einen Index über
eine Spalte die auch NULL Werte enthält, so wird für jene Spalten die NULL
enthält kein Index angelegt. Bei mehrspaltigen Indexes wird nur dann kein Index
angelegt wenn alle Indexspalten NULL enthalten.
Der Vorteil davon soll durch
folgendes Beispiel verdeutlicht werden.
Gegeben ist eine Tabelle von
Verkäufern mit jeweiligen Gehalt. Hat ein Verkäufer kein Gehalt so soll nicht 0
sondern NULL eingetragen sein.
Will man nun alle Verkäufer
mit Gehalt ausgeben geht man normalerweise so vor.
SELECT * from VERK
WHERE Gehalt
IS NOT NULL;
|