Überwachen der Tabellen- und
Indexfragmentierung (Oracle)
Je nachdem, wie auf die Daten zugegriffen wird, kann eine
Fragmentierung von Tabellen und Indizes die Performance beeinträchtigen. Zudem
wird durch eine Fragmentierung mehr Speicherplatz belegt. Dieses Problem
könnte durch eine Reorganisation des entsprechenden Objektes behoben werden.
Allerdings sollten Sie bedenken, daß dieser Prozeß mitunter sehr aufwendig ist
und das System während einer Reorganisation nicht zur Verfügung steht. Daher
ist es oft nicht zu empfehlen, sofort eine Reorganisation zu starten, um die
Fragmentierung zu beheben. Für weitere Informationen, wann eine Reorganisation
sinnvoll ist, siehe
Reorganization.
Eine Tabellenfragmentierung führt bei vollständigen Tabellendurchsuchungen (Full table scan) zu längeren Abfragezeiten. Da die Daten nicht gleichmäßig auf die Datenblöcke verteilt sind, müssen während einer Durchsuchung möglicherweise viele Blöcke gelesen werden, um die Abfrage durchzuführen. Diese Blöcke können auf verschiedene Extents verteilt sein. In diesem Fall muß Oracle rekursive Calls ausgeben, um die Adresse des nächsten Extents der zu durchsuchenden Tabelle zu finden.
Jüngste Untersuchungen haben gezeigt, daß die Tabellenfragmentierung kaum Auswirkungen auf die Performance des Datenbanksystems hat. Das liegt vor allen Dingen daran, daß vollständige Tabellendurchsuchungen in einem SAP-System eher selten sind, da auf die Daten über einen Index zugegriffen wird. Eine Reorganisation der Tabellendaten bringt daher im allgemeinen weniger Performance-Vorteile als früher angenommen.
Für weitere Informationen, wie Sie eine Reorganisation
durchführen können, siehe
Reorganizing Tables
with BR*Tools.
Eine Indexfragmentierung kann die Performance einer Anwendung wesentlich deutlicher beeinträchtigen. Beim Datenzugriff über einen Index und eine Indexbereichsdurchsuchung (in SAP-Systemen häufig), muß Oracle jeden Block in dem angegebenen Bereich lesen, um die indizierten Werte zu erhalten. Ist der Index stark fragmentiert, muß Oracle hierfür sehr viel mehr Blöcke und evtl. Ebenen durchsuchen. Um eine Indexfragmentierung zu beseitigen, muß der entsprechende Index neu aufgebaut werden.
Für weitere Informationen, wie Sie einen Index neu
aufbauen können, siehe
Rebuilding Indexes
with BR*Tools.
.
Sie sollten sowohl im Falle einer Tabellen- als auch im Falle einer Indexfragmentierung immer darauf achten, daß die weiche oder sogar die harte Grenze für die Anzahl der Extents (Parameter MAXEXTENTS) nicht erreicht wird. Wenn das der Fall ist, muß der Datenbank-Administrator eingreifen.
Siehe auch:
Probleme mit der maximalen Extentanzahl (Oracle)
Überwachen der Tabellenzugriffsmethoden (Oracle)
Tabellendurchsuchungen: Problemanalyse (Oracle)