it-swarm.asia

Temukan Pertanyaan yang Menyebabkan Menunggu

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 tentang async_network_io.

34
Kyle Brandt

Cara favorit saya untuk memeriksa ini adalah dengan menggunakan proc yang tersimpan sp_WhoIsActive 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 sebuah query 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.

32
Brent Ozar

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

  • ASYNC_IO_COMPLETION
  • ASYNC_NETWORK_IO
  • ASYNC_DISKPOOL_LOCK

Beberapa tautan bagus 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 = '?'