Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

Statystyki indeksu

Termin Definicja
Statystyki indeksu

Statystyki indeksu opisują rozkład wartości w kolumnach objętych strukturą, wspierając wybór planu wykonania.

Jak statystyki indeksu opisują dane w tabeli

Statystyki indeksu to metadane wykorzystywane przez optymalizator zapytań do oszacowania, ile wierszy spełni określone warunki. Powstają na podstawie próby albo pełnego odczytu wartości zapisanych w kolumnie lub kolumnach objętych indeksem. Nie są kopią wszystkich rekordów tabeli. Zawierają zagregowane informacje o rozkładzie danych, między innymi liczbę różnych wartości, liczbę wierszy objętych analizą oraz informacje o częstości występowania wartości.

Jednym z istotnych elementów statystyk jest histogram. Dzieli on zakres wartości na przedziały i określa, jak wiele rekordów przypada na poszczególne części zakresu. Dzięki temu optymalizator może odróżnić kolumnę, w której wartości są rozłożone równomiernie, od kolumny, w której większość rekordów ma tę samą wartość. Dla danych tekstowych uwzględniane są wartości zgodne z regułami porównywania stosowanymi przez dany silnik, a dla liczb i dat znaczenie ma ich porządek oraz zakres.

Statystyka opisuje również relację między liczbą wszystkich wierszy a liczbą wartości unikatowych. Jeżeli kolumna zawiera milion rekordów i niemal milion różnych identyfikatorów, warunek wyszukujący jeden identyfikator może być bardzo selektywny. Jeżeli natomiast prawie wszystkie rekordy mają jedną z kilku wartości statusu, taki sam warunek może zwrócić dużą część tabeli. Ta różnica wpływa na ocenę opłacalności użycia indeksu.

Wpływ rozkładu wartości na plan wykonania

Optymalizator porównuje przewidywany koszt kilku sposobów wykonania zapytania. Może rozważyć odczyt przez indeks i późniejsze pobranie danych z tabeli, skan całego indeksu albo bezpośredni skan tabeli. Statystyki indeksu dostarczają danych potrzebnych do oszacowania liczby pasujących wierszy, ilości odczytanych stron oraz kosztu operacji sortowania, filtrowania i łączenia tabel. Sam fakt istnienia indeksu nie oznacza więc, że zostanie on użyty.

Jeżeli statystyki wskazują, że warunek zwróci niewielki ułamek tabeli, korzystny może być dostęp indeksowy. Silnik odczytuje wtedy odpowiedni zakres kluczy, a następnie pobiera wymagane rekordy. Przy warunku zwracającym dużą część danych ta metoda może powodować wiele losowych odczytów. W takiej sytuacji skan tabeli lub szerszy odczyt sekwencyjny może mieć niższy koszt, nawet gdy kolumna jest zindeksowana.

W indeksie złożonym kolejność kolumn ma znaczenie. Statystyki dla klucza składającego się na przykład z kolumn klient_id i data_zamowienia pomagają przede wszystkim przy warunkach wykorzystujących pierwszą kolumnę albo jej początkowy zakres. Sam filtr wyłącznie po drugiej kolumnie może nie pozwolić na tak precyzyjne ograniczenie odczytu. Dodatkowym problemem jest korelacja kolumn: niezależne szacowanie selektywności dwóch warunków może być niedokładne, gdy wartości tych kolumn są ze sobą powiązane.

Nieaktualne dane statystyczne i błędne oszacowania

Statystyki starzeją się, gdy tabela jest intensywnie modyfikowana. Duża liczba operacji wstawiania, aktualizacji lub usuwania może zmienić liczbę rekordów, rozkład wartości i udział wartości pustych. Szczególnie szybko dezaktualizują się statystyki tabel, do których regularnie dopisywane są dane o rosnących kluczach, na przykład dzienniki zdarzeń. Rozkład znany w chwili ostatniej aktualizacji może wtedy nie odpowiadać bieżącej zawartości.

Błędne oszacowanie liczby wierszy może prowadzić do niewłaściwego planu. Optymalizator może wybrać metodę łączenia przeznaczoną dla małych zbiorów, mimo że wynik jest duży, albo zarezerwować zbyt mało pamięci na sortowanie i agregację. Skutkiem bywają dodatkowe operacje dyskowe, dłuższy czas odpowiedzi i wzrost obciążenia procesora. W przypadku aplikacji użytkownika objawia się to między innymi powolnym wyszukiwaniem, długim otwieraniem listy plików albo opóźnionym działaniem programu.

Aktualizowanie statystyk powinno uwzględniać rzeczywistą częstotliwość zmian danych, a nie tylko sam rozmiar indeksu. Po masowym imporcie, usunięciu dużej części rekordów lub przebudowie struktury warto zweryfikować, czy silnik odświeżył informacje o rozkładzie wartości. Do oceny problemu porównuje się plan przewidywany z wykonaniem rzeczywistym, sprawdza szacowaną i faktyczną liczbę wierszy oraz analizuje, przy którym operatorze pojawia się największa rozbieżność.

Weryfikacja indeksów w używanym komputerze

Na komputerze użytkownika statystyki indeksu nie są zwykle widoczne jako osobny element systemu operacyjnego. Znajdują się w katalogach systemowych konkretnego silnika bazy danych i są wykorzystywane podczas przygotowywania planów zapytań. Diagnostyka wymaga więc dostępu do właściwej instancji, sprawdzenia definicji tabeli i indeksów oraz porównania czasu wykonania zapytań przed i po odświeżeniu metadanych. Sama defragmentacja dysku, czyszczenie plików tymczasowych lub reinstalacja aplikacji nie odbuduje statystyk bazy.

Podczas analizy warto sprawdzić, czy indeks obejmuje kolumnę używaną w filtrze, czy warunek nie zmienia jej typu przez niejawne konwersje oraz czy zapytanie nie stosuje funkcji uniemożliwiającej efektywne wykorzystanie klucza. Należy również odróżnić problem statystyk od problemu sprzętowego. Uszkodzony dysk, zbyt mała ilość pamięci operacyjnej, przegrzewanie procesora lub błędy systemu plików mogą spowalniać każdą operację, niezależnie od jakości planu wykonania.

W przypadku aplikacji bazodanowej działającej na laptopie lub komputerze PC naprawa powinna obejmować kopię konfiguracji, kontrolę integralności danych oraz bezpieczne wykonanie operacji konserwacyjnych przewidzianych przez używany silnik. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów, komputerów PC i podzespołów, a przy problemach z aplikacją może także pomóc rozdzielić objawy wynikające z wydajności sprzętu od przyczyn występujących w samej bazie danych.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę