| Termin | Definicja |
|---|---|
| Statystyki kolumn | Statystyki kolumn opisują rozkład wartości w danej kolumnie, wykorzystywane przez optymalizator zapytań. Co opisują statystyki kolumnStatystyki kolumn to pomocnicze informacje o rozkładzie wartości zapisanych w konkretnej kolumnie tabeli. Mogą obejmować między innymi liczbę wierszy, liczbę wartości pustych, liczbę różnych wartości, wartość minimalną i maksymalną oraz dane potrzebne do oszacowania częstości występowania poszczególnych zakresów. Nie są kopią całej kolumny ani pełnym indeksem. Ich zadaniem jest dostarczenie optymalizatorowi zapytań skróconego obrazu danych, na podstawie którego może on przewidywać rozmiar wyników po zastosowaniu warunków filtrowania. Rozkład wartości ma bezpośredni wpływ na ocenę selektywności predykatu. Warunek wyszukujący jeden konkretny identyfikator w kolumnie zawierającej głównie unikalne wartości może zwrócić niewiele wierszy. Ten sam warunek zastosowany do kolumny, w której występują tylko dwie wartości statusu, może pasować do dużej części tabeli. Statystyki pozwalają rozróżnić te sytuacje bez odczytywania wszystkich rekordów podczas każdego przygotowania lub wykonywania zapytania. Histogram i selektywność warunkówJednym ze sposobów przedstawiania rozkładu jest histogram, czyli podział zakresu wartości na przedziały wraz z informacją o liczbie lub udziale rekordów przypadających na dany przedział. Dzięki temu optymalizator może oszacować, ile wierszy spełni warunek zakresowy, taki jak porównanie daty, ceny albo numeru. Histogram jest szczególnie użyteczny wtedy, gdy wartości nie rozkładają się równomiernie, lecz tworzą skupiska, luki albo mają kilka bardzo często występujących wartości. Na podstawie statystyk optymalizator porównuje przewidywany koszt różnych sposobów wykonania zapytania. Jeżeli filtr powinien zwrócić małą liczbę rekordów, korzystne może być użycie indeksu i późniejsze pobranie wybranych wierszy z tabeli. Gdy warunek obejmuje znaczną część danych, odczyt większych fragmentów tabeli może wymagać mniej operacji niż wielokrotne sięganie do indeksu. Statystyki nie wykonują zapytania i nie przyspieszają go samodzielnie; wpływają na wybór planu wykonania. Aktualność danych a wybór planu wykonaniaStatystyki opisują stan danych z chwili ich utworzenia albo ostatniej aktualizacji. Po masowych wstawieniach, usunięciach lub zmianach wartości rozkład może się istotnie zmienić. Wtedy wcześniejsze informacje mogą wskazywać inną selektywność niż ta, która występuje w tabeli. Optymalizator może w konsekwencji wybrać plan przeznaczony dla małego zbioru wynikowego, mimo że zapytanie zwraca wiele wierszy, albo odwrotnie. Ocena problemu wymaga porównania przewidywanej liczby wierszy z rzeczywistą liczbą rekordów przetwarzanych przez kolejne operatory planu. Duża rozbieżność może wskazywać na nieaktualne statystyki, silną nierównomierność danych, zależność między kolumnami albo predykat trudny do oszacowania. Sam fakt istnienia statystyk nie gwarantuje poprawnego planu. Znaczenie ma ich zakres, moment odświeżenia oraz zgodność z kolumnami używanymi w filtrach, złączeniach i sortowaniu. Rola statystyk w praktycznej diagnostycePodczas analizy wolnego zapytania warto sprawdzić, czy plan wykonania opiera się na informacjach odpowiadających aktualnej zawartości tabel. Należy zwrócić uwagę na kolumny użyte w warunkach, liczność tabeli, udział wartości pustych, liczbę wartości unikalnych oraz zmiany danych od czasu ostatniego zebrania statystyk. Przydatne jest także przeanalizowanie, czy filtr obejmuje pojedynczą wartość, przedział, wiele wartości, czy wyrażenie przekształcające kolumnę, ponieważ różne predykaty dostarczają optymalizatorowi różnego poziomu informacji. Statystyki kolumn są elementem wewnętrznego mechanizmu optymalizacji baz danych, dlatego ich diagnostyka dotyczy przede wszystkim jakości planów zapytań i spójności metadanych z rzeczywistym rozkładem rekordów. W środowisku naprawy komputera lub laptopa problem może ujawnić się pośrednio, na przykład jako długie oczekiwanie aplikacji na odpowiedź bazy, wysokie użycie procesora albo intensywne operacje dyskowe. Rozróżnienie między błędem sprzętowym, problemem sieciowym a nieefektywnym planem zapytania wymaga jednak osobnej analizy logów, obciążenia oraz planu wykonania. |