Schlagwort-Archive: Index

Neues vom Clustering Factor

Richard Foote (der „Index-Guru“) hat auf seinem Blog in mittlerweile drei Artikeln Neues zur Berechnung des Clustering Factors (CF) verkündet:

  1. Erster Artikel: Ein Patch für Oracle 11.2 führt eine neue Option „TABLE_CACHED_BLOCKS“ für die Berechnung mit DBMS_STATS ein. Dieser kann von 0-255 oder auf AUTO gesetzt werden und sorgt für eine Berücksichtigung von Caching-Effekten, die bislang nicht in die Berechnung des Clustering Factors eingegangen sind. Dadurch können unberechtigt zu hohe CFs deutlich reduziert werden, wenn die indizierten Rows innerhalb der nächsten n Blöcke der Zieltabelle liegen. n wird bei AUTO auf 1% der Tabellengröße in Blöcken gesetzt.
  2. Im zweiten Artikel geht Richard Foote auf Bedenken aus den Kommentaren zu Teil 1 ein, speziell die Bedenken, daß der CF nunmehr zu niedrig werden könnte. Ein ausführlicher Testfall mit einer großen Tabelle zeigt, daß hier selbst das Maximum von TABLE_CACHED_BLOCKS=255 keine gravierende Änderung zur Folge hat.
  3. Im dritten Artikel wird als Gegenbeispiel die maximale Einstellung auf eine kleine Tabelle angewendet und dargestellt, dass in solchen Fällen ein hoher Wert für TABLE_CACHED_BLOCKS, der nahe an der Anzahl an Datenblöcken der Tabelle liegt, kontraproduktiv sein kann.

Eine „Best Practice“ wird sich wohl erst noch herauskristallisieren müssen. Meine persönliche Vermutung anhand der bislang diskutierten Testfälle geht dahin:

  • TABLE_CACHED_BLOCKS = AUTO als DB-weite Einstellung
  • Wo es dann immer noch Probleme mit einem zu hohen CF gibt, Objekt-spezifische Einstellung dieser Option.

Weiterlesen