Hallo Chris,
wie ermittel ich die passende Größe für die Extents bei einer
neuen Datenbank, in wieweit ist die Größe überhaupt wichtig,
was hat die Größe mit dem Wachstum zu tun, gibt es Richtwerte
wieviele Extents eine Tabelle/Index maximal haben sollte ?
Um beurteilen zu können, wie groß du deine Extents anlegen solltest musst du dir die Auswirkungen bestimmter Eigenschaften von Extents vor Augen halten:
Vorteil kleiner Extents:
- Wenig verschenkter Platz auf der Platte
Vorteile großer Extents:
- Wenig Overhead für das Anlegen von neuen Extents
- Geringere Fragmentierung der Segmente
Vorteile von automatisch verwalteten Extents:
Vorteile von manuell getuneten Extents:
- Potentiell bessere Effizienz
Daraus abgeleitet verwenden wir bei uns eine Strategie, die pro Tablespace immer eine einheitliche Uniform-Extent Größe definiert. Bei der Anlage der Segmente werden diese so dimensioniert, dass der Platz grob gerechnet für drei bis fünf Jahre reicht (danach kommt ohnehin wieder einmal ein neuer Server oder ich krieg die DB aus irgendwelchen anderen Gründen wieder zwischen die Finger, sodaß ich eventuell nötige Anpassungen vornehemen kann). Die Aufteilung auf Tablespaces erfolgt nach mehreren Gesichtspunkten, darunter vor allem die Trennung Tables/Indices und eine Aufteilung nach „Art“ der Daten (Segmente die kontinuierlich wachsen, solche, die streng statisch bleiben und solche, wo abwechselnd Sätze dazu und wieder weg kommen).
Die Anzahl der Extents ist mittlerweile kaum mehr ein Kriterium, allerdings halte ich es für einen guten Plan die Segmente bereits von Anfang an so zu dimensionieren, dass nicht später die Extents quer über das/die Datenfile/s (d.h. in Folge dann natürlich auch die Platte) verteilt sind.
Zu deiner Frage bezüglich Full Index Scans: Die gibt es sehr wohl, nämlich dann, wenn du nur Spalten verwendest, die im Index enthalten sind (wozu sollte er dann auch noch in der Tabelle nachlesen). Öfter kommt das vor bei Auswahllisten: Ich will z.B. eine Adresse aus einer Liste auswählen und zeige dafür einen Matchcode an, auf den ein Index existiert: In dem Fall kann die DB für das Lesen der Auswahlliste einfach den Index über den Matchcode nehmen.
HTH
Martin