Tìm hiểu những truy vấn nào gây ra lưu lượng mạng lớn nhất


23

Trên một máy chủ SQL sản xuất, tôi thấy các xung đột dữ liệu khổng lồ không liên tục. Lên đến 200Mbit / giây đang khiến NETWORK IO chờ đợi, từ đó gây ra thời gian chờ truy vấn. Làm cách nào tôi có thể tìm ra những truy vấn nào đang trả về tập kết quả lớn?

Câu trả lời:


18

Bạn có thể tìm thấy điều này từ DMV :

SELECT session_id, num_writes, st.text AS statement_text
FROM sys.dm_exec_connections AS ec
CROSS APPLY sys.dm_exec_sql_text(ec.most_recent_sql_handle) AS st
ORDER BY num_writes DESC

Không giống như truy tìm điều này nên hoàn toàn an toàn để chạy trên máy chủ Sản xuất.


7

Tôi sẽ theo dõi dữ liệu sản xuất bằng SQL Profiler và tôi sẽ thu thập mã / lô có số lần đọc và ghi lớn nhất. Lọc theo dõi để chỉ nhận các quy trình và lô có số lần đọc / ghi cao. Chọn một mẫu phù hợp với mắt của bạn: giả sử hơn 1 triệu lượt đọc hoặc viết.

Tôi sẽ lấy một mẫu các cuộc gọi đó đến nhà phát triển / máy kiểm tra và chạy chúng trong Management Studio với tùy chọn 'Bao gồm số liệu thống kê khách hàng' được bật (trong menu Truy vấn - Bao gồm số liệu thống kê khách hàng). Sau đó, bạn sẽ có một cửa sổ riêng với thông tin thống kê máy khách: Byte được gửi từ máy khách, byte nhận được từ máy chủ.

ĐỪNG KIẾM ĐƯỢC GIAO DỊCH TUYỆT VỜI TRÊN DB SẢN XUẤT MÀ KHÔNG CẦN LỌC DỮ LIỆU !!! Lọc nhiều nhất có thể (theo db, tên máy chủ, những gì bạn từng tin) và chỉ sau đó bắt đầu theo dõi. Đừng quên đóng Profiler sau :-).

PS: Tôi nhớ một tùy chọn hay khác: dọc theo dấu vết trong một khoảng thời gian, bạn cũng nên lưu dữ liệu bằng Perfmon (chỉ chọn tham số IO). Profiler có một tính năng hay là nhập cùng một tệp theo dõi và tệp dữ liệu perfmon. Và bạn có thể thấy ở đó khi bạn có các gai IO lớn nhất.

PS2: Tôi đồng ý rằng lựa chọn của Gaius thanh lịch hơn. Nhưng tôi để lại câu trả lời cồng kềnh của mình cho hậu thế! :-)


5

Nếu bạn chưa xem nó, bạn có thể muốn kiểm tra sp_WhoIsActive của Adam Machanic. Gần đây anh ấy đã thực hiện một loạt các bài đăng trên blog giải thích các tính năng khác nhau được tích hợp vào sp_WhoIsActive, một trong số đó là @delta_interval.

Điều này không chỉ cho bạn thấy những gì chiếm nhiều CPU hoặc I / O nhất mà còn có thể cho bạn thấy những gì đang chiếm nhiều CPU hoặc I / O nhất hiện nay.

Kiểm tra loạt blog sau để biết giải thích đầy đủ về tính năng này:

http://whoisactive.com/docs/01_background/

Bài đăng blog sau đây giải thích cách sắp xếp đầu ra của sp_WhoIsActive và chọn cột nào sẽ hiển thị:

http://whoisactive.com/docs/24Defput/

Đây là một trong nhiều bài viết có sẵn trên liên kết cập nhật sau đây mà anh ấy đã thiết lập.

http://whoisactive.com

Phiên bản 11.0 có sẵn tại thời điểm trả lời này, vì vậy nếu bạn đang sử dụng phiên bản cũ hơn, có lẽ đã đến lúc nâng cấp: D

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.