Statystyki

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

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
statystyki

Proces obliczania statystyk optymalizacyjnych
Stare statystyki
statystyki
Użycie odpowiedniej komendy

ANALYZE TABLE employees COMPUTE STATISTICS

Odświeżenie i rezultat
statystyki

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;

Tags: