Database Reference
In-Depth Information
Die Präferenz INCREMENTAL ist für partitionierte Tabellen vorgesehen und hat FAL-
SE als Vorgabewert. Ist diese Präferenz auf TRUE gesetzt, wird das neue Verfahren der
Erstellung von Optimizer-Statistiken für partitionierte Tabellen angewendet. Bei diesem
Verfahren werden Statistiken lediglich für die neuen Partitionen gesammelt. Nicht geän-
derte Partitionen oder Partitionen mit einer geringen Anzahl der Änderung werden dabei
übersprungen. Die globalen Optimizer-Statistiken werden ohne zusätzlichen Full Table
Scan berechnet. Dieses Verfahren verbessert außerdem die Erstellung der Statistik für ver-
schiedene Spaltenwerte (distinct values). Die folgenden Voraussetzungen müssen erfüllt
werden, damit sich die Präferenz INCREMENTAL auswirkt:
• dieOptimizer-Statistikenmüssenfreigegebensein(diePräferenzPUBLISH=TRUE),
• die Präferenz oder das Argument ESTIMATE_PERCENT muss auf DBMS_STATS.
AUTO_SAMPLE_SIZE gesetzt sein.
In der Version 11 hat Oracle die erweiterten Optimizer-Statistiken eingeführt. Zu dieser
Statistikart zählen Staitistiken für die Gruppen von Spalten (multicolumn statistics) und
Statistiken für Ausdrücke (expression statistics). Wenn mehrere Spalten von einer Tabelle
in den Prädikaten beteiligt sind, muss der Optimizer zwangsläufig Annahmen bei der Be-
rechnung der Kardinalität machen, auch wenn Histogramme für alle Spalten vorhanden
sind. Dies kann zu einer ungenauen Schätzung führen. Dasselbe betrifft die Ausdrücke in
Prädikaten. Die erweiterten Statistiken stellen eine Art von Histogrammen dar und ver-
bessern die Kardinalitätsschätzung für die beiden Fälle. Diese Statistiken können nicht für
die Tabellen im Schema SYS erstellt werden. Zeigen wir an dem folgenden Beispiel, wie
die erweiterten Statistiken für die Gruppen von Spalten manuell zu erzeugen sind und in-
wieweit sie die Kardinalitätsschätzung optimieren. Legen wir zunächst eine Tabelle an und
füllen sie mit den Daten:
SQL> col ext new_value ext
SQL>
SQL> create table t1 (a number, b number);
Table created.
SQL> insert into t1 select -level, -level from dual connect by level <= 100;
100 rows created.
SQL> insert into t1 select 0, 0 from dual connect by level <= 54;
54 rows created.
SQL> insert into t1 select level, level from dual connect by level <= 100;
100 rows created.
SQL> commit;
Search WWH ::




Custom Search