2011-12-05 18 views
12

Mamy procedurę przechowywaną, która jest wywoływana około 300 000 razy dziennie przez 15 użytkowników w ciągu dnia. Przelałem każdą linię i jest tak skuteczny, jak tylko mogę.Serwer SQL Operacja "Wylogowanie kontroli" zajmuje dużo czasu.

Procedura przechowywana jest dostępna za pośrednictwem strony ASP.NET w wersji 4.0 ze starej aplikacji VB6 na podstawowym serwerze Winterms.

Kiedy patrzę w pliku śledzenia SQL, widzę następujące:

  1. Exec sp_reset_connection (Korzystanie z puli połączeń)
  2. Audit Login
  3. Wykonanie procedury przechowywanej
  4. Audit Logout

Widzę w kroku 4, odczyt i zapis są wysokie, co ma sens, ponieważ jest to nagromadzenie połączenie jest ponownie wykorzystywane w puli.

Co mnie martwi, to jak długo to trwa, czasami na 50 ms, a innym razem 400ms, to jest całkowicie losowe. Z dokumentów, które przeczytałem "Wylogowanie audytu", jest cały czas trwania dla wszystkich trzech kroków. Ale kroki 1-3 były bardzo szybkie, jak 0-5ms. Dlaczego czas "Wylogowania audytu" byłby tak długi?

Odpowiedz

6

jestem „radzenia sobie” z podobnego problemu teraz i natknęliśmy się na to postu: http://social.msdn.microsoft.com/Forums/en/sqldatabaseengine/thread/84ecfe9e-ff0e-4fc5-962b-cffdcbc619ee

Może to (z powyższego postu) jest rozwiązaniem:

„One błąd w mojej analizie został zidentyfikowany Kiedy połączenie jest wyciągnięte z puli, serwer jest wysyłany sp_reset_connection To reset wywołuje log_rout, a następnie audit_login. następny audit_logout nie występuje do następnego razu połączenie to Wyciągnięto z puli ... więc długie interwały, które widzę, obejmują czas, w którym aplikacja przetwarza wyniki zapytania, zwalnia połączenie z pulą połączeń, robi wszystko, a na koniec wyciąga połączenie z powrotem z puli aby rozpocząć następną transakcję. "

Powiązane problemy