Co to jest „Wylogowanie z audytu” w programie SQL Server Profiler?

93

Uruchamiam import danych (używając C # / Linq) i oczywiście staram się maksymalnie zoptymalizować moje zapytania. W tym celu uruchamiam śledzenie w bazie danych przy użyciu programu SQL Server Profiler, a mój ślad jest filtrowany według mojej nazwy logowania SQL (jest to nazwa, która może być jednoznacznie przypisana do mojego procesu importu danych).

O dziwo, większość moich instrukcji SQL jest naprawdę szybka :) - bardzo niewiele zapytań przekracza nawet 1 ms. Ale pomiędzy wszystkimi moimi zapytaniami jest kilka wierszy, w których EventClass to „Audit Login” lub „Audit Logout” - a czas trwania „Audit Logout” może wynosić nawet minutę!

Czy ma to coś wspólnego z faktem, że podczas importu używam transakcji? Jeśli tak, czy istnieje sposób, aby dowiedzieć się, które z nich są najbardziej trafne, abym mógł je wyczyścić?

Shaul Behr
źródło

Odpowiedzi:

83

Jeśli dobrze pamiętam, czas trwania wylogowania z audytu to czas, przez który połączenie było otwarte. Np. Nie ma to nic wspólnego z szybkością polecenia - tylko przez czas, przez jaki logowanie było „zalogowane”.

Thies
źródło
9
Ciekawe, dzięki! Ale dlaczego liczba odczytów jest tak wysoka (~ 400 000), skoro liczba odczytów zapytań między „loginem” a „wylogowaniem” wynosi tylko 56?
Shaul Behr
Jest to liczba ms od zalogowania do wylogowania. Nie faktyczna liczba zapytań w ramach używanego połączenia. 400 000ms to około 7 minut. Spójrz na procesor, odczytuje i zapisuje kolumny, aby spróbować zlokalizować zapytania, które są obciążone dużym procesorem i / lub dyskiem - oba zabijają wydajność.
Thies
Przepraszam, czy masz na myśli, że Readsodpowiedzi na pomiar czasu?
Johnny_D
1
Wartość "Odczyty" wylogowania wydaje mi się naprawdę wysoka, biorąc pod uwagę, że jest tylko jedna operacja z trzema odczytami wymienionymi między nią a loginem.
Triynko
1
Należy zauważyć, że Readskolumna nie przedstawia wierszy zwracanych przez zapytania, ale liczbę odczytów z dysku logicznego. Zapytanie, które nawet niczego nie zwraca, może przeskanować całą tabelę zawierającą 1 milion rekordów w poszukiwaniu niczego do zwrócenia, co wygenerowałoby bardzo dużą liczbę odczytów. Więc liczba odczytów nie jest tak naprawdę naturalnie skorelowana z liczbą zapytań.
Tempo
12

Zdarzenia logowania / wylogowania są związane z konfiguracją / wylogowaniem. IIRC czas to „był zalogowany na czas” w przeciwieństwie do czasu trwania przetwarzania, jak w przypadku innych zdarzeń dziennika.

Ogólnie rzecz biorąc, ukrywa się te zdarzenia, chyba że podejrzewasz, że występuje problem z zarządzaniem pulą połączeń itp.

Nieprzetworzone czasy dla partii powinny być wystarczające do zdiagnozowania czasu rzeczywistej aktywności, w tym wpływu wszelkich transakcji itp.

Ruben Bartelink
źródło
Czy można bardziej szczegółowo przyjrzeć się temu „ustawianiu / burzeniu”? Zobacz następujące powiązane pytanie: stackoverflow.com/questions/44920375/…
Stefan
3

Klasa zdarzenia Audit Logout wskazuje, że użytkownik wylogował się (wylogował) z serwera Microsoft SQL Server. Zdarzenia w tej klasie są wywoływane przez nowe połączenia lub przez połączenia, które są ponownie wykorzystywane z puli połączeń.

jest to całkowity czas logowania, w tym czas bezczynności, więc nie oznacza problemu z wydajnością. Również profilowanie logowania / wylogowania jest bardzo mało prawdopodobne, aby spowodować problem z wydajnością. Lepiej byłoby szukać zapytań o niskiej wydajności, być może zapytań długotrwałych.

Aby uzyskać więcej informacji, sugeruję https://msdn.microsoft.com/en-us/library/ms175827.aspx :)

Michele Caggiano
źródło
1
Czy na pewno zdarzenia wylogowania z inspekcji są uruchamiane, gdy połączenia są ponownie wykorzystywane z puli połączeń? Myślałem, że pule połączeń są przykładem powodu, dla którego możesz zobaczyć długie czasy wylogowania z audytu, ponieważ połączenie jest otwarte, ale bezczynne przez większość swojego życia,
Adam Goodwin
2

Warto również zauważyć, ponieważ w tej odpowiedzi Audit Login / Logout może po prostu oznaczać, że połączenie jest ponownie używane z / zwracane do puli połączeń.

Rory
źródło