Oracle Optimizer Statistiken – Einführung Statistikarten

von Karsten Besserdich

Die Oracle Optimizer Statistiken sind eine Sammlung von Daten, die die Datenbank selbst und deren Objekte beschreibt.

Diese Informationen sind im DataDictionary der Oracle Datenbank abgelegt. Der Cost Based OptimizerCBO – nutzt diese Statistikdaten als Grundlage für die Erstellung von Ausführungsplänenexplain plan.

Man kann sich das in etwas so vorstellen, dass der Optimizer – CBO – auf Basis der ihm zur Verfügung stehenden Statistikdaten, eine sehr genaue Berechnung der Anzahl zu erwartender Datensätze durchführt.

Statistikarten

Es wird grundsätzlich zwischen 4 Statistikarten unterschieden:

  • Tabellenstatistiken – [USER|ALL|DBA]_TAB_STATISTICS
  • Columnstatistiken – [USER|ALL|DBA]_COL_STATISTICS
  • Indexstatistiken – [USER|ALL|DBA]_IND_STATISTICS
  • Systemstatistiken – SELECT pname, pval1 FROM aux_stats$ WHERE sname = ‚SYSSTATS_MAIN‘

Zusätzliche Columnstatistiken

Die Columnstatistiken benötigen u.U. zusätzliche Statistikendaten, um Datenzustände noch besser darstellen zu können. Diese Informatioen werden ebenfalls im DataDictionary gehalten und sind als Row – nicht als Column! – in [USER|ALL|DBA]_COL_STATISTICS mit einem vom System generierten Namen zu finden.

Sind Daten z.B. in einer Column ungleichmäßig verteilt, wird die Verteilung mittels Histogramme abgebildet. Es wird hier nochmals zwischen Frequency (Number Distinct Values < 254) und Hight-Balanced (Number Distinct Values >= 254) Histogrammen unterschieden.

Des Weiteren gibt es seit der Oracle Version 11g sogenannte Extended Statistics. Hier können Column Groups sowie Expression Statistics erstellt werden.

Column Groups wurden eingeführt um reale Beziehung zwischen Spalten – real-world relationships – abbilden zu können.

Expression Statistics, wie der Namen schon vermuten lässt, sind für spezielle Ausdrücke inkl. Funktionen z.B. UPPER(NAME) entwickelt worden. Hier gelten jedoch einige Restriktionen.

SCHREIBEN SIE EINEN KOMMENTAR