Sắp xếp. Kiểm tra truy vấn này:
SELECT total_worker_time/execution_count AS AvgCPU
, total_worker_time AS TotalCPU
, total_elapsed_time/execution_count AS AvgDuration
, total_elapsed_time AS TotalDuration
, (total_logical_reads+total_physical_reads)/execution_count AS AvgReads
, (total_logical_reads+total_physical_reads) AS TotalReads
, execution_count
, SUBSTRING(st.TEXT, (qs.statement_start_offset/2)+1
, ((CASE qs.statement_end_offset WHEN -1 THEN datalength(st.TEXT)
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2) + 1) AS txt
, query_plan
FROM sys.dm_exec_query_stats AS qs
cross apply sys.dm_exec_sql_text(qs.sql_handle) AS st
cross apply sys.dm_exec_query_plan (qs.plan_handle) AS qp
ORDER BY 1 DESC
Điều này sẽ giúp bạn có được các truy vấn trong bộ đệm kế hoạch để biết số lượng CPU mà chúng đã sử dụng hết. Bạn có thể chạy định kỳ này, như trong một tác vụ SQL Agent, và chèn các kết quả vào một bảng để đảm bảo dữ liệu vẫn còn tồn tại sau khi khởi động lại.
Khi bạn đọc kết quả, có thể bạn sẽ nhận ra lý do tại sao chúng tôi không thể tương quan dữ liệu đó trực tiếp trở lại cơ sở dữ liệu riêng lẻ. Đầu tiên, một truy vấn đơn lẻ cũng có thể ẩn cha mẹ cơ sở dữ liệu thực sự của nó bằng cách thực hiện các thủ thuật như sau:
USE msdb
DECLARE @StringToExecute VARCHAR(1000)
SET @StringToExecute = 'SELECT * FROM AdventureWorks.dbo.ErrorLog'
EXEC @StringToExecute
Truy vấn sẽ được thực hiện trong MSDB, nhưng sẽ thăm dò ý kiến từ AdventureWorks. Chúng ta nên chỉ định mức tiêu thụ CPU ở đâu?
Nó trở nên tệ hơn khi bạn:
- Tham giữa nhiều cơ sở dữ liệu
- Chạy một giao dịch trong nhiều cơ sở dữ liệu, và nỗ lực khóa kéo dài nhiều cơ sở dữ liệu
- việc Run SQL Agent trong MSDB rằng "làm việc" trong MSDB, nhưng sao lưu cơ sở dữ liệu riêng lẻ
Nó cứ tiếp tục và bật. Đó là lý do tại sao nó làm cho tinh thần để điều chỉnh hiệu suất ở cấp truy vấn thay vì mức cơ sở dữ liệu.
Trong SQL Server 2008R2, Microsoft đã giới thiệu các tính năng quản lý ứng dụng và quản lý ứng dụng, cho phép chúng tôi đóng gói một cơ sở dữ liệu trong gói DAC có thể phân phối và triển khai. ứng dụng của họ. Nó vẫn không làm những gì bạn đang tìm kiếm, mặc dù.
Để biết thêm, hãy xem T-SQL repository at Toad World's SQL Server wiki (formerly at SQLServerPedia).
Cập nhật ngày 1/29 để bao gồm tổng số thay vì chỉ số trung bình.
Hãy tha thứ cho sự thiếu hiểu biết của tôi, nhưng các đơn vị của CPC trung bình và CPC trung bình là gì? – Portman
Mili giây cho cả hai - mili giây của thời gian CPU và mili giây của thời lượng. Chúng có thể khác nhau bởi vì các truy vấn có thể chờ trên IO, khóa, máy khách, v.v. Tôi sẽ sửa đổi truy vấn để lấy tổng số quá. (Tôi định nói chân-pound nhưng tôi không thể giữ một khuôn mặt thẳng ảo.) –