Dowiedz się, jakie zapytania powodują największy ruch w sieci

23

Na produkcyjnym serwerze SQL obserwuję sporadyczne ogromne skoki ruchu danych. Do 200 Mb / s, co powoduje, że IO SIECI czeka, co z kolei powoduje przekroczenie limitu czasu zapytania. Jak mogę dowiedzieć się, jakie zapytania zwracają duże zestawy wyników?

olle
źródło

Odpowiedzi:

18

Możesz to znaleźć w DMV :

SELECT session_id, num_writes, st.text AS statement_text
FROM sys.dm_exec_connections AS ec
CROSS APPLY sys.dm_exec_sql_text(ec.most_recent_sql_handle) AS st
ORDER BY num_writes DESC

W przeciwieństwie do śledzenia powinno to być całkowicie bezpieczne do uruchomienia na serwerze produkcyjnym.

Gajusz
źródło
7

Pobrałbym dane produkcyjne za pomocą SQL Profiler i zebrałem kod / partie, które mają największe odczyty i zapisy. Filtruj ślad, aby uzyskać tylko procedury i partie, które mają wysoką liczbę odczytów / zapisów. Wybierz próbkę pasującą do Twojego oka: powiedzmy, że ponad milion czyta lub pisze.

Pobrałbym próbkę tych wywołań na maszynę deweloperską / testującą i uruchomiłem je w Management Studio z włączoną opcją „Dołącz statystyki klienta” (w menu Zapytanie - Dołącz statystyki klienta). Następnie pojawi się osobne okno z informacjami o statystykach klienta: Bajty wysłane od klienta, Bajty odebrane z serwera.

NIE WŁĄCZAJ ŚLEDZENIA NA DB PRODUKCJI BEZ FILTROWANIA DANYCH !!! Przefiltruj jak najwięcej (według db, nazwy hosta, co tylko uważasz) i dopiero wtedy rozpocznij śledzenie. Nie zapomnij zamknąć Profilera po :-).

PS: Przypomniałem sobie inną fajną opcję: przez pewien czas powinieneś również zapisywać dane za pomocą Perfmon (wybrałem tylko parametry IO). Profiler ma ciekawą funkcję importowania razem pliku śledzenia i pliku danych perfmon. I widać tam, kiedy masz największe skoki we / wy.

PS2: Zgadzam się, że opcja Gajusza jest bardziej elegancka. Ale moją nieporęczną odpowiedź zostawiam potomstwu! :-)

Marian
źródło
5

Jeśli jeszcze na to nie spojrzałeś, możesz spróbować sp_WhoIsActive Adama Machanica. Niedawno napisał serię postów na blogu wyjaśniających różne funkcje wbudowane w sp_WhoIsActive, z których jedną jest @delta_interval.

To nie tylko pokaże ci, co zajmuje najwięcej procesora lub we / wy ogółem, ale może również pokazać, co zajmuje teraz najwięcej procesora lub we / wy.

Sprawdź następujące serie blogów, aby uzyskać pełne wyjaśnienie tej funkcji:

http://whoisactive.com/docs/01_background/

Poniższy post na blogu wyjaśnia, w jaki sposób posortować dane wyjściowe sp_WhoIsActive i wybrać kolumny do wyświetlenia:

http://whoisactive.com/docs/24_output/

Jest to jeden z wielu postów dostępnych w poniższym łączu aktualizacji, który skonfigurował.

http://whoisactive.com

Wersja 11.0 jest dostępna od momentu udzielenia odpowiedzi, więc jeśli używasz starszej wersji, może być czas na aktualizację: D

Jeff
źródło