Frage zu Statistiken

Hallo

Hier stand eben einer in der Tür, meinte die DB (Oracle) wäre so langsam und ich solle doch mal die Statistiken drüber laufen lassen ?

was ist das ???

Grüße

Chris

Hallo nochmal,

man sollte seine Tabellen regelmäßig analysieren (

ANALYZE TABLE ... compute statistics | estimate staistics ...

), dabei werden Statistiken erstellt, die der Optimizer für seine Arbeit, das Erstellen von Ausführungsplänen braucht. Mit veralteten Statistiken (z.B. die Tabelle hat seit der letzten Analyse ein paar Millionen Datensätze mehr oder weniger) klappt das nicht mehr.

Gruß Uwe

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo nochmal,

man sollte seine Tabellen regelmäßig analysieren (

ANALYZE
TABLE … compute statistics | estimate staistics …

),
dabei werden Statistiken erstellt, die der Optimizer für seine
Arbeit, das Erstellen von Ausführungsplänen braucht. Mit
veralteten Statistiken (z.B. die Tabelle hat seit der letzten
Analyse ein paar Millionen Datensätze mehr oder weniger)
klappt das nicht mehr.

Gruß Uwe

Hallo Uwe,

erlaube bitte eine kleine Ergänzung. Das „ANALYZE TABLE“-Statement sollte bei moderneren RDBMS-Versionen nicht benutzt werden, da wichtige Statistiken dabei nicht generiert werden. Ohne jetzt nachgeschaut zu haben: ich glaube, dass z. B. Bitmap Indexe unberücksichtigt bleiben. Von den Gimmicks in 9i oder 10g mal ganz zu schweigen.

Gruß,
Guido

man sollte seine Tabellen regelmäßig analysieren (

ANALYZE
TABLE … compute statistics | estimate staistics …

),
dabei werden Statistiken erstellt, die der Optimizer für seine
Arbeit, das Erstellen von Ausführungsplänen braucht. Mit
veralteten Statistiken (z.B. die Tabelle hat seit der letzten
Analyse ein paar Millionen Datensätze mehr oder weniger)
klappt das nicht mehr.

aha, gibt es eine Möglihkeit abzufragen ob die Statistiken veraltet sind oder sagt man einfach ‚pi mal Daumen‘ dann und dann laß ich das mal laufen wenn die User wieder über langsame Anwendungen klagen ?

erlaube bitte eine kleine Ergänzung. Das „ANALYZE
TABLE“-Statement sollte bei moderneren RDBMS-Versionen nicht
benutzt werden, da wichtige Statistiken dabei nicht generiert
werden. Ohne jetzt nachgeschaut zu haben: ich glaube, dass z.
B. Bitmap Indexe unberücksichtigt bleiben. Von den Gimmicks in
9i oder 10g mal ganz zu schweigen.

Was sollte man statt dessen bei den neueren Versionen machen ?

Hallo Chris!

aha, gibt es eine Möglihkeit abzufragen ob die Statistiken
veraltet sind oder sagt man einfach ‚pi mal Daumen‘ dann und
dann laß ich das mal laufen wenn die User wieder über langsame
Anwendungen klagen ?

Wir machen das im Batch jede Nacht (vor oder nach der Sicherung, je nach belieben). Ab 9i (oder schon bei 8i?) gibt’s auch die Möglichkeit nur out-of-date („stale“) Statistiken von Oracle feststellen zu lassen (und dann natürlich genau diese neu zu erstellen).

Was sollte man statt dessen bei den neueren Versionen machen ?

Befrage mal deine Doku zum SYS-Package DBMS_STATS.

Liebe Grüße
Martin

Hallo Martin,

Befrage mal deine Doku zum SYS-Package DBMS_STATS.

ich schau mal ob ich dementsprechende Doku besitze…

Nette Grüße

Chris