Trova query che causano attese


34

Dato un certo tipo di attesa, come si trovano quali query stanno causando quelle attese in modo sicuro su un server SQL 2008 R2 di produzione?

In questo caso particolare mi chiedo async_network_io.

Risposte:


32

Il mio modo preferito per controllare questi è usare l'eccellente proc sp_WhoIsActive di Adam Machanic. Ecco un video su come usarlo e un link per scaricare il codice:

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

Il problema è che devi eseguirlo periodicamente per verificare i risultati. Se vuoi che questi dati vengano raccolti periodicamente per te, dai un'occhiata al tutorial di Kendra Little sull'acquisizione dei risultati sp_WhoIsActive in una tabella:

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

Infine, se vuoi che qualcosa si attivi quando una query attende async_network_io, puoi utilizzare un nuovo strumento chiamato Eventi estesi. È come i punti di debug all'interno del motore di SQL Server in cui è possibile realizzare la magia. Francamente, è un po 'doloroso da usare in questo momento nel 2008.


14

'async_wait_io' non è un tipo di attesa. I possibili tipi di attesa% ASYNC sono:

  • ASYNC_IO_COMPLETION
  • ASYNC_NETWORK_IO
  • ASYNC_DISKPOOL_LOCK

Alcuni buoni collegamenti per i tipi di attesa:

Il mio andare alla query per trovare le attese attuali:

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

Scusa, intendevo async_network_io.
Kyle Brandt


@Marian: Brent mi ha mostrato alcune cose oggi ma ha esaurito il tempo prima di arrivare a questo, forse quell'articolo sarà altrettanto buono :-)
Kyle Brandt

@Kyle hai Brent per mostrarti cose e chiederci ancora? :) Dovresti incatenarlo alla sedia nel tuo ufficio .. asciugare il cervello .. e poi lasciarlo andare;). E non dimenticare di farci sapere i risultati!
Marian

@Marian: Sì, sono molto fortunato ad avere il suo aiuto. Il fatto è che se ottengo una risposta qui, anche tutti gli altri su Internet ottengono la risposta :-)
Kyle Brandt
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.