Schätzung der Indexerstellungszeit in Oracle

8

Ich habe einige Tabellen in Oracle-Umgebung, von denen ich herausgefunden habe, dass sie von neuen Indizes profitieren könnten. Da es sich jedoch um große Tabellen handelt, die von 1M-Registern bis zu 300M-Registern reichen, würde ich zunächst versuchen, abzuschätzen, wie viel Zeit für die Indexerstellung benötigt wird. Ich würde also mindestens die Größenordnung wissen (Stunden , Tage, Wochen)?

Gibt es eine Heuristik / Orakelfunktion / Faustregel, die mir helfen könnte, dieses Problem zu lösen?

    
kurast 18.06.2010, 17:43
quelle

2 Antworten

7

Es gibt wirklich zu viele Faktoren, die berücksichtigt werden müssen, wie z. B. Maschinengeschwindigkeit, Speicher usw., die die Erstellungszeit beeinflussen könnten. Außerdem könnte die Art der Daten selbst einen wesentlichen Einfluss auf die Erstellungszeit haben.

Was ich tun würde, ist einen der größeren Tabellen auszuwählen, einen Index darüber zu erstellen und zu sehen, wie lange es dauert. Dann nehmen Sie sich die Zeit und teilen Sie durch die Anzahl der Zeilen in der Tabelle und das sollte Ihnen eine grobe Metrik für das, was zu erwarten ist. Beachten Sie noch einmal, dies wird nicht genau sein, aber es ist nur eine Faustregel, die Sie verwenden könnten. Es wird sehr viel variieren, weil einige Tabellen mehr Spalten, weniger Spaltenwerte usw. haben, aber es ist ein Anfangspunkt.

%Vor%     
dcp 18.06.2010, 17:51
quelle
5

Oracle kann die Indexerstellungszeit und die Indexgröße mit dem Befehl EXPLAIN PLAN schätzen:

Beispielschema

%Vor%

Ergebnisse

%Vor%

Hinweise

Die tatsächliche Erstellungszeit auf meinem System betrug 2,5 Sekunden, verglichen mit der Schätzung von 10 Sekunden. Aber das ist immer noch gut genug, wenn Sie nur nach einer Größenordnung suchen. Die Genauigkeit hängt von genauen Tabellenstatistiken sowie einer guten Systemstatistik ab . (Aber seien Sie vorsichtig, bevor Sie Systemstatistiken sammeln, dies kann viele Ausführungspläne beeinflussen!) Sie können sich weiter mit den Einstellungen beschäftigen, indem Sie sys.aux_stats$ manuell ändern. Das ist eine der wenigen SYS-Tabellen, die Sie ändern können, obwohl Sie trotzdem vorsichtig sein müssen.

    
Jon Heller 18.06.2015 19:30
quelle

Tags und Links