Colectarea manuală a statisticilor de optimizare

Sfaturi din cele mai bune practici: Colectați datele statistice destul de frecvent încât tabelele să nu se deplaseze cu mai mult de 10% (aproximativ) între perioadele de colectare a statisticilor. Aceasta poate necesita colectarea manuală de statistici sau ferestre suplimentare de întreținere.

Statisticile pot fi colectate manual fie folosind Enterprise Manager, fie folosind pachetul DBMS_STATS. Statistica sistemului poate fi colectată numai atunci când se utilizează pachetul DBMS_STATS. Statisticile de sistem descriu caracteristicile hardware ale sistemului, cum ar fi I / O, performanța CPU și utilizarea, pentru optimizatorul de interogări.

Selectarea elementului de meniu Găsire statistică a optimizatorului lansează un expert care vă permite să selectați contextul, obiectele, opțiunile și programul pentru lucrarea care va colecta statisticile optimizatorului. Expertul pornește lucrarea DBMS_STATS.GATHER_ * _ în contextul pe care îl specificați: un tabel, o schemă sau o bază de date. În acest expert, setați preferințele pentru valorile implicite utilizate de pachetul DBMS_STATS și specificați o programare pentru a executa lucrarea la un moment dat.

Nu se recomandă colectarea manuală a statisticilor ca o operațiune zilnică, deoarece statisticile sunt colectate mai eficient și cu un impact mai mic asupra utilizatorilor în timpul ferestrelor de întreținere. Alocarea manuală poate fi efectuată și în cazul în care lucrarea automată a încetat să funcționeze sau a fost dezactivată.

De asemenea, puteți colecta statistici ale optimizatorilor folosind pachetul DBMS_STATS direct:

SQL> EXEC dbms_stats.gather_table_stats ("HR", "EMPLOYEES");
SQL> SELECT num_rows FROM dba_tables
2 WHERE proprietar = 'HR' și table_name = 'EMPLOYEES';
NUM_ROWS
----------
214

Rețineți că numărul de rânduri acum reflectă corect ceea ce a fost în tabel la momentul colectării statisticilor. DBMS_STATS permite, de asemenea, colectarea manuală a statisticilor pentru întreaga schemă sau chiar pentru o întreagă bază de date.

Statistica sistemului nu se modifică dacă volumul de lucru nu se schimbă semnificativ. Ca urmare, statisticile de sistem nu necesită ajustări frecvente. Procedura DBMS_STATS.GATHER_SYSTEM_STATS va colecta statistici de sistem pentru perioada specificată sau puteți începe să colectați statistici de sistem și să efectuați un alt apel pentru a opri colectarea.

Sfat de la cele mai bune practici: Utilizați următoarea comandă atunci când creați o bază de date:

SQL> EXEC dbms_stats.gather_system_stats ('NOWORKLOAD');

Opțiunea NOWORKLOAD durează câteva minute (în funcție de dimensiunea bazei de date) și primește estimări de performanță I / O, cum ar fi timpul mediu de citire și viteza de transfer I / O.