Tìm các câu hỏi gây ra sự chờ đợi


34

Đưa ra một loại chờ nhất định, làm thế nào để bạn tìm thấy các truy vấn nào đang gây ra những chờ đợi đó một cách an toàn trên Máy chủ SQL 2008 R2 sản xuất?

Trong trường hợp cụ thể này, tôi đang tự hỏi về async_network_io.

Câu trả lời:


32

Cách ưa thích của tôi để kiểm tra những điều này là sử dụng công cụ lưu trữ sp_WhoIsActive tuyệt vời của Adam Machanic. Đây là video về cách sử dụng nó và liên kết để tải mã:

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

Điều hấp dẫn là bạn phải chạy định kỳ để kiểm tra kết quả. Nếu bạn muốn dữ liệu này được thu thập cho bạn định kỳ, hãy xem hướng dẫn của Kendra Little về cách nắm bắt kết quả sp_WhoIsActive vào một bảng:

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

Cuối cùng, nếu bạn muốn một cái gì đó kích hoạt bất cứ khi nào một truy vấn chờ async_network_io, bạn có thể sử dụng một công cụ mới có tên là Sự kiện mở rộng. Nó giống như các điểm gỡ lỗi bên trong công cụ SQL Server nơi bạn có thể thực hiện phép thuật. Thành thật mà nói, nó hơi đau để sử dụng ngay bây giờ trong năm 2008.


14

'async_wait_io' không phải là loại chờ. Các loại chờ ASYNC% có thể là:

  • ASYNC_IO_COMPLETION
  • ASYNC_NETWORK_IO
  • ASYNC_DISKPOOL_LOCK

Một vài liên kết tốt cho các loại chờ:

Truy vấn của tôi để tìm kiếm sự chờ đợi hiện tại:

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

Xin lỗi tôi có nghĩa là async_network_io.
Kyle Brandt

Các bài viết rất hay khác: Mất chỉ số chờ với chỉ số Brent O và Buck WoodyWait . Họ rất đáng giá!
Mary

@Marian: Brent đã cho tôi xem một số thứ ngày hôm nay nhưng đã hết thời gian trước khi chúng tôi có bài viết này, có lẽ bài viết đó sẽ tốt như vậy :-)
Kyle Brandt

@Kyle bạn đã có Brent để cho bạn xem và vẫn hỏi chúng tôi? :) Bạn nên xích anh ta vào ghế trong văn phòng của bạn .. làm khô não anh ta .. và sau đó để anh ta đi;). Và đừng quên cho chúng tôi biết kết quả!
Mary

@Marian: Yup rất may mắn khi có sự giúp đỡ của anh ấy. Vấn đề là mặc dù tôi nhận được câu trả lời ở đây thì mọi người khác trên Internet cũng nhận được câu trả lời :-)
Kyle Brandt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.