Encuentra consultas que están causando esperas


34

Dado un cierto tipo de espera, ¿cómo encuentra qué consultas están causando esas esperas de forma segura en un servidor SQL 2008 R2 de producción?

En este caso particular me pregunto async_network_io.

Respuestas:


32

Mi forma favorita de verificar esto es usar el excelente procedimiento almacenado sp_WhoIsActive de Adam Machanic. Aquí hay un video sobre cómo usarlo y un enlace para descargar el código:

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

El problema es que debe ejecutarlo periódicamente para verificar los resultados. Si desea que estos datos se recopilen periódicamente, consulte el tutorial de Kendra Little sobre la captura de resultados de sp_WhoIsActive en una tabla:

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

Finalmente, si desea que algo se active siempre que una consulta espere async_network_io, puede usar una nueva herramienta llamada Eventos extendidos. Es como depurar puntos dentro del motor de SQL Server donde puedes hacer que la magia suceda. Francamente, es un poco doloroso usarlo ahora mismo en 2008.


14

'async_wait_io' no es un tipo de espera. Los posibles tipos de espera ASYNC% son:

  • ASYNC_IO_COMPLETION
  • ASYNC_NETWORK_IO
  • ASYNC_DISKPOOL_LOCK

Algunos buenos enlaces para los tipos de espera:

Mi consulta para encontrar las esperas actuales:

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

Lo siento, quise decir async_network_io.
Kyle Brandt

Otros artículos muy buenos: pierda las estadísticas de espera con Brent O y Buck Woody y las estadísticas de espera . ¡Merecen mucho la pena!
Marian

@Marian: Brent me mostró algunas cosas hoy, pero se acabó el tiempo antes de llegar a este, tal vez ese artículo sea igual de bueno :-)
Kyle Brandt

@Kyle, ¿tienes a Brent para mostrarte cosas y aún preguntarnos? :) Deberías encadenarlo a la silla de tu oficina ... secarle el cerebro ... y luego dejarlo ir;). ¡Y no olvides informarnos de los resultados!
Marian

@Marian: Sí, muy afortunado de contar con su ayuda. Sin embargo, si recibo una respuesta aquí, todos los demás en Internet también obtienen la respuesta :-)
Kyle Brandt
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.