| Termin | Definicja |
|---|---|
| Nieaktualne statystyki | Nieaktualne statystyki prowadzą do błędnych szacunków optymalizatora i wyboru nieefektywnego planu wykonania. Jak nieaktualne statystyki wpływają na plan wykonaniaNieaktualne statystyki to informacje o danych, które nie odzwierciedlają już rzeczywistego rozkładu wartości, liczby rekordów albo stopnia zapełnienia struktur indeksowych. Optymalizator zapytań wykorzystuje takie informacje do oszacowania liczby wierszy zwracanych przez poszczególne operatory. Na tej podstawie wybiera między innymi kolejność łączenia tabel, sposób filtrowania rekordów, użycie indeksu oraz metodę sortowania. Jeżeli oszacowanie jest błędne, wybrany plan wykonania może wymagać znacznie większej liczby operacji wejścia-wyjścia lub obliczeń niż plan dostosowany do aktualnego stanu danych. Problem nie polega wyłącznie na tym, że tabela zawiera więcej rekordów niż w chwili zebrania statystyk. Istotna jest także zmiana rozkładu danych. Przykładowo, po masowym imporcie jedna wartość może występować w większości wierszy, mimo że wcześniej była rzadka. Histogram wartości, współczynnik selektywności predykatu albo informacja o liczbie wartości unikatowych może wtedy prowadzić do nieprawidłowej oceny wyniku. Optymalizator może wybrać odczyt indeksowy dla zapytania, które w praktyce zwraca dużą część tabeli, albo skan całej tabeli tam, gdzie aktualny indeks pozwoliłby szybko odnaleźć niewielką grupę rekordów. Zmiany danych, które powodują dezaktualizację obrazuStatystyki tracą wiarygodność po operacjach zmieniających dużą liczbę wierszy, takich jak masowe wstawianie, usuwanie, aktualizacja kolumn używanych w filtrach oraz okresowe archiwizowanie danych. Szczególne znaczenie ma tak zwany dryf danych, czyli sytuacja, w której nowe rekordy mają inny charakter niż starsza zawartość tabeli. W tabeli zamówień może zmienić się udział poszczególnych statusów, w rejestrze zdarzeń może pojawić się nowa dominująca kategoria, a w danych pomiarowych zakres wartości może przesunąć się poza zakres uwzględniony podczas poprzedniej analizy. Nieaktualność może dotyczyć całej tabeli albo tylko wybranych kolumn i indeksów. Statystyka utworzona przed zmianą zawartości nie opisuje automatycznie nowych zależności między kolumnami. Błędne oszacowanie staje się bardziej prawdopodobne, gdy predykaty obejmują kilka kolumn, których wartości są ze sobą powiązane, na przykład województwo i kod pocztowy. Niezależne traktowanie takich warunków może dać wynik znacząco różny od rzeczywistej liczby pasujących wierszy. W konsekwencji niewłaściwa decyzja na jednym operatorze może przenieść błąd na kolejne etapy planu i powiększyć przewidywany koszt całego zapytania. Objawy widoczne podczas analizy zapytaniaTypowym sygnałem problemu jest duża różnica między estymowaną a rzeczywistą liczbą wierszy przetwarzanych przez operator planu. Jeżeli plan zakłada kilka rekordów, a operator otrzymuje ich setki tysięcy, optymalizator mógł przecenić selektywność warunku. Odwrotna sytuacja również jest istotna: założenie bardzo dużego wyniku przy rzeczywiście małej liczbie wierszy może skłonić do użycia cięższego mechanizmu łączenia lub przydzielenia nadmiernych zasobów na sortowanie. W planie wykonania należy porównywać wartości szacowane z rzeczywistymi na kolejnych operatorach, a nie tylko oceniać czas końcowy zapytania. Skutki mogą obejmować wzrost czasu odpowiedzi, większe zużycie pamięci, nadmiarowe odczyty dyskowe i tworzenie obiektów tymczasowych. Przy złym oszacowaniu liczby wierszy algorytm łączenia wybrany dla małego zbioru może okazać się niekorzystny dla dużego zbioru. Z kolei plan przeznaczony dla dużej liczby rekordów może mieć niepotrzebny narzut przy małym wyniku. Diagnostyka powinna uwzględniać także moment ostatniej aktualizacji statystyk, zakres zmian w tabeli, rozkład wartości oraz to, czy plan został zapisany lub ponownie użyty po zmianie danych. Sama obecność indeksu nie gwarantuje właściwego planu, jeżeli informacje służące do oceny jego przydatności są przestarzałe. Przywracanie wiarygodności statystykPodstawowym działaniem jest ponowne zebranie statystyk dla tabeli, kolumn lub indeksów, których zawartość uległa istotnej zmianie. Zakres operacji powinien wynikać z pomiarów: warto sprawdzić, które tabele są intensywnie modyfikowane i dla których zapytań występują największe rozbieżności między estymacją a wykonaniem. Aktualizacja nie powinna być traktowana jako jednorazowa naprawa bez kontroli efektu. Po jej wykonaniu należy ponownie przeanalizować plan, porównać liczby wierszy oraz sprawdzić, czy zmiana nie pogorszyła innych zapytań korzystających z tych samych struktur. W środowisku komputerowym problem może pojawić się także po migracji danych, odtworzeniu kopii, dużej synchronizacji albo przywróceniu aplikacji po dłuższej przerwie. W takich przypadkach diagnostyka powinna objąć relację między wielkością tabel, indeksami, częstotliwością modyfikacji i zapytaniami generowanymi przez aplikację. Warszawskie Pogotowie Komputerowe wykonuje profesjonalną diagnostykę i naprawę laptopów, komputerów PC oraz ich podzespołów, a przy analizie problemów z oprogramowaniem można oddzielić usterkę sprzętową od nieprawidłowego działania warstwy bazodanowej. Kluczowe pozostaje potwierdzenie przyczyny w planie wykonania i danych pomiarowych, zamiast przypisywania każdej wolnej operacji wyłącznie nieaktualnym statystykom. |