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

SYS.DM_DB_SESSION_SPACE_USAGE

Termin Definicja
SYS.DM_DB_SESSION_SPACE_USAGE

sys.dm_db_session_space_usage pokazuje zużycie tempdb przez poszczególne sesje.

Co dokładnie raportuje ten widok dynamiczny

sys.dm_db_session_space_usage to widok zarządzania dynamicznego pokazujący, ile stron w bazie tempdb przydzieliła i zwolniła każda sesja połączona z serwerem. Zwraca cztery liczące kolumny: przydzielone i zwolnione strony obiektów użytkownika oraz przydzielone i zwolnione strony obiektów wewnętrznych. Do tego dochodzi identyfikator sesji, po którym łączy się go z widokiem opisującym sesje, żeby zobaczyć nazwę zalogowanego użytkownika i program kliencki. Ponieważ strona ma osiem kilobajtów, przeliczenie na megabajty polega na pomnożeniu liczby stron przez osiem i podzieleniu przez tysiąc dwadzieścia cztery.

Obiekty użytkownika kontra obiekty wewnętrzne

Rozróżnienie tych dwóch grup jest sednem diagnostyki. Obiekty użytkownika to tabele tymczasowe tworzone z prefiksem znaku krzyżyka oraz zmienne tabelaryczne — powstają, bo ktoś je jawnie zadeklarował w kodzie. Obiekty wewnętrzne tworzy sam silnik: robocze przestrzenie sortowania, tablice mieszające przy złączeniach haszujących, bufory kursorów i pośrednie wyniki. Duża wartość w tej drugiej grupie oznacza zwykle, że plan wykonania przelewa operacje na dysk, bo pamięć przyznana zapytaniu okazała się za mała, co najczęściej wynika z nieaktualnych statystyk i błędnych oszacowań liczby wierszy. Dla pojedynczych wykonywanych właśnie żądań istnieje bliźniaczy widok raportujący zużycie na poziomie zadania, przydatny, gdy problem trwa w tej chwili.

Jak nie pomylić się przy czytaniu wyników

Pierwsza pułapka to interpretacja samej wartości przydziału. Bieżące zużycie sesji to różnica między przydzielonymi a zwolnionymi stronami; liczba przydzielonych rośnie przez cały czas życia połączenia i u długo działającej aplikacji może być ogromna, mimo że w tej chwili sesja nie trzyma niczego. Druga to zakres: widok mówi wyłącznie o tempdb i nic nie powie o zajętości baz użytkownika. Trzecia dotyczy trwałości danych — wpisy znikają wraz z zakończeniem sesji, więc winowajca, który zdążył się rozłączyć, nie zostawia śladu i trzeba zbierać próbki cyklicznie. Warto też pamiętać, że przy włączonym wersjonowaniu wierszy magazyn wersji zajmuje tempdb niezależnie od sesji i widać go dopiero w widoku opisującym zajętość plików bazy.

Kiedy tempdb kończy się w środku dnia pracy

W firmach pracujących na oprogramowaniu handlowym objaw wygląda zawsze podobnie: około południa, przy generowaniu raportów za miesiąc, program zgłasza brak miejsca w bazie, a po restarcie usługi wszystko wraca do normy. Ustalamy wtedy, które zapytania zalewają tempdb, sprawdzamy plan wykonania i statystyki, dobieramy liczbę plików danych tempdb do liczby rdzeni procesora i przenosimy je na szybszy nośnik, jeśli serwer wciąż pracuje na dysku talerzowym. Zajmujemy się też samym sprzętem serwerowym i stanowiskami użytkowników. Sprzęt przewożą nasi kierowcy, bez pośrednictwa firm kurierskich.

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