| Termin | Definicja |
|---|---|
| Diagnostyka zapytań | Diagnostyka zapytań to proces analizy przyczyn nieprawidłowego działania lub niskiej wydajności poleceń SQL. Od objawu do przyczyny: jak przebiega diagnostyka zapytańDiagnostyka zapytań polega na ustaleniu, dlaczego polecenie SQL zwraca nieprawidłowe dane, wykonuje się zbyt długo albo zużywa nadmierną ilość zasobów. Analiza zaczyna się od odtworzenia problemu i zebrania konkretnego przykładu zapytania, parametrów wejściowych, czasu wykonania, liczby zwróconych wierszy oraz komunikatu błędu. Sam fakt, że zapytanie jest wolne, nie wskazuje jeszcze przyczyny. Opóźnienie może wynikać z planu wykonania, blokady, braku indeksu, dużej liczby odczytywanych rekordów, oczekiwania na dysk lub przeciążenia serwera. Ważne jest rozdzielenie błędu składni od błędu logicznego i problemu wydajnościowego. Błąd składni uniemożliwia wykonanie polecenia, na przykład przez niepoprawną nazwę słowa kluczowego lub brak nawiasu. Błąd logiczny pozwala wykonać zapytanie, ale zwraca niewłaściwy wynik, ponieważ zastosowano nieprawidłowy warunek, relację tabel albo sposób grupowania danych. Problem wydajnościowy może wystąpić nawet wtedy, gdy wynik jest poprawny. W praktyce te trzy kategorie wymagają innych metod sprawdzania. Plan wykonania, indeksy i liczba odczytywanych danychJednym z podstawowych narzędzi jest plan wykonania zapytania. Pokazuje on operacje wykonywane przez silnik, między innymi skanowanie tabeli, wyszukiwanie po indeksie, sortowanie, grupowanie oraz łączenie tabel. Plan może również zawierać szacowaną i rzeczywistą liczbę wierszy, przewidywany koszt poszczególnych operatorów oraz sposób przekazywania danych między nimi. Istotna rozbieżność między liczbą wierszy oszacowaną a rzeczywiście przetworzoną może oznaczać nieaktualne statystyki albo nietypowy rozkład wartości w kolumnie. Podczas analizy sprawdza się, czy warunki filtrowania mogą korzystać z istniejących indeksów. Skanowanie całej tabeli nie zawsze jest błędem: przy małej tabeli może być tańsze niż użycie indeksu, a przy zapytaniu zwracającym dużą część danych odczyt indeksu może nie przynieść korzyści. Problem pojawia się wtedy, gdy duża tabela jest skanowana przy wyszukiwaniu pojedynczego lub niewielkiej liczby rekordów. Należy także ocenić kolejność kolumn w indeksie złożonym, typy danych używane w porównaniach oraz to, czy funkcje i konwersje nie uniemożliwiają efektywnego użycia indeksu. Poprawność wyniku, parametry i współbieżnośćDiagnostyka obejmuje porównanie wyniku zapytania z oczekiwanym modelem danych. Przy złączeniach tabel trzeba sprawdzić, czy relacja jest jednoznaczna oraz czy użyto właściwego rodzaju złączenia. Złączenie typu INNER JOIN pomija rekordy bez odpowiadającej pary, natomiast LEFT JOIN zachowuje wszystkie rekordy z lewej tabeli i może wprowadzać wartości NULL po stronie prawej. Nieprawidłowy warunek JOIN może zwielokrotnić wiersze, a brak odpowiedniego warunku może utworzyć iloczyn kartezjański. Przy agregacji analizuje się także wpływ GROUP BY, DISTINCT i wartości NULL na końcową liczbę rekordów. To samo zapytanie może działać różnie dla różnych parametrów. Dla wartości zwracającej niewiele rekordów silnik może wybrać indeks, a dla wartości częstej może zdecydować się na skanowanie tabeli. Dlatego test powinien obejmować rzeczywiste i reprezentatywne parametry, a nie tylko jeden przypadek. Jeśli zapytanie okresowo zatrzymuje się mimo poprawnego planu, trzeba sprawdzić blokady i oczekiwania na zasoby. Transakcja przetrzymująca blokadę przez długi czas może opóźniać inne operacje, choć same zapytania nie zawierają błędu składni ani błędu logicznego. Dokumentowanie ustaleń i wsparcie sprzętu używanego do pracyRzetelna diagnostyka powinna zakończyć się opisem objawu, warunków jego wystąpienia, wykorzystanego zapytania, parametrów, planu wykonania oraz pomiarów przed i po zmianie. Warto zapisać czas wykonania, liczbę odczytanych i zwróconych wierszy oraz informacje o blokadach lub błędach połączenia. Dzięki temu można odróżnić trwałą poprawę od chwilowego spadku obciążenia. Zmiany, takie jak dodanie indeksu albo modyfikacja zapytania, należy sprawdzać na danych zbliżonych do produkcyjnych, ponieważ mały zbiór testowy może ukryć problem skali. Jeżeli analiza zapytań jest prowadzona na laptopie lub komputerze PC, znaczenie ma także stan środowiska, z którego uruchamiane są narzędzia: pamięć operacyjna, wolne miejsce na dysku, stabilność połączenia sieciowego oraz poprawne działanie klienta bazodanowego. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów, komputerów PC i podzespołów, dlatego może pomóc w usunięciu sprzętowych lub systemowych przyczyn problemów występujących podczas pracy z aplikacjami diagnostycznymi. |