Rodzaje:
- Systemowe
- Używane przez optymalizator do estymowania koszyu pracy I/O i CPU
- Zalecane jest ich regularne generowanie
- Zbierane powinny być także podczas normalnej pracy systemu
- Optymalizacyjne
Statystyki systemowe
Przykładowy pakiet do pobierania systemowych statystyk jest paczka DBMS_STATS.GATHER_SYSTEM_STATS
DBMS_STATS.GATHER_SYSTEM_STATS(
gathering_mode VARCHAR2 DEFAULT 'NOWORKLOAD',
interval INTEGER DEFAULT NULL,
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL);
Rodzaje gathering_mode:
- NOWORKLOAD
- Przechwytywanie charakterystyki wydajności systemu
- Odpowiedni w każdej sytuacji
- Szacuje średni czas wyszukiwania odczytu i prędkość danych I/O
- INTERVAL
- Przechwytywanie aktywności systemu w określonym przedziale czasowym
- Działa w połączeniu z parametrem interval
- Tworzy i aktualizuje statystyki systemowe w tabeli lub słowniku
- START | STOP
- Aktywność systemu przechwytywana jest tylko w okreslonych momentach startu i zatrzymania
- Odświeżany jest wtedy słownik lub tabela (stattab) ze statystykami dla danego okresu pomiędzy
- Ignorowany jest parametr interval
- EXADATA
- Dobra dla dużej przepustowości I/O i duże rozmiary danych I/O
- Cechuje sie odczytami wieloblokowymi
Przykładowe obliczenie statystyk systemowych
exec dbms_stats.gather_system_stats('Start')
Odczyt statystyk z dedykowanej tabeli
select * from sys.aux_stats$
Rezultat
Statystyki optymalizacyjne
Statystyki optymalizatora - przykłady
-
ANALYZE TABLE nazwa_tabeli COMPUTE STATISTICS
- Statystyki bazodanowe
dbms_stats.gather_database_stats
- Statystyki dotyczące słowników
dbms_stats.gather_dictionary_stats
- Statystyki dotyczące schematu
dbms_stats.gather_schema_stats(ownname=>'nazwa_schematu')
- Statystyki dotyczące konkretnej tabeli
dbms_stats.gather_schema_stats(ownname=>'nazwa_schematu', tabname=>'nazwa_tabeli', cascade=>true)
- Statystyki dotyczące indexów
dbms_stats.gather_index_stats
Lokalizacja statystyk dla tabeli
Proces obliczania statystyk optymalizacyjnych
Stare statystyki
Użycie odpowiedniej komendy
ANALYZE TABLE employees COMPUTE STATISTICS
Odświeżenie i rezultat
Weryfikacja statystyk
Przykład dla tabel
select * from dba_tables
where owner='UZYTKOWNIK'
Mozna przeszukiwać następujące tabele:
- dba_tables
- dba_index
- dba_tab_statistics
- dba_tab_col_statistics
- dba_clusters
- dba_tab_partitions
- dba_ind_partitions
- dba_part_col_statistics
Historia przeliczania statystyk
select * from dba_tab_stats_history s order by s.stats_update_time desc;