Oracle Database/Tuning

Aus Mikiwiki
Version vom 25. Juni 2010, 11:23 Uhr von Michi (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „== Optimizer == Rule Based Optimizer / RBO * Arbeitet bestimmte Regeln ab, nach denen die Abfrage optimiert wird * Existiert noch in neueren Oracle-Versionen * ...“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Optimizer

Rule Based Optimizer / RBO

  • Arbeitet bestimmte Regeln ab, nach denen die Abfrage optimiert wird
  • Existiert noch in neueren Oracle-Versionen
  • Verwendung wird nicht empfohlen, Weiterentwicklung wird von Oracle nicht weitergeführt

Cost Based Optimizer / CBO

  • Existiert seit Oracle-Version 7, gut zu gebrauchen aber erst seit Version 8.1.7
  • Berücksichtigt Anzahl und Verteilung der Daten
  • Ausführungsplan wird anhand von Kosten (Prozessorzeit usw.) errechnet
  • Benötigt Statistiken, um zu vernünftigen Ergebnissen zu kommen

Schritte des Optimizers:

  • Berechnung von Ausdrücken und Bedingungen (z. B. "where kunde in (1,10)")
  • Statement Transformation: gegebenenfalls umwandeln von Unterabfragen in Joins (u.a.)
  • Wahl des Optimizers (RBO oder CBO)
  • Wahl des Zugriffspfades für jede Tabelle
  • Wahl der Reihenfolge, in denen die Tabellen mit JOIN verknüpft werden
  • Wahl der Verknüpfungsmethode (z. B. Nested Loops, Hash Join usw.)

Full Table Scan

Beim Full Table Scan werden alle Blöcke einer Tabelle gelesen. Er wird verwendet wenn:

  • grosser Anteil von Zeilen einer Tabelle zurückgeliefert werden muss
  • kleine Tabelle
  • alte Statistiken (Tabelle hatte mal wenig Zeilen)

ROWID-Scan

Über die ROWID kann eine bestimmte Zeile am schnellsten gefunden werden. Dabei werden zuerst die ROWIDs bestimmt und dann die Zeilen anhand der ROWIDs gelesen.

Index-Scan

Liefert ROWIDs aus einem Index zurück. Falls nur indizierte Spalten ausgewählt werden, so werden die Daten nur aus dem Index beschafft, die Tabelle muss dann nicht gelesen werden.

CBO-Statistik

  • Anzahl der Zeilen
  • Anzahl der Blöcke
  • Die Selektivität beschreibt, wie gut ein Abfragekriterium den Suchraum einschränkt. Viele verschiedene Werte ergeben eine hohe Selektivität. Je höher die Selektivität, desto wahrscheinlicher wird ein Index verwendet.
  • Systemstatistiken:
    • Festplatte, Arbeitsspeicher (ab Version 9)
    • Netzwerk (ab Version 10)

Befehl ANALYZE

  • CCOMUTE STATISTICS: Analysiert eine Tabelle vollständig
  • Ergebnisse können im Data-Dictionary über USER_TABLES/ALL_TABLES/DBA_TABLES abgefragt werden
  • Beispiel:
ANALYSE TABLE Mitarbeiter COMPUTE STATISTICS;
  • ESTIMATE STATISTICS: analysiert nur einen bestimmten Prozentsatz der Tabelle
  • Beispiel:
ANALYZE TABLE Mitarbeiter ESTIMATE STATISTICS 10 PERCENT;