| Termin | Definicja |
|---|---|
| Logowanie zapytań | Logowanie zapytań to rejestrowanie wykonywanych poleceń SQL w celu analizy wydajności lub audytu. Logowanie zapytań – czym jest i jakie pełni zadanieLogowanie zapytań oznacza zapisywanie informacji o poleceniach kierowanych do bazy danych. W takim rejestrze może znaleźć się treść zapytania, moment jego wykonania, czas trwania, rezultat, liczba odczytanych rekordów oraz informacja o użytkowniku lub aplikacji, która zainicjowała operację. Dzięki temu można odtworzyć przebieg pracy programu i sprawdzić, jakie działania były wykonywane na danych. Nie chodzi wyłącznie o tworzenie dużego archiwum tekstowego. Prawidłowo zaplanowany mechanizm powinien rejestrować te zdarzenia, które mają znaczenie dla diagnostyki, kontroli poprawności oraz bezpieczeństwa. W praktyce logowanie zapytań bywa stosowane w kilku celach. Pierwszym jest analiza wydajności, czyli ustalenie, które operacje wykonują się długo, powtarzają zbyt często albo nie korzystają właściwie z dostępnych indeksów. Drugim celem jest audyt. Zapis może pomóc określić, kiedy zmieniono określony rekord, z jakiego modułu pochodziła operacja i czy działanie wynikało z normalnego przebiegu pracy. Trzecim zastosowaniem jest rozwiązywanie błędów, gdy aplikacja zwraca nieoczekiwany wynik, a sam komunikat interfejsu nie wskazuje przyczyny. Warto odróżnić logowanie zapytań od rejestrowania komunikatów aplikacji. Dziennik programu może informować o nieudanym logowaniu użytkownika albo błędzie formularza, natomiast dziennik bazy danych pokazuje operacje wykonywane na danych. Oba źródła uzupełniają się, lecz nie zawsze zawierają te same informacje. Połączenie zapisów z kilku warstw pozwala dokładniej ustalić, czy problem powstał w kodzie, podczas komunikacji z bazą, czy dopiero przy zapisie lub odczycie. Logowanie zapytań a wydajność i kontrola działaniaNajważniejszym kontekstem technicznym jest wpływ rejestrowania na pracę systemu. Każdy zapis wymaga wykonania dodatkowej czynności: przygotowania informacji, przekazania jej do mechanizmu dziennika oraz zapisania na nośniku lub w pamięci. Przy małej liczbie operacji wpływ może być trudny do zauważenia, ale przy intensywnej pracy rośnie liczba danych, obciążenie wejścia i wyjścia oraz czas potrzebny na obsługę żądań. Z tego powodu logowanie powinno być dopasowane do celu. Do krótkiej diagnostyki można wykorzystać tryb szczegółowy, który rejestruje znaczną część wykonywanych poleceń. Takie ustawienie ułatwia znalezienie powtarzających się operacji i zapytań trwających dłużej niż oczekiwano, lecz szybko zwiększa rozmiar dziennika. Do stałego nadzoru lepiej wybrać logowanie selektywne, na przykład tylko zapytań przekraczających ustalony próg czasu, operacji modyfikujących dane albo zdarzeń zakończonych błędem. Pomocne są również statystyki zbiorcze, które pokazują częstotliwość i średni czas wykonania bez zapisywania pełnej treści każdej operacji. Nie każde długie zapytanie jest objawem usterki. Czas wykonania zależy od wielkości zbioru danych, aktualnego obciążenia, blokad, pamięci podręcznej oraz liczby równoległych użytkowników. Z kolei szybkie zapytanie uruchamiane tysiące razy może zużywać więcej zasobów niż pojedyncza, dłuższa operacja. W analizie trzeba więc brać pod uwagę zarówno czas jednostkowy, jak i częstotliwość występowania. Przydatne jest porównanie wyników przed zmianą konfiguracji i po niej, z zachowaniem podobnych warunków pracy. Logowanie zapytań w typowych problemach z bazą danychRejestrowanie poleceń przydaje się wtedy, gdy aplikacja działa wolno, ale nie wiadomo, która część procesu odpowiada za opóźnienie. Analiza dziennika może ujawnić wielokrotne pobieranie tych samych danych, brak ograniczenia liczby wyników, niepotrzebne odczyty całych tabel albo zapytania wykonywane po kolei, choć mogłyby zostać lepiej uporządkowane. Czasami przyczyną jest błędny warunek, przez który baza przeszukuje znacznie większy zakres niż zakładano. Innym razem problem wynika z nieaktualnych statystyk lub niedopasowania indeksu do sposobu wyszukiwania. Logi są także pomocne przy błędach zapisu. Jeżeli formularz nie przechodzi dalej, można sprawdzić, czy wysłano wszystkie wymagane pola, czy typy danych są zgodne oraz czy operacja nie została przerwana przez ograniczenie integralności. Przydatne jest zestawienie czasu wystąpienia błędu z wpisami aplikacji, ponieważ pojedynczy komunikat często nie pokazuje pełnego przebiegu zdarzenia. W razie problemów z powtarzalnością można porównywać udane i nieudane wykonania, zwracając uwagę na różnice w parametrach. Nie należy traktować logu jako jedynego dowodu. Zapis może być niepełny, jeśli część operacji jest wykonywana przez inne konto, przez procedurę albo poza główną aplikacją. Warto sprawdzić zakres konfiguracji, strefę czasową, sposób rotacji plików i to, czy dziennik nie został nadpisany. Dopiero po potwierdzeniu kompletności materiału można wyciągać wnioski dotyczące przyczyny awarii lub pogorszenia wydajności. Logowanie zapytań – praktyczne wskazówki konfiguracji i ochronyPrzed włączeniem rejestracji dobrze określić pytanie, na które log ma odpowiedzieć. Jeżeli celem jest znalezienie powolnych operacji, należy skonfigurować próg czasu i obserwować zapytania przekraczające ten próg. Jeżeli potrzebny jest audyt, istotniejsze mogą być operacje zmieniające dane, identyfikator konta, źródło połączenia i rezultat działania. Zbyt szeroki zakres utrudnia późniejszą analizę, ponieważ ważne wpisy giną wśród powtarzalnych informacji. Należy zaplanować rotację dzienników. Pliki powinny być dzielone według czasu lub rozmiaru, a starsze kopie przechowywane przez okres wynikający z rzeczywistej potrzeby. Brak rotacji może doprowadzić do zapełnienia miejsca i zatrzymania innych procesów. Warto również ustalić, kto ma dostęp do logów, jak są kopiowane oraz czy można potwierdzić ich niezmienność. W przypadku danych wrażliwych trzeba ograniczać zakres zapisu. Pełne parametry zapytania mogą zawierać dane osobowe, hasła, tokeny, numery dokumentów lub informacje biznesowe. Bezpieczniejszym rozwiązaniem bywa maskowanie wartości, rejestrowanie wzorca zapytania bez konkretnych danych albo zapisywanie identyfikatora operacji. Po wprowadzeniu zmian należy wykonać kontrolowany test: uruchomić przykładową operację, sprawdzić, czy pojawił się oczekiwany wpis, a następnie potwierdzić, że log nie zawiera nadmiarowych danych. Dobrą praktyką jest zachowanie informacji o dacie modyfikacji konfiguracji i osobie odpowiedzialnej za zmianę. Przydatne może być także ustalenie prostych oznaczeń dla poziomów ważności, aby odróżnić błąd, ostrzeżenie, informację diagnostyczną oraz zwykłą aktywność. Kiedy logowanie zapytań wymaga konsultacji serwisuDo serwisu warto zgłosić się wtedy, gdy spowolnienie powtarza się mimo ponownego uruchomienia programu, występują błędy zapisu, dzienniki szybko zajmują miejsce albo nie da się ustalić, która aplikacja generuje podejrzane operacje. Konsultacja jest wskazana także wtedy, gdy logowanie zostało włączone przypadkowo, a nie wiadomo, jak ograniczyć jego zakres bez przerwania pracy. Przed przekazaniem urządzenia można przygotować opis objawów, przybliżony czas ich występowania oraz informację, czy problem dotyczy wszystkich operacji, czy tylko jednego programu. W przypadku komputera używanego do pracy, nauki lub obsługi danych analiza może obejmować stan systemu, konfigurację aplikacji, dostępne miejsce, uprawnienia oraz sposób przechowywania dzienników. W Warszawie takie czynności wykonuje Warszawskie Pogotowie Komputerowe 24/7. Przygotowany log powinien zostać wcześniej pozbawiony haseł i innych poufnych wartości, jeżeli ich obecność nie jest konieczna do rozpoznania problemu. Dzięki temu można połączyć diagnozę techniczną z rozsądną ochroną informacji i szybciej ustalić, czy przyczyną jest konfiguracja, program, baza danych czy ogólny stan komputera. |