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

Trace field

Termin Definicja
Trace field

Trace field to pole rejestrowane w śladzie diagnostycznym SQL Server, np. czas trwania czy nazwa bazy.

Czym jest trace field w śladzie SQL Server

Trace field to pojedyncze pole danych zapisane przy zdarzeniu rejestrowanym przez mechanizm śledzenia SQL Server. Każdy wiersz śladu opisuje konkretne zdarzenie, na przykład wykonanie instrukcji Transact-SQL, zakończenie procedury składowanej, utworzenie połączenia albo wystąpienie błędu. Pola zawierają informacje potrzebne do odtworzenia przebiegu operacji: nazwę zdarzenia, czas rozpoczęcia, identyfikator procesu serwera, nazwę bazy danych, nazwę aplikacji lub loginu oraz parametry czasowe.

W klasycznym SQL Trace, obsługiwanym między innymi przez SQL Server Profiler, dostępne pola są powiązane z klasą zdarzenia. Przykładowo zdarzenie dotyczące zakończenia instrukcji może zawierać kolumny Duration, CPU, Reads, Writes, StartTime, EndTime, DatabaseName, LoginName, HostName i TextData. Nie każde zdarzenie udostępnia wszystkie kolumny. Dlatego trace field nie oznacza osobnego obiektu w bazie danych ani kolumny tabeli użytkownika, lecz atrybut zdarzenia diagnostycznego zapisanego w śladzie.

Jak SQL Server zapisuje wartości pól śladu

Wartość pola zależy od rodzaju zdarzenia oraz konfiguracji śledzenia. Pole Duration opisuje czas trwania operacji, natomiast CPU przedstawia czas procesora zużyty przez zdarzenie. W klasycznym śladzie SQL Server wartości czasowe tych kolumn są zapisywane w mikrosekundach, choć interfejsy graficzne mogą prezentować je w innej jednostce. Pola Reads i Writes odnoszą się do liczby operacji odczytu lub zapisu stron danych wykonanych w związku ze zdarzeniem. Przy interpretacji trzeba sprawdzić definicję konkretnej kolumny, ponieważ podobnie brzmiące wartości nie zawsze opisują ten sam aspekt pracy silnika.

Trace field może mieć wartość pustą, zerową albo niedostępną, jeśli dane zdarzenie nie dostarcza danego atrybutu. Przykładowo nazwa bazy danych może nie być ustalona dla operacji wykonywanej przed wybraniem kontekstu bazy lub dla zdarzenia, które nie jest związane z konkretnym obiektem. W polu TextData może pojawić się tekst instrukcji SQL, nazwa procedury albo inny opis zależny od klasy zdarzenia. Samo pole nie powinno być analizowane bez nazwy zdarzenia, czasu wystąpienia i identyfikatora sesji.

Wykorzystanie trace field przy analizie obciążenia

Prawidłowo dobrane pola pozwalają połączyć zdarzenie z konkretną sesją, aplikacją i bazą danych. LoginName wskazuje konto użyte do połączenia, HostName może identyfikować komputer kliencki, a ApplicationName nazwę aplikacji przekazaną podczas ustanawiania sesji. SPID, czyli identyfikator procesu serwera, pomaga zestawiać zdarzenia należące do tej samej sesji. StartTime i EndTime umożliwiają uporządkowanie operacji w czasie, a DatabaseName pozwala ograniczyć analizę do wskazanej bazy.

W praktyce trace field służy do wyszukiwania operacji trwających dłużej od przyjętego progu, instrukcji powodujących dużą liczbę odczytów oraz powtarzających się błędów. Zestawienie Duration z CPU, Reads i Writes pomaga odróżnić problem obliczeniowy od problemu z dostępem do danych. Długa operacja z wysokim CPU może wskazywać na kosztowne przetwarzanie, natomiast duża liczba odczytów przy mniejszym CPU może kierować uwagę na plan wykonania i dostęp do stron danych. Trace jest jednak zapisem obserwacji, a nie automatyczną diagnozą przyczyny.

Ograniczenia klasycznego śladu SQL Server

Klasyczny SQL Trace i SQL Server Profiler umożliwiają wybór zdarzeń oraz kolumn, filtrowanie między innymi po bazie, loginie, aplikacji, czasie trwania lub identyfikatorze sesji, a także zapis wyników do pliku albo tabeli. Nadmiernie szeroki ślad może jednak generować istotny narzut i duży wolumen danych. Rejestrowanie wszystkich zdarzeń oraz pola zawierającego tekst instrukcji utrudnia późniejsze filtrowanie, zwiększa rozmiar pliku i może wpływać na pracę monitorowanej instancji.

Podczas diagnostyki należy zachować konfigurację śladu razem z wynikami, ponieważ identyczna nazwa pola może występować przy różnych klasach zdarzeń, a znaczenie wartości zależy od wybranego zdarzenia. Trzeba również odróżnić czas trwania pojedynczej instrukcji od czasu całej transakcji oraz pamiętać, że ślad pokazuje zdarzenia zarejestrowane po jego uruchomieniu. W nowych wdrożeniach SQL Server do monitorowania zalecane jest używanie Extended Events, ale pojęcie pola śladu nadal opisuje pojedynczy atrybut zapisany przy zdarzeniu diagnostycznym SQL Server.