| Termin | Definicja |
|---|---|
| Top Resource Consuming Queries | Top Resource Consuming Queries to zestawienie zapytań zużywających najwięcej zasobów instancji. Top Resource Consuming Queries — czym jest to zestawienieTop Resource Consuming Queries to raport pokazujący, które zapytania najbardziej obciążają zasoby systemu bazodanowego. Nie chodzi wyłącznie o liczbę wykonanych operacji, lecz o łączny wpływ zapytań na procesor, pamięć, nośnik danych oraz czas zajęcia mechanizmów odpowiedzialnych za odczyt i zapis. Dzięki takiemu zestawieniu można ustalić, które instrukcje SQL pochłaniają największą część dostępnej mocy i przez to wpływają na działanie aplikacji. Wynik raportu może być uporządkowany według całkowitego czasu wykonania, średniego czasu pojedynczej operacji, liczby odczytanych bloków, ilości zapisanych danych, liczby uruchomień albo czasu pracy procesora. Każde z tych kryteriów pokazuje inny rodzaj obciążenia. Zapytanie uruchamiane tysiące razy może mieć niewielki koszt jednostkowy, ale w skali całego dnia powodować większe zużycie zasobów niż pojedyncza, ciężka operacja wykonywana sporadycznie. Analiza Top Resource Consuming Queries nie służy tylko do wskazania jednego winowajcy. Jest punktem wyjścia do sprawdzenia planu wykonania, indeksów, struktury tabel, filtrów, sposobu łączenia danych oraz zachowania aplikacji wysyłającej zapytania. Raport powinien być odczytywany w odniesieniu do czasu, którego dotyczy, ponieważ lista najbardziej kosztownych operacji może zmieniać się w zależności od pory dnia, liczby użytkowników i rodzaju przetwarzanych danych. Top Resource Consuming Queries a kontekst techniczny i porównaniaNajbardziej obciążające zapytanie nie zawsze jest zapytaniem napisanym niepoprawnie. W wielu przypadkach duży koszt wynika z prawidłowej pracy na dużym zbiorze danych, na przykład podczas generowania zestawienia, wyszukiwania historii zamówień albo przeliczania podsumowań. Istotne jest więc porównanie kosztu zapytania z jego przeznaczeniem. Operacja raportowa może naturalnie wymagać większej liczby odczytów niż proste pobranie jednego rekordu, ale nie powinna bez potrzeby blokować innych działań. W praktyce należy rozróżnić kilka perspektyw. Całkowity czas zużyty przez daną instrukcję pokazuje jej łączny udział w obciążeniu. Średni czas wykonania pomaga ocenić, czy pojedyncze uruchomienie jest powolne. Liczba wykonań wskazuje, czy problem wynika z nadmiernej częstotliwości. Odczyty logiczne i fizyczne pomagają ustalić, czy system przegląda zbyt dużo danych w pamięci lub musi często sięgać do nośnika. Z kolei czas procesora może wskazywać na kosztowne sortowanie, grupowanie, obliczenia albo przetwarzanie dużej liczby wierszy. Przy porównywaniu wyników należy zachować tę samą metodę pomiaru. Inaczej można błędnie uznać za najcięższe zapytanie to, które było uruchamiane częściej, chociaż jego pojedyncze wykonanie jest szybkie. Warto również zestawić dane z monitoringu z planem wykonania. Plan może ujawnić pełne skanowanie tabeli, brak użycia dostępnego indeksu, niekorzystną kolejność łączenia tabel lub operację sortowania wykonywaną na większym zbiorze niż zakładano. Zmiana struktury zapytania nie zawsze przynosi poprawę. Czasem większy efekt daje ograniczenie liczby zwracanych kolumn, wcześniejsze zastosowanie warunku, usunięcie niepotrzebnego łączenia lub dopasowanie indeksu do najczęściej używanych filtrów. Każda modyfikacja powinna być sprawdzana na danych zbliżonych do rzeczywistych, ponieważ mały zbiór testowy może ukrywać problem widoczny dopiero przy większej liczbie rekordów. Top Resource Consuming Queries — typowe problemy wykrywane w raporcieJednym z częstych problemów jest pobieranie większej ilości danych, niż jest potrzebna użytkownikowi. Zapytanie może zwracać wszystkie kolumny i wiele tysięcy wierszy, mimo że ekran wykorzystuje tylko kilka pól oraz pierwszą stronę wyników. Taka konstrukcja zwiększa ilość odczytów, zajętość pamięci i czas przesyłania danych. Pomocne bywa jawne wskazanie wymaganych kolumn, wprowadzenie ograniczenia wyników oraz zastosowanie poprawnej paginacji. Innym źródłem obciążenia jest brak odpowiedniego indeksu. Wtedy mechanizm odczytu może analizować dużą część tabeli, aby znaleźć niewielką liczbę pasujących rekordów. Podobny skutek może wystąpić, gdy warunek uniemożliwia wykorzystanie indeksu, na przykład przez przekształcenie wartości w funkcji, niezgodny typ danych albo operację na całej kolumnie. Nie oznacza to, że każdy indeks należy dodawać automatycznie. Nadmiar indeksów zwiększa koszt zapisu i może pogorszyć utrzymanie danych. Wysokie miejsce w Top Resource Consuming Queries może zajmować także zapytanie wykonywane w pętli aplikacji. Pojedyncza operacja jest wtedy lekka, lecz powtarza się dla każdego elementu listy. Taki wzorzec zwiększa liczbę połączeń i odczytów oraz może zostać zastąpiony jednym zapytaniem zbiorczym. Należy przy tym zweryfikować, czy rozwiązanie zbiorcze nie powoduje zwrócenia zbyt dużej ilości danych. Problemy mogą wynikać również z nieaktualnych statystyk, nierównomiernego rozkładu wartości, blokad lub konkurencji między odczytem i zapisem. Raport wskazuje wtedy objaw, ale nie zawsze podaje przyczynę. Konieczne może być przeanalizowanie planu wykonania w kilku momentach, obserwacja oczekiwań oraz porównanie zachowania zapytania przy różnych parametrach. Bez tego łatwo skupić się na samej instrukcji, mimo że opóźnienie powstaje w otoczeniu procesu. Top Resource Consuming Queries — praktyczne wskazówki analitycznePrzed rozpoczęciem zmian warto ustalić zakres obserwacji: konkretną godzinę, dzień, okres wzmożonego ruchu albo moment wystąpienia spowolnienia. Następnie dobrze jest zapisać identyfikator zapytania, liczbę wykonań, średni i łączny czas, zużycie procesora oraz liczbę odczytów. Tak przygotowany materiał pozwala odróżnić stały problem od chwilowego skoku obciążenia. Przydatne jest utworzenie krótkiej listy priorytetów. Na początku powinny znaleźć się zapytania, które łączą wysoki koszt jednostkowy z dużą częstotliwością, a także operacje wpływające na wiele innych działań. Następnie można sprawdzić zapytania rzadkie, lecz wyjątkowo ciężkie, oraz takie, które generują duży ruch danych. Priorytet nie powinien zależeć wyłącznie od pierwszej pozycji w raporcie. Znaczenie ma wpływ na użytkowników, powtarzalność zjawiska i ryzyko uboczne proponowanej zmiany. Każdą poprawkę należy testować osobno. Po zmianie indeksu, warunku lub sposobu pobierania danych trzeba ponownie zmierzyć czas, liczbę odczytów i zużycie procesora. Warto też sprawdzić działanie zapisu, aktualizacji oraz innych zapytań korzystających z tych samych tabel. Poprawa jednego przypadku nie powinna prowadzić do wyraźnego pogorszenia pozostałych operacji. Gdy analiza dotyczy komputera używanego do pracy z bazą danych, przydatne jest zebranie informacji o obciążeniu procesora, pamięci, temperaturach, stanie nośnika i stabilności połączenia. Czasem źródło opóźnień znajduje się poza samą bazą, na przykład w niewystarczającej ilości pamięci, problemach z dyskiem, sterownikach albo konfiguracji systemu. W takiej sytuacji uporządkowanie danych z raportu Top Resource Consuming Queries ułatwia dalszą diagnostykę sprzętową i programową. Top Resource Consuming Queries — kiedy zgłosić się do serwisuDo serwisu warto zgłosić się wtedy, gdy raport regularnie wskazuje te same kosztowne zapytania, a samodzielna zmiana konfiguracji nie przynosi trwałej poprawy. Pomoc może być potrzebna również wtedy, gdy komputer zwalnia podczas pracy z bazą danych, pojawiają się długie przerwy w działaniu aplikacji, system przestaje odpowiadać albo odczyt i zapis danych powodują nietypowe obciążenie urządzenia. Przed przekazaniem sprzętu dobrze zachować opis objawu, przybliżony czas jego występowania oraz dostępne wyniki monitoringu. Warszawskie Pogotowie Komputerowe 24/7 może zostać wybrane do oceny komputera, na którym występują problemy z wydajnością, stabilnością lub współpracą aplikacji z bazą danych. Analiza powinna obejmować rozdzielenie przyczyn programowych od sprzętowych, ocenę podstawowych parametrów urządzenia oraz wskazanie działań, które można wykonać bez ryzyka utraty danych. Szczególnej ostrożności wymaga sytuacja, w której spowolnieniu towarzyszą błędy odczytu, nietypowe dźwięki nośnika, samoczynne restarty albo problemy z uruchamianiem systemu. Nie zaleca się usuwania indeksów, czyszczenia danych ani modyfikowania tabel wyłącznie na podstawie pojedynczego zestawienia. Top Resource Consuming Queries wskazuje obszar wymagający sprawdzenia, lecz prawidłowa decyzja powinna uwzględniać plan wykonania, sposób użycia aplikacji, aktualność kopii zapasowej i wpływ zmiany na pozostałe operacje. Takie podejście pozwala ograniczyć ryzyko oraz szybciej ustalić, czy źródłem problemu jest zapytanie, konfiguracja, system operacyjny czy sam komputer. |