2009-12-01 47 views
12

Tôi có một truy vấn chạy chậm mà tôi đang làm việc để tối ưu hóa.Máy chủ SQL - Phòng quản lý - Thống kê khách hàng - Thời gian chờ trả lời trên máy chủ và thời gian xử lý của máy khách

Khi xem Thống kê khách hàng trong Management Studio, mất khoảng 8 giây để chờ trả lời trên máy chủ và khoảng 1 giây về thời gian xử lý của Khách hàng.

Tôi luôn nghĩ rằng thời gian chờ trên máy chủ trả lời là số để làm việc và thời gian xử lý của khách hàng nói chung là băng thông hoặc kích thước dữ liệu lớn có liên quan.

Tôi đã thực hiện một số thay đổi đối với truy vấn và bây giờ thời gian chờ của tôi trên máy chủ trả lời là khoảng 250ms, tuy nhiên, thời gian xử lý Khách hàng đã tăng lên khoảng 9 giây.

Tập kết quả được trả về giống hệt nhau.

Ai đó có thể làm sáng tỏ sự khác biệt chính xác giữa hai con số này và điều gì sẽ gây ra kết quả như vậy?

+0

Truy vấn bạn đang cố thực thi là gì? –

+0

Sau khi điều tra thêm, vấn đề đã được tham gia vào một UDF bảng giá trị trong truy vấn. Điều này đã khiến SOS_SCHEDULER_YIELD chờ mỗi hàng truy vấn. Các tham số cho bảng đã được cố định vì vậy tôi chỉ điền một bảng tạm thời với nó và tham gia vào đó. Cả hai câu trả lời đều giúp tôi lựa chọn một sự chấp nhận là khó khăn. Tôi sẽ đưa nó cho Remus khi anh ấy xác nhận suy nghĩ của tôi về hai lần tôi đang nhìn và cũng đưa ra các lệnh chính xác để chờ đợi. –

Trả lời

19

'Chờ thời gian trên máy chủ trả lời' là thời gian giữa các gói tin yêu cầu cuối cùng rời khỏi khách hàng và các gói tin trả lời đầu tiên trở về từ máy chủ. 'Thời gian xử lý máy khách' là thời gian giữa gói phản hồi đầu tiên và gói phản hồi cuối cùng. Btw, tôi không thể tìm thấy tài liệu để trả lại những tuyên bố này, nhưng tôi muốn nói, dựa trên những quan sát của tôi, rằng họ là những người được giáo dục hợp lệ.

Nếu bạn chạy truy vấn có thời gian chờ 'lớn trên máy chủ trả lời' có nghĩa là máy chủ mất nhiều thời gian để tạo hàng đầu tiên. Điều này là bình thường đối với các truy vấn có toán tử cần toàn bộ truy vấn con để đánh giá trước khi chúng tiến hành (ví dụ điển hình là toán tử sắp xếp).

Mặt khác, truy vấn có thời gian chờ 'trả lời trên máy chủ' rất nhỏ nghĩa là truy vấn có thể trả về hàng đầu tiên nhanh. Tuy nhiên, một 'thời gian xử lý khách hàng' dài không nhất thiết ngụ ý rằng khách hàng đã dành nhiều thời gian xử lý và máy chủ bị chặn chờ đợi trên máy khách. Nó có thể chỉ đơn giản có nghĩa là máy chủ tiếp tục trả về các hàng từ kết quả và điều này là mất bao lâu cho đến khi hàng cuối cùng được trả về.

Những gì bạn thấy là kết quả của những thay đổi trong kế hoạch truy vấn có thể loại bỏ nhà điều hành đang chặn thực thi (có thể là sắp xếp) và kế hoạch mới sử dụng chiến lược khác để tạo kết quả đầu tiên nhanh hơn (có thể sử dụng chỉ mục đảm bảo thứ tự được yêu cầu nên không cần sắp xếp), nhưng tổng thể lâu hơn.

Nếu bạn đang lo lắng về khách hàng giữ lại server (nó có thể xảy ra trên bộ kết quả lớn) thì bạn nên điều tra wait_type trong sys.dm_exec_requests (còn thông tin từ sys.dm_os_taskssys.dm_os_workers rất hữu ích) cho phiên thực hiện truy vấn đang được điều tra . Nếu tôi không nhầm máy chủ đang đợi kiểu chờ đợi của khách hàng là ASYNC_NETWORK_IO.Bạn cũng có thể kiểm tra tổng hợp sys.dm_os_wait_stats, đặt lại số đó bằng cách sử dụng DBCC SQLPERF("sys.dm_os_wait_stats" , CLEAR) rồi chạy truy vấn, xem thời gian chờ loại ASYNC_NETWORK_IO tăng lên. Tất nhiên, đảm bảo không có hoạt động nào khác xảy ra trên máy chủ trong khi thử nghiệm.

+0

Đó là những gì tôi nghĩ ý nghĩa là cho họ là tốt. Điều quan trọng là, cả hai truy vấn vẫn có thứ tự sắp xếp tương tự và thực hiện thay đổi cho loại này để bao gồm các cột không được lập chỉ mục ở tất cả các kết quả vẫn còn trong cùng một đầu ra. Tôi sẽ có một cái nhìn vào một số loại chờ đợi và các công cụ mạng io mặc dù. Cảm ơn. Tôi vẫn đang làm việc trên một thử nghiệm khai thác để hiển thị tất cả điều này. Hy vọng rằng nó sẽ có ý nghĩa hơn sau đó. –

4

OK, tôi đã tìm thấy một số bài viết liên quan đến chủ đề này. Tôi hy vọng họ có thể hữu ích. Tôi phải nói rằng điều này đã mở tất cả các loại cửa mới cho tôi liên quan đến điều chỉnh truy vấn performace.

SQL Server Wait Events: Taking the Guesswork out of Performance Profiling

Analysing Query Performance in SQL Server 2005

Display SQL Server database waits

INF: Client Effects on SQL Server Throughput

+1

Cảm ơn vì những điều này, tôi sẽ đọc. Tôi không thể đăng truy vấn mà tôi đã chạy. Đó là khá lớn và sẽ không làm cho rất nhiều ý nghĩa mà không có rất nhiều nền tảng. Tôi đang làm việc trên một khai thác thử nghiệm đơn giản mà sản xuất cùng một kết quả. Tôi sẽ đăng nó ngay khi tôi hoàn thành. –

2

Các thống kê này được mô tả tại đây: http://msdn.microsoft.com/en-us/library/aa216969(v=SQL.80).aspx

+0

Liên kết bị hỏng. Hãy thử http://msdn.microsoft.com/en-us/library/aa216969(v=SQL.80).aspx hoặc http://technet.microsoft.com/en-us/library/aa216969(v=sql. 80) .aspx hoặc tìm kiếm trên "Ngăn cửa sổ truy vấn thống kê" –

Các vấn đề liên quan