it-swarm.dev

Korzystanie z SQL Profiler w bazie danych, która jest produkowana

Jako programista dość często korzystam z SQL Profiler. To dobre narzędzie do debugowania, zarówno do śledzenia tego, co robi mój kod, jak i do analizy problemów z wydajnością.

Ale zawsze używałem tego na sobie rozwój środowisko w bardzo kontrolowany sposób.

  • Uruchom moją aplikację i ustaw ją w określonym stanie
  • Rozpocznij śledzenie w profilerze
  • Wykonaj określoną sekwencję czynności w mojej aplikacji
  • Zatrzymaj śledzenie i sprawdź wyniki.

Czy SQL Profiler może być praktycznie używany w środowisku produkcyjnym?

Moim pierwszym problemem jest to, że pogorszy to wydajność.

Moje drugie zmartwienie polega na tym, że ponieważ jest on produkowany, nie uruchamiasz samych interesujących działań. Musisz pozostawić profiler działający przez długi czas, a następnie przeanalizować wyniki. Czy zestaw wyników stałby się zbyt niewygodny? (Zajmuje zbyt dużo miejsca na dysku i jest zbyt trudne do zapytania).

Czy ktoś używa SQL Profiler w produkcji?

28
Andrew Shepherd

Użycie Sql Server Profiler (narzędzie GUI) do śledzenia serwera produkcyjnego nie jest dobrym pomysłem. Ale to zależy od obciążenia. Zamiast tego należy używać śledzenia SQL po stronie serwera (patrz sp_trace_XXX procedury). Znalazłem również artykuły:

Wpływ na wydajność: śledzenie profilera vs. śledzenie SQL po stronie serwera ,

Automatyzacja śledzenia po stronie serwera w programie SQL Server

nikaj powodowania problemów z Profiler

może będzie zainteresowany i przydatny.

Rezerwuj online mówi:

  • Uruchom Profiler zdalnie zamiast bezpośrednio na serwerze
  • Unikaj włączania zdarzeń, które występują często (np. Zablokuj: Nabyte), chyba że jest to absolutnie konieczne
  • Uwzględnij tylko potrzebne klasy zdarzeń
  • Określ filtry ograniczające, aby zmniejszyć liczbę zdarzeń
  • Unikaj zbędnych danych (np. SQL: BatchStarting i SQL: BatchCompleted)
  • Unikaj uruchamiania dużych śladów za pomocą Profiler; zamiast tego rozważ śledzenie SQL po stronie serwera
  • Ogranicz rozmiar pliku śledzenia po stronie serwera i zarządzaj wykorzystaniem miejsca
19
garik

Cały czas używam SQL Profilera przeciwko produkcji. Przy prawidłowym wykonaniu (filtrowanie w celu odzyskania bardzo małej ilości danych) na serwerze ryzyko jest minimalne. Śledzenie wszystkiego byłoby bezużyteczne.

21
mrdenny
  1. Tak, akt monitorowania będzie wymagał pewnych zasobów. Uruchomienie go na przeciążonym serwerze może go zabić.

  2. W rzeczywistości będziesz monitorować rzeczywiste obciążenie: twoje działania mogą zagubić się w hałasie tego obciążenia.

Czasami uruchamiamy go na produkcji. Głównie z filtrem tekstowym dla określonego kodu lub z filtrami procesora/czasu trwania w celu wychwytywania dłuższych zapytań. I nie próbujemy uchwycić planów wykonania XML ani żadnej takiej nieobecności

Kluczem do sukcesu jest wiedzieć, czego szukasz: nie pozwalamy, aby działał i wszystko uwięził.

W takim przypadku, jeśli chcesz zobaczyć wyniki niektórych działań, możesz to zrobić poza godzinami pracy?

7
gbn

Profiler zawsze wprowadza wpływ na wydajność.

Jeśli używasz programu SQL Server 2008R2 +, możesz używać zdarzeń rozszerzonych. Zapewnia to wiele informacji widocznych w profilerze z ułamkiem wydajności.

Wprowadzenie do książek online http://technet.Microsoft.com/en-us/library/bb630354 (v = sql.105) .aspx

Ta funkcja otrzymała dużą aktualizację w SQL Server 2012, która teraz zawiera GUI w SSMS.

2
James Anderson