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ć?
źródło
Odpowiedzi:
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”.
źródło
Reads
odpowiedzi na pomiar czasu?Reads
kolumna 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ń.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.
źródło
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 :)
źródło
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ń.
źródło