[ Pobierz całość w formacie PDF ]
.Po pierwsze - mo¿na analizowaæ tabele (nie indeksy) równolegle.Po drugie -mo¿na analizowaæ tylko te tabele i zwi¹zane z nimi indeksy, w przypadku którychzawartoœæ ponad 10% wszystkich wierszy zosta³a zmodyfikowana za pomoc¹ poleceñINSERT, UPDATE lub DELETE.W celu przeprowadzenia równoleg³ej analizy tabel danego schematu u¿ytkownika,nale¿y wydaæ nastêpuj¹ce polecenie:EXECUTE SYS.DBMS_STATS.GATHER_SCHEMA_STATS(OWNNAME=> 'HROA', ESTIMATE_PERCENT=>10,DEGREE=>4, CASCADE=> TRUEPolecenie to powoduje oszacowanie statystyk dla schematu u¿ytkownika HROA.Wartoœæ DEGREE okreœla u¿ywany poziom równoleg³oœci.Wartoœæ CASCADE=>TRUEpowoduje, ¿e analizie podlegaj¹ tak¿e indeksy ka¿dej z tabel.WartoœæDBMS_STATS posiada opcjê GATHER STALE, która pozwala na analizê tylko tychtabel, w których zmianie uleg³o ponad 10% wierszy.W celu jej u¿ycia nale¿ynajpierw w³¹czyæ monitorowanie wybranych tabel.Na przyk³ad:ALTER TABLE winners MONITORING;Mo¿na zapoznaæ siê z informacjami na temat liczby zmian w danej tabeli poprzezu¿ycie zapytania wzglêdem perspektywy USER_TAB_ MODIFICATIONS.Sprawdzeniatego, czy monitorowanie dla danej tabeli zosta³o w³¹czone, dokonuje siê poprzezodczyt wartoœci kolumny MONITORING w perspektywie USER_TABLES.Przy w³¹czonym monitorowaniu mo¿na uruchomiæ GATHER_SCHEMA_ STATS u¿ywaj¹copcji GATHER STALE:EXECUTE SYS.DBMS_STATS.GATHER_SCHEMA_STATS (OWNNAME=> 'HROA',ESTIMATE_PERCENT=>10, DEGREE=>4, CASCADE=>TRUEOPTIONS=>'GATHER STALE');Poniewa¿ okreœlono GATHER STALE, tabela bêdzie analizowana tylko, gdy odpoprzedniej analizy zmieni siê ponad 10% jej wierszy.Kopiowanie statystykprzy u¿yciu pakietu DBMS_STATSPakiet DBMS_STATS daje mo¿liwoœæ kopiowania statystyk z jednego schematu dodrugiego lub z jednej bazy danych do drugiej przy zastosowaniu poni¿szejprocedury.Krok 1.Utworzenie tabeli s³u¿¹cej do przechowania statystyk, jeœli jeszczetaka nie istnieje:EXECUTE SYS.DBMS_STATS.CREATE_STATS_TABLE (OWNNAME=>'HROA',STATTAB=>'HROA_STAT_TABLE');Krok 2.Zape³nienie tabeli statystykami ze schematu, z którego nastêpujekopiowanie:EXECUTE SYS.DBMS_STATS.EXPORT_SCHEMA_STATS (OWNNAME=> 'HROA', STATTAB=>'HROA_STAT_TABLE',STAT_ID=> 'HROA_21SEP_2001');Krok 3.Jeœli statystyki s¹ kopiowane do innej bazy danych (na przyk³ad z bazyprodukcyjnej do rozwojowej), wymagany jest eksport oraz import tabelistatystyk:exp hrpa/secret@prod file=stats tabels=hroa_stat_tableimp hrpa/secret@dev file=stats tabels=hroa_stat_tableKrok 4.Wstawienie statystyk do docelowego s³ownika danych schematu.Wprzyk³adzie poni¿szym statystyki s¹ ³adowane do schematu HROA_TEST z tabeli onazwie HROA_STAT_TABLE:EXECUTE SYS.DBMS_STATS.IMPORT_SCHEMA_STATS (OWNNAME=> 'HROA_TEST',STATTAB=>'HROA_STAT_TABLE', STAT_ID=> 'HROA_21SEP_2001', STATOWN=>'HROA');Manipulowanie statystykami przy u¿yciu pakietu DBMS_STATSCzêsto u¿ytkownik chce okreœliæ, czy optymalizator kosztowy u¿yje tego samegoplanu wykonania w bazie produkcyjnej, jakiego u¿ywa w bazie rozwojowej itestowej.Mo¿na tego dokonaæ u¿ywaj¹c DBMS_ STATS.SET_TABLE_STATS w celuzmodyfikowania statystyk dla tabeli w œrodowisku rozwojowym lub testowym tak,aby odpowiada³y œrodowisku produkcyjnemu.Optymalizator korzysta z liczbywierszy, liczby bloków i liczby ró¿nych wartoœci w kolumnach w celu okreœleniatego, czy u¿yty powinien zostaæ indeks, czy nale¿y zastosowaæ przegl¹d ca³ejtabeli.W poni¿szym przyk³adzie zak³ada siê, ¿e tabela WINNERS z bazy produkcyjnejzawiera l000000 wierszy w 6 000 bloków:EXECUTE SYS.DBMS_STATS.SET_TABLE_STATS (OWNNAME=> 'HROA_DEV,TABNAME=>'WINNERS', NUMROWS=>1000000, NUMBLKS=>6000);Bez wzglêdu na to, jak wiele wierszy faktycznie istnieje w bazie testowej,optymalizator kosztowy bêdzie dzia³a³ tak, jakby istnia³o ich l000000.Optymalizator korzysta tak¿e w celu podjêcia decyzji o u¿yciu indeksu z liczbyró¿nych wartoœci w ka¿dej z kolumn.Jeœli liczba ró¿nych wartoœci jest mniejszani¿ 10% liczby wszystkich wierszy tabeli, optymalizatordecyduje siê zazwyczaj na przeprowadzenie przegl¹du ca³ej tabeli w miejsceu¿ycia indeksu.Zmiany odsetka liczby ró¿nych wartoœci dla danej kolumnydokonuje siê w nastêpuj¹cy sposób:EXECUTE SYS.DBMS_STATS.SET_COLUMN_STATS (OWNNAME=> 'F70PSOFT',TABNAME=>'PS_LED+AUTH_TBL',COLNAME=>'OPRID', DISTCNT=>971);Przywracanie poprzedniej wersji statystykZazwyczaj ponowna analiza schematu i okreœlenie wysokiej liczby odsetka wierszydla rozmiaru testowego zwiêksza wydajnoœæ.Niestety, czasem wyst¹piæ mo¿esytuacja odwrotna.Czasem nowe statystyki powoduj¹ okreœlenie o wiele gorszegoplanu wykonania, ni¿ mia³o to miejsce wczeœniej.Mo¿na unikn¹æ ryzyka wiêkszychproblemów wykorzystuj¹c pakiet DBMS_STATS do sporz¹dzenia kopii bie¿¹cychstatystyk tak, by w razie koniecznoœci mo¿na je by³o póŸniej przywróciæ.Wymagato wykonania nastêpuj¹cych dzia³añ.Krok 1.Nale¿y wyeksportowaæ statystyki schematu do tabeli statystyk.Jeœlitabela ta jeszcze nie istnieje, nale¿y j¹ utworzyæ za pomoc¹ proceduryDBMS_STATS.CREATE_STATS_TABLE.Eksportowanie wykonuje siê w sposóbnastêpuj¹cy:EXECUTE SYS.DBMS_STATS.EXPORT_SCHEMA_.STATS(OWNNAME=> 'HROA', STATTAB=>'HROA_STAT_TABLE',STATID=> 'PRE_21SEP_2001');Krok 2.Nale¿y utworzyæ nowe statystyki:EXECUTE SYS
[ Pobierz całość w formacie PDF ]