Localizar consultas que estão causando esperas

34

Com um certo tipo de espera, como você encontra quais consultas estão causando essas esperas com segurança em um SQL 2008 R2 Server de produção?

Neste caso em particular, eu estou pensando sobre async_network_io.

Kyle Brandt
fonte

Respostas:

32

Minha maneira favorita de verificar isso é usar o excelente processo armazenado sp_WhoIsActive de Adam Machanic. Aqui está um vídeo sobre como usá-lo e um link para baixar o código:

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

O problema é que você deve executá-lo periodicamente para verificar os resultados. Se você deseja que esses dados sejam coletados periodicamente, consulte o tutorial de Kendra Little sobre a captura de resultados sp_WhoIsActive em uma tabela:

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

Por fim, se você deseja que algo seja acionado sempre que uma consulta aguardar async_network_io, você pode usar uma nova ferramenta chamada Eventos Estendidos. É como pontos de depuração dentro do mecanismo do SQL Server, onde você pode fazer mágica acontecer. Francamente, é um pouco doloroso de usar agora em 2008.

Brent Ozar
fonte
14

'async_wait_io' não é um tipo de espera. Os tipos possíveis de espera de ASYNC% são:

  • ASYNC_IO_COMPLETION
  • ASYNC_NETWORK_IO
  • ASYNC_DISKPOOL_LOCK

Alguns bons links para tipos de espera:

Minha consulta para encontrar as esperas atuais:

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 - lotes de ajuda
fonte
Desculpe, eu quis dizer async_network_io.
Kyle Brandt
Outros artigos muito bons: perca estatísticas de espera com as estatísticas Brent O e Buck Woody e Wait . Eles valem muito a pena!
Marian
@Marian: Brent estava me mostrando algumas coisas hoje, mas correu para fora de tempo antes que chegamos a esta, talvez esse artigo vai ser tão bom :-)
Kyle Brandt
@Kyle, você tem o Brent para lhe mostrar coisas e ainda nos perguntar? :) Você deve acorrentá-lo à cadeira do seu escritório .. secar o cérebro dele .. e depois deixá-lo ir;). E não se esqueça de nos informar sobre os resultados!
Marian
@ Marian: Sim, muita sorte em ter sua ajuda. A coisa é que se eu conseguir uma resposta aqui, em seguida, todos os outros na Internet recebe a resposta, bem :-)
Kyle Brandt