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

Fixing Plan Regression

Termin Definicja
Fixing Plan Regression

Fixing Plan Regression to proces korygowania niekorzystnej zmiany planu wykonania zapytania, pogarszającej jego wydajność.

Na czym polega regresja planu wykonania zapytania

Fixing Plan Regression oznacza usuwanie regresji planu wykonania zapytania, czyli sytuacji, w której optymalizator wybiera nowy plan o gorszej wydajności niż plan używany wcześniej. Samo zapytanie może pozostać bez zmian, a wynik nadal może być poprawny, lecz czas wykonania, liczba odczytów dyskowych albo zużycie procesora wyraźnie wzrastają. Plan wykonania opisuje sposób realizacji zapytania: kolejność operacji, metody łączenia tabel, dostęp do indeksów, filtrowanie rekordów, sortowanie oraz agregowanie danych.

Regresja nie oznacza automatycznie błędu składniowego ani uszkodzenia bazy danych. Jest skutkiem decyzji optymalizatora podjętej na podstawie dostępnych informacji i ustawień. Dla tego samego zapytania raz może zostać wybrany dostęp przez indeks, a innym razem skan większego obszaru tabeli. Przy łączeniu tabel optymalizator może zastosować zagnieżdżone pętle, łączenie haszujące albo łączenie sortująco-scalające. Każda metoda może być właściwa dla innego rozmiaru zbioru wynikowego, dlatego zmiana planu staje się problemem dopiero wtedy, gdy prowadzi do mierzalnego pogorszenia działania.

Jak rozpoznać, że zmiana planu jest rzeczywistą regresją

Analizę rozpoczyna się od porównania planu wcześniejszego z planem aktualnym dla tego samego zapytania i porównywalnych parametrów wejściowych. Istotne są nie tylko deklarowane koszty, lecz także rzeczywisty czas wykonania, czas procesora, liczba odczytanych stron lub wierszy, operacje zapisu tymczasowego oraz oczekiwanie na blokady albo zasoby wejścia-wyjścia. Warto sprawdzić, czy pogorszenie występuje stale, czy tylko dla określonych wartości parametrów. Plan może być szybki dla małego zakresu danych, ale bardzo wolny dla zakresu obejmującego dużą część tabeli.

Ważnym sygnałem jest różnica między estymowaną a rzeczywistą liczbą wierszy przekazywanych między operatorami planu. Duże rozbieżności wskazują na błędną ocenę selektywności predykatów, nieaktualne statystyki, nierównomierny rozkład wartości albo zależność pomiędzy kolumnami, której optymalizator nie uwzględnił. Należy również sprawdzić zmianę definicji indeksów, rozmiaru tabel, statystyk, konfiguracji optymalizatora, parametrów sesji oraz wersji silnika. Bez takiego porównania łatwo pomylić regresję planu z chwilowym przeciążeniem systemu, blokadą lub problemem z pamięcią.

Typowe źródła pogorszenia planu

Jedną z częstych przyczyn jest zmiana statystyk opisujących rozkład danych. Po dużym przyroście lub usunięciu rekordów dotychczasowe informacje mogą przestać odzwierciedlać rzeczywistą zawartość tabel. Optymalizator może wtedy uznać, że predykat zwróci niewiele wierszy, choć w praktyce zwraca ich bardzo dużo. W rezultacie wybiera operację dobrą dla małego zbioru, ale nieefektywną dla większego. Odwrotna sytuacja również jest możliwa: skan tabeli zostaje wybrany dla zapytania, które powinno korzystać z selektywnego indeksu.

Regresję mogą powodować także zmiany parametrów, rozmiaru danych i konkurencji o zasoby. Zapytania parametryzowane bywają wrażliwe na wartość, na podstawie której utworzono plan przechowywany w pamięci podręcznej. Problem może wystąpić również po dodaniu lub usunięciu indeksu, zmianie typu danych, modyfikacji predykatu albo aktualizacji silnika, która zmienia reguły optymalizacji. Niekiedy plan jest formalnie poprawny, lecz korzysta z kosztownej operacji sortowania, materializacji wyniku pośredniego lub wielokrotnego odczytu tych samych danych. Trzeba wtedy odróżnić przyczynę pierwotną od objawu, na przykład wzrostu czasu oczekiwania na dysk.

Metody przywrócenia wydajności zapytania

Naprawa powinna wynikać z porównania planów i pomiarów, a nie z automatycznego wymuszania dowolnego rozwiązania. Jeżeli wcześniejszy plan był prawidłowy dla aktualnego obciążenia, silnik może oferować mechanizm jego wymuszenia, bazę planów lub inną formę stabilizacji wyboru optymalizatora. Takie działanie ogranicza skutki regresji, ale nie usuwa jej przyczyny. Wymuszony plan może przestać być korzystny po zmianie wielkości tabel, rozkładu danych lub parametrów zapytań, dlatego powinien być obserwowany i okresowo ponownie oceniany.

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