Знайдіть запити, які викликають очікування


34

З огляду на певний тип очікування, як дізнатися, які запити спричиняють ці очікування безпечно на виробництві сервера SQL 2008 R2?

У цьому конкретному випадку мені цікаво async_network_io.

Відповіді:


32

Мій улюблений спосіб перевірити це - використовувати чудову програму sp_WhoIsActive, що зберігається Адамом Маханічем. Ось відео про те, як його використовувати та посилання для завантаження коду:

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

Проблема полягає в тому, що вам доведеться періодично запускати її, щоб перевірити результати. Якщо ви хочете періодично збирати ці дані, перегляньте навчальний посібник Кендра Літтла щодо відображення результатів sp_WhoIsActive до таблиці:

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

Нарешті, якщо ви хочете щось запустити, коли запит чекає на async_network_io, ви можете використовувати новий інструмент під назвою Extended Events. Це як точки налагодження всередині двигуна SQL Server, де ви можете зробити магію. Відверто кажучи, зараз це трохи болісно використовувати у 2008 році.


14

'async_wait_io' - це не тип очікування. Можливі типи очікування ASYNC%:

  • ASYNC_IO_COMPLETION
  • ASYNC_NETWORK_IO
  • ASYNC_DISKPOOL_LOCK

Кілька хороших посилань для типів очікування:

Мій запит на пошук поточних очікувань:

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 = '?'

Вибачте, я мав на увазі async_network_io.
Кайл Брандт

Інші дуже хороші статті: втрачайте статистику очікування за допомогою Brent O та Buck Woody та Wait . Вони дуже варті!
Мар'ян

@Marian: Brent показував мені деякі речі сьогодні, але не вистачало часу, перш ніж ми дійшли до цієї, можливо, ця стаття буде такою ж хорошою :-)
Kyle Brandt

@Kyle у вас є Brent, щоб показати вам речі та все ж запитати у нас? :) Ви повинні зав'язати його на крісло у вашому кабінеті .. висушити його мозок .., а потім відпустити його;). І не забудьте повідомити нам про результати!
Мар'ян

@Marian: Yup дуже пощастило отримати його допомогу. Справа в тому, що якщо я отримаю відповідь тут, то всі інші в Інтернеті також отримають відповідь :-)
Кайл Брандт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.