2008-08-18 22 views
9

Chúng tôi đang có các thời gian chờ truy vấn ngẫu nhiên, lẻ tẻ trên cụm SQL Server 2005 của chúng tôi. Tôi sở hữu một vài ứng dụng sử dụng nó, vì vậy tôi đang giúp đỡ trong cuộc điều tra. Khi xem% CPU thời gian trong ol thường xuyên 'Perfmon, bạn chắc chắn có thể nhìn thấy nó pegging ra. Tuy nhiên, giám sát hoạt động SQL chỉ cung cấp cho CPU tích lũy và thời gian IO được sử dụng bởi một quá trình, không phải là những gì nó đang sử dụng ngay sau đó, hoặc trên một khung thời gian cụ thể. Có lẽ tôi có thể sử dụng profiler và chạy một dấu vết, nhưng cụm này được sử dụng rất nhiều và tôi sợ tôi sẽ tìm kiếm một cây kim trong đống cỏ khô. Tôi đang sủa cây sai à?Xác định các Sự cố Hiệu suất của Máy chủ SQL

Có ai có một số phương pháp tốt để theo dõi các truy vấn/quy trình tốn kém trong môi trường này không?

Trả lời

12

này sẽ cung cấp cho bạn 50 câu đầu bởi thời gian CPU trung bình, kiểm tra ở đây cho các kịch bản khác: http://www.microsoft.com/technet/scriptcenter/scripts/sql/sql2005/default.mspx?mfr=true

SELECT TOP 50 
     qs.total_worker_time/qs.execution_count as [Avg CPU Time], 
     SUBSTRING(qt.text,qs.statement_start_offset/2, 
      (case when qs.statement_end_offset = -1 
      then len(convert(nvarchar(max), qt.text)) * 2 
      else qs.statement_end_offset end -qs.statement_start_offset)/2) 
     as query_text, 
     qt.dbid, dbname=db_name(qt.dbid), 
     qt.objectid 
FROM sys.dm_exec_query_stats qs 
cross apply sys.dm_exec_sql_text(qs.sql_handle) as qt 
ORDER BY 
     [Avg CPU Time] DESC 
2

Trình tạo hồ sơ có vẻ giống như một phương pháp "kim trong một đống cỏ khô", nhưng có thể có một số thứ hữu ích. Hãy thử chạy nó trong một vài phút trong khi các cơ sở dữ liệu dưới tải điển hình, và xem nếu bất kỳ truy vấn nổi bật như lấy cách quá nhiều thời gian hoặc hogging tài nguyên trong một số cách. Trong khi một tình huống như thế này có thể dẫn đến một số vấn đề chung, nó cũng có thể liên quan đến một số vấn đề cụ thể với một hoặc hai trang web, điều này làm rối tung mọi thứ trong một số trường hợp gây ra hiệu suất rất kém trên bảng.

4

Chúng tôi sử dụng sản phẩm của Spotlight của Quest. Rõ ràng đó là một sự đầu tư về thời gian và tiền bạc để nó có thể không giúp bạn trong ngắn hạn nhưng nếu bạn có một môi trường SQL lớn thì nó khá hữu dụng.

3

Như Yaakov nói, chạy profiler cho một vài phút dưới tải điển hình và lưu kết quả vào một bảng này sẽ cho phép bạn chạy các truy vấn dựa trên các kết quả giúp dễ dàng hơn trong việc phát hiện mọi truy vấn tìm kiếm tài nguyên.

2

Chạy Cấu hình và lọc các truy vấn mất nhiều hơn một số lần đọc nhất định. Đối với ứng dụng tôi đã thực hiện, mọi truy vấn không báo cáo đã thực hiện hơn 5000 lần đọc đều xứng đáng với một giao diện thứ hai. Ứng dụng của bạn có thể có ngưỡng khác nhau, nhưng ý tưởng là như nhau.

2

This utility bởi Erland Sommarskog rất hữu ích.

Đó là một thủ tục được lưu trữ mà bạn thêm vào cơ sở dữ liệu của mình. Chạy nó bất cứ khi nào bạn muốn xem những gì các truy vấn đang hoạt động và có được một hình ảnh tốt của ổ khóa, khối, vv Tôi sử dụng nó thường xuyên khi mọi thứ dường như được dán lên.

4

Tôi đã tìm thấy Performance Dashboard Reports rất hữu ích. Chúng là một tập hợp các báo cáo RS tùy chỉnh do Microsoft cung cấp. Bạn chỉ cần chạy trình cài đặt trên máy tính khách của bạn và sau đó chạy setup.sql trên phiên bản SQL Server.

Sau đó, nhấp chuột phải vào cơ sở dữ liệu (không quan trọng cái nào) trong SSMS và goto Báo cáo -> Báo cáo tùy chỉnh. Điều hướng đến và chọn tệp performance_dashboard_main.rdl được đặt trong thư mục \ Program Files \ Microsoft SQL Server \ 90 \ Tools \ PerformanceDashboard theo mặc định. Bạn chỉ cần làm điều này một lần. Sau lần đầu tiên, nó sẽ xuất hiện trong danh sách báo cáo.

Chế độ xem trang tổng quan chính sẽ hiển thị mức sử dụng CPU theo thời gian, trong số những thứ khác. Đôi khi bạn có thể làm mới. Khi bạn nhìn thấy một cành, chỉ cần nhấp vào thanh trong biểu đồ để lấy dữ liệu chi tiết đằng sau nó.

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