Montag Aug. 08, 2005

ORACLE: dbms_stats.gather_schema_stats

Im Gegensatz zur Oracle 8i verläßt sich der CBO (Cost Based Optimizer) in der 9i oder 10g noch viel mehr auf die Statistiken über Tabellen, Indizies, usw. Deshalb sollten die auch immer möglichst aktuell sein bzw. aktuallisiert werden, wenn sich viel geändert hat, damit die Ausführungspläne möglichst optimal berechnet werden können, was natürlich der Performance zu Gute kommt.. In der 8i hat sich immer wieder mal die Frage gestellt: "Welchen Wert nehm ich jetzt für estimate_percent, welchen für das, usw.?". Seit der 9i kann man diese Fragen nun z.T. der Datenbank überlassen. Möchte man z.B. ganzes Schema samplen, kann man folgende Prozedur ausführen:

exec dbms_stats.gather_schema_stats(ownname => '<SCHEMANAME>',estimate_percent => dbms_stats.auto_sample_size,method_opt=>'for all columns size auto', cascade=>true);

<SCHEMANAME> natürlich durch das zu analysierende Schema ersetzen. Mehr dazu: Oracle9i Optimizer Statistics Collection Enhancements

Das Ganze funkt natürlich auch mit einzelnen Tabellen:

exec dbms_stats.gather_table_stats(ownname=>'<SCHEMANAME>', tabname=>'<TABELLENNAME>',estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE,cascade=>true);

Kommentare:

Senden Sie einen Kommentar:
  • HTML Syntax: Ausgeschaltet