Samstag, September 22, 2012

Index Features 11g (nach Richard Foote)

Ein Exzerpt aus Richard Footes Präsentation zum gleichen Thema - der Herr Foote behauptet dort auch an einer 12c-Version zu arbeiten, die ich gerne frühzeitig zu Gesicht bekäme. Das Exzerpt ist wie immer ausgesprochen subjektiv und führt nicht alle wichtigen Punkte der Präsentation auf (sondern vor allem die, die mir nicht selbstverständlich erscheinen):
  • Online Rebuild:
    • EE Feature
    • verhindert parallel execution
    • benötigt ein table lock zum Beginn und zum Ende des Index-Aufbaus
    • in 11g führen die locks nicht zur Beeinträchtigung folgender DML-Operationen (was in früheren Versionen der Fall war)
    • ein rebuild ist dadurch in Produktivsystemen weniger problematisch (aber in der Regel immer noch nutzlos)
  • Index Statistiken
    • geben dem CBO Informationen zur Korrelation von Werten im Index (über die DISTINCT_KEYS-Angabe, was natürlich nur funktioniert, wenn alle Index-Spalten eingeschränkt werden, wie ich eben noch mal ausprobiert habe), früher wurden die Einzelwahrscheinlichkeiten der Spalten kombiniert (ich hatte vergessen, dass das erst in 11g eingeführt wurde)
    • index monitoring kann den CBO davon abhalten, die index Statistiken bei der Planerstellung heranzuziehen!
  • Invisible Indexes
    • werden in 11.1 zum lookup nach child-rows bei der Löschung von parent rows verwendet (obwohl sie unsichtbar sind/sein sollten); in 11.2 ist das nicht mehr der Fall
    • auch in diesem Fall verhält sich index monitoring seltsam, da diese Nutzung eine Index nicht registriert wird (so dass die Löschung eines solchen Index massive Folgen hat)
    • werden in 11.1 als Informationsquelle für den CBO herangezogen (in 11.2 nicht mehr)
    • können zur Unterstützung von PK/UK-Constraints verwendet werden: in diesem Fall werden sie aber nicht für den Zugriff berücksichtigt
    • die Statistikerfassung für invisible indexes hat in 11.1 einen Bug (ORA-00904: : invalid identifier), der in 11.2 gefixed ist
  • Bitmap Join Indizes
    • in 11 für IOTs definierbar
  • Creation On Demand Segments
    • 11.2: "The first row creates all dependent segments, even if indexes are not populated"
    • in 11.2 werden Quotas erst aktiv, wenn Daten eingefügt werden: Objekte ohne Storage können angelegt werden
    • in 11.2 wird das Segment eines Index, der als unusable markiert ist, gelöscht. In 11.1.0.7 war das noch nicht der Fall (auch das habe ich gerade ausprobiert)
    • für nicht partitionierte Indizes einer partitionierten Tabelle bleibt das Segment auch in 11.2 erhalten
    • man kann sich dieses Feature zu nutze machen, um nur die relevanten Teile eines Index als usable zu behandeln (Beispiel: Processed-Kennzeichen); das Verfahren erinnert an Tom Kytes alten Trick der FBIs, die nur die relevanten Daten berücksichtigen 
  • IGNORE_ROW_ON_DUPKEY_INDEX
    • ein Hint zum stillschweigenden Übergehen von Duplikatsätze, die sonst ORA-00001-Index-Fehler hervorgerufen hätten. Meinen Kommentar dazu und einen Link auf den Blog-Artikel des Herrn Foote gibt's hier.
    • funktioniert nicht bei UPDATE und nur mit Indizes, die als UNIQUE definiert sind
  • ANALYZE VALIDATE STRUCTURE FAST
    • "more efficient VALIDATE STRUCTURE command option", aber eine Mogelpackung
  • FBIs
    • ihre virtual columns sind erst sein 11 im dictionary sichtbar
    • in 11 kann man  virtual columns auch ohne index haben

Keine Kommentare:

Kommentar veröffentlichen