Znajdź zapytania powodujące oczekiwanie

34

Biorąc pod uwagę pewien rodzaj oczekiwania, w jaki sposób można znaleźć, które zapytania powodują ich bezpieczne czekanie na produkcyjnym serwerze SQL 2008 R2?

W tym konkretnym przypadku zastanawiam się async_network_io.

Kyle Brandt
źródło

Odpowiedzi:

32

Moim ulubionym sposobem sprawdzenia tego jest użycie doskonałego przechowywanego proc sp_WhoIsActive Adama Machanica. Oto wideo, jak go używać i link do pobrania kodu:

http://www.brentozar.com/archive/2010/09/sql-server-dba-scripts-how-to-find-slow-sql-server-queries/

Problem polega na tym, że należy go uruchamiać okresowo, aby sprawdzić wyniki. Jeśli chcesz okresowo gromadzić te dane, zapoznaj się z samouczkiem Kendry Little dotyczącym przechwytywania wyników sp_WhoIsActive do tabeli:

http://www.littlekendra.com/2011/02/01/whoisactive/

Wreszcie, jeśli chcesz, aby coś uruchomiło się za każdym razem, gdy zapytanie czeka na async_network_io, możesz użyć nowego narzędzia o nazwie Rozszerzone zdarzenia. To jak punkty debugowania w silniku SQL Server, w których można sprawić, by magia się wydarzyła. Szczerze mówiąc, używanie go w 2008 roku jest trochę bolesne.

Brent Ozar
źródło
14

„async_wait_io” nie jest typem oczekiwania. Możliwe typy oczekiwania ASYNC% to:

  • ASYNC_IO_COMPLETION
  • ASYNC_NETWORK_IO
  • ASYNC_DISKPOOL_LOCK

Kilka dobrych linków do typów oczekiwania:

Moje przejście do zapytania w celu znalezienia bieżących oczekiwań:

SELECT  req.session_id
       ,blocking_session_id
       ,ses.host_name
       ,DB_NAME(req.database_id) AS DB_NAME
       ,ses.login_name
       ,req.status
       ,req.command
       ,req.start_time
       ,req.cpu_time
       ,req.total_elapsed_time / 1000.0 AS total_elapsed_time
       ,req.command
       ,req.wait_type
       ,sqltext.text
FROM    sys.dm_exec_requests req
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext
JOIN    sys.dm_exec_sessions ses
        ON ses.session_id = req.session_id
WHERE req.wait_type IS NOT NULL
--WHERE req.wait_type = '?'
Eric Humphrey - lotsahelp
źródło
Przepraszam, miałem na myśli async_network_io.
Kyle Brandt,
Inne bardzo dobre artykuły: Strać statystyki czekania przy użyciu statystyk Brent O i Buck Woody oraz Czekaj . Są bardzo opłacalne!
Marian
@Marian: Brent pokazał mi dzisiaj trochę rzeczy, ale zabrakło mi czasu, zanim do tego doszliśmy, być może ten artykuł będzie równie dobry :-)
Kyle Brandt
@Kyle, że masz Brenta, żeby ci coś pokazać i wciąż nas pytasz? :) Powinieneś przykuć go do krzesła w swoim biurze .. wysuszyć mu mózg ... a potem pozwolić mu odejść;). I nie zapomnij poinformować nas o wynikach!
Marian
@Marian: Masz szczęście, że mam jego pomoc. Chodzi o to, że jeśli dostanę tutaj odpowiedź, wszyscy inni w Internecie również ją otrzymają :-)
Kyle Brandt