Stoję w obliczu problemu polegającego na tym, że serwer SQL 2008 nie działa z powodu dużego obciążenia. Muszę znaleźć ten przypadek obciążenia i muszę zoptymalizować kod, aby mógł obsłużyć obciążenie. W Internecie znalazłem, że profilera SQL można użyć do śledzenia interakcji z bazą danych, które można później przeanalizować, aby znaleźć dokładny punkt, w którym pojawia się problem. Dowiedziałem się również, jak uruchomić profiler SQL. Ale teraz moje pytanie brzmi: uruchamiając profil sql mam zamiar wpłynąć na wydajność serwera?
sql-server
sql-server-2008
performance
profiler
Jon Seigel
źródło
źródło
Odpowiedzi:
SQL Server Profiler to graficzny interfejs użytkownika, który wykorzystuje śledzenie SQL Server po stronie klienta. Ze względu na tę naturę, tak, potencjalnie możesz zobaczyć łagodny lub poważny wpływ na wydajność w zależności od środowiska.
SQL Server Profiler nadaje się głównie do szybkiego wglądu w to, co dzieje się na serwerze (pod warunkiem, że serwer bazy danych poradzi sobie z dodatkowymi opóźnieniami). Nie jest przeznaczony do działania przez długi czas. Aby uzyskać dłuższe ślady, użyj śledzenia po stronie serwera lub zdarzeń rozszerzonych.
źródło
Jeśli używasz śledzenia po stronie serwera , wpływ na wydajność można zminimalizować.
źródło
textdata LIKE '%foo%'
) może mieć odwrotny skutek. Jest o wiele za dużo zmiennych, aby zapewnić magiczne oczekiwania, po prostu będziesz musiał spróbować. Jednak naprawdę powinieneś używać śledzenia po stronie serwera.Wszystko, co powiedzieli poprzedni plakaty, jest poprawne. Profiler to aplikacja, która w pewnym momencie używała DMO, a teraz używa SMO do przechwytywania zdarzeń śledzenia. Daje to ogromną ilość kosztów ogólnych w porównaniu do zwykłego użycia śledzenia po stronie serwera.
SMO to interfejs API, który dodaje dodatkową „warstwę” do procesu śledzenia wraz z aplikacją kliencką Profiler. Śledzenie po stronie serwera odczytuje zdarzenia śledzenia bezpośrednio z kolejki transakcji, których wynikowy narzut jest znikomy.
Udało mi się uruchomić śledzenie po stronie serwera w środowiskach SQL Server, które przetwarzają ponad 10 000 transakcji na sekundę. Użycie Profiler w tych samych środowiskach przyniesie instancję bazy danych na kolana. W dowolnym środowisku produkcyjnym, jeśli chcesz śledzić aktywność bazy danych, zawsze używaj śledzenia po stronie serwera. Profiler zabije instancję bazy danych.
źródło
Tak, SQL Server Profiler wpływa na wydajność.
Kiedy śledzisz za pomocą GUI, wszystkie zdarzenia są synchronicznie przetwarzane i filtrowane, więc czynniki takie jak obciążenie serwera, opóźnienie sieci, które zdarzenia zbierasz, a nawet gdzie przechowywane są zebrane zdarzenia, przyczyniają się do narzutu.
Jak sugerują inne odpowiedzi, preferowane jest użycie śledzenia po stronie serwera zamiast GUI. Jednak ta metoda jest przestarzała i zamiast niej należy użyć zdarzeń rozszerzonych . (Uwaga: nawet przy użyciu Rozszerzonych zdarzeń, które są lżejsze niż ślad, nadal możliwe jest dodanie niepożądanego obciążenia do serwera - zobacz listę w drugim akapicie, aby wymyślić, jak zminimalizować koszty ogólne podczas konfigurowania zdarzenia sesja.)
W przypadku mocno obciążonego serwera należy bardzo uważać na gromadzone informacje, ponieważ sam proces pomiaru może mieć wpływ na badany problem.
źródło
Program SQL Server Profiler działa w dwóch krokach: najpierw powiedz mu, aby rejestrował wszystkie zapytania. Następnie wykonujesz typowe transakcje (lub po prostu pozwalasz logować się w stosunku do produkcji). To tworzy „obciążenie testowe”. Następnie wykonujesz rzeczywiste profilowanie (analizę) przy użyciu obciążenia testowego.
Rejestrowanie nie jest bardzo drogie, zwłaszcza w porównaniu z kosztami samych zapytań.
źródło