TAKTUM Logo


Oracle Schulung
Oracle Schulung

Oracle Tuning und Optimierung Tutorial: Performance Tipps
Tipps zur Optimierung einer Oracle-Datenbank

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


Stichwörter

Datenbank database Performance Tipps Blockgröße Checkpoints Indizes Index exists in NULL driving table Befehl Befehle alter table cache nocache