Temukan Pertanyaan yang Menyebabkan Menunggu

34

Diberikan jenis menunggu tertentu, bagaimana Anda menemukan kueri mana yang menyebabkan mereka menunggu dengan aman pada SQL Server 2008 R2 produksi?

Dalam kasus khusus ini saya bertanya-tanya async_network_io.

Kyle Brandt
sumber

Jawaban:

32

Cara favorit saya untuk memeriksa ini adalah dengan menggunakan sp_WhoIsActive disimpan pro Adam Machanic yang sangat baik. Berikut video tentang cara menggunakannya dan tautan untuk mengunduh kode:

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

Tangkapannya adalah Anda harus menjalankannya secara berkala untuk memeriksa hasil. Jika Anda ingin data ini dikumpulkan untuk Anda secara berkala, lihat tutorial Kendra Little tentang menangkap hasil sp_WhoIsActive ke tabel:

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

Terakhir, jika Anda menginginkan sesuatu untuk diaktifkan setiap kali permintaan menunggu async_network_io, Anda dapat menggunakan alat baru yang disebut Extended Events. Ini seperti titik debug di dalam mesin SQL Server di mana Anda dapat membuat keajaiban terjadi. Terus terang, ini agak menyakitkan untuk digunakan sekarang di tahun 2008.

Brent Ozar
sumber
14

'async_wait_io' bukan tipe menunggu. Kemungkinan jenis ASYNC% menunggu adalah:

  • ASYNC_IO_COMPLETION
  • ASYNC_NETWORK_IO
  • ASYNC_DISKPOOL_LOCK

Beberapa tautan baik untuk jenis tunggu:

Pergi ke kueri untuk menemukan menunggu saat ini:

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 - lotahelp
sumber
Maaf saya maksudkan async_network_io.
Kyle Brandt
Artikel lain yang sangat bagus: Kurangi statistik tunggu dengan statistik Brent O dan Buck Woody dan Tunggu . Mereka sangat berharga!
Marian
@Marian: Brent menunjukkan kepada saya beberapa hal hari ini tetapi kehabisan waktu sebelum kita membahas yang ini, mungkin artikel itu akan sama baiknya :-)
Kyle Brandt
@Kyle, Anda punya Brent untuk menunjukkan hal-hal dan masih meminta kami? :) Anda harus mengikatnya ke kursi di kantor Anda .. mengeringkan otaknya .. dan kemudian melepaskannya;). Dan jangan lupa beri tahu kami hasilnya!
Marian
@Marian: Yup sangat beruntung mendapat bantuannya. Masalahnya adalah jika saya mendapat jawaban di sini, maka semua orang di Internet juga mendapatkan jawabannya :-)
Kyle Brandt