|
Inhaltsverzeichnis
Data-Cache
Optimierer
Analysedaten
Ungünstige SQL-Befehle
Explain Plan
Hints
Performance Tipps
Oracle Bücher
Impressum
|
Tuning der Datenbank
- Blockgröße mind. (8 KB)
- Auf ausreichend großen Datencache achten (Trefferquote beobachten)
- REDO-LOG-Dateien nicht zu klein wählen (je nach Datenaufkommen ca. 10 bis 200 MB)
- Anzahl Rollback-Segmente ausreichend groß wählen: Anzahl gleichzeitiger Transaktionen = Anzahl Rollback-Segmente
- Überflüssige Checkpoints vermeiden:
Parameter log_checkpoint_interval=1000000
Parameter log_checkpoint_timeout=0
- Indizes auf Tabellen, in denen häufig gelöscht wird, regelmäßig reorganisieren:
alter index <index> rebuild (möglichst, wenn keine Anwender arbeiten; auf ausreichend TEMP-Platz achten)
- Durch geeignete Storage Parameter die Anzahl der Extents nicht zu groß werden lassen
(maximal einige Hundert)
SQL-Tuning
- Verwenden des kostenbasierten Optimierers mit aktuellen Analysedaten für alle Tabellen
(Befehl "analyze table"). Achtung: Seien Sie vorsichtig mit der Umstellung. es können auch einzelne
gravierende Verlangsamungen auftreten!
- Erstellen von Histogrammen (Befehl "analyze table" mit Klausel "for all indexed
columns")
- bei Verwendung von RULE: driving table berücksichtigen (letzte Tabelle in der from-Klausel)
- bei Verwendung von "or" ggf. RULE einschalten oder "UNION" verwenden
- an häufig benutzten kleinen Tabellen den Parameter "cache" setzen => wird
bei full table scans nicht aus cache entfernt (alter table <tabelle> cache;>
- auf "vergessene" Indizes achten (insbesondere bei "einfachen" Queries)
- wenig selektive Indizes vermeiden
- bei zusammengesetzten Indizes: erste Spalte muß eingeschränkt sein
- bei Performance Messungen caching-Effekt berücksichtigen! Bei der ersten Ausführung
eines Befehls werden evtl. Daten über IO geladen. Ab dem zweiten Ausführen des selben Befehls befinden
sich diese evtl. schon im Hauptspeicher).
- keine Verwendung von Indizes bei:
is not null
<>
like '%abc...'
Funktionen auf Spalten: z.B. upper(name)='MEIER'
=> ab Oracle 8i Indizes auf Funktionen möglich (in Oracle 8i nur in der Enterprise Edition, ab Oracle 9i
auch in der Standard Edition verfügbar)
- besser "exists"-Subquery als "in"-Subquery verwenden
|