Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm cách nào tôi có thể ghi nhật ký và tìm các truy vấn đắt tiền nhất?

  1. Sử dụng SQL Server Profiler (trên menu công cụ trong SSMS) để tạo dấu vết ghi nhật ký các sự kiện sau:

     RPC:Completed
     SP:Completed
     SP:StmtCompleted
     SQL:BatchCompleted
     SQL:StmtCompleted
    
  2. Bạn có thể bắt đầu với mẫu dấu vết tiêu chuẩn và cắt tỉa nó. Bạn đã không chỉ định đây là cho một cơ sở dữ liệu cụ thể hay toàn bộ máy chủ, nếu nó là cho một Db cụ thể, hãy bao gồm cột DatabaseID và đặt bộ lọc cho DB của bạn (SELECT DB_ID('dbname') ). Đảm bảo cột dữ liệu Đọc hợp lý được bao gồm cho mỗi sự kiện. Đặt dấu vết để đăng nhập vào một tệp. Nếu bạn đang để dấu vết này chạy mà không cần giám sát trong nền, bạn nên đặt kích thước tệp theo dõi tối đa là 500MB hoặc 1GB nếu bạn có nhiều dung lượng (tất cả phụ thuộc vào mức độ hoạt động trên máy chủ, vì vậy bạn sẽ phải hút nó và xem).

  3. Bắt đầu một cách ngắn gọn theo dõi và sau đó tạm dừng nó. Goto File-> Export-> Script Trace Definition và chọn phiên bản DB của bạn và lưu vào một tệp. Bây giờ bạn có một tập lệnh sql tạo ra một dấu vết có chi phí ít hơn nhiều so với việc chạy qua GUI của trình biên dịch. Khi bạn chạy tập lệnh này, nó sẽ xuất ra ID theo dõi (thường là @ID=2 ); ghi lại điều này.

  4. Sau khi bạn có tệp theo dõi (.trc) (theo dõi đã hoàn thành do đạt đến kích thước tệp tối đa hoặc bạn đã dừng theo dõi đang chạy bằng

    EXEC sp_trace_setstatus @ID, 0
    EXEC sp_trace_setstatus @ID, 2

Bạn có thể tải theo dõi vào hồ sơ hoặc sử dụng ClearTrace (rất tiện dụng) hoặc tải nó vào một bảng như sau:

SELECT * INTO TraceTable
FROM ::fn_trace_gettable('C:\location of your trace output.trc', default)

Sau đó, bạn có thể chạy một truy vấn để tổng hợp dữ liệu, chẳng hạn như truy vấn này:

SELECT COUNT(*) AS TotalExecutions, 
    EventClass, CAST(TextData as nvarchar(2000))
 ,SUM(Duration) AS DurationTotal
 ,SUM(CPU) AS CPUTotal
 ,SUM(Reads) AS ReadsTotal
 ,SUM(Writes) AS WritesTotal
FROM TraceTable
GROUP BY EventClass, CAST(TextData as nvarchar(2000))
ORDER BY ReadsTotal DESC

Khi bạn đã xác định được các truy vấn tốn kém, bạn có thể tạo và kiểm tra các kế hoạch thực thi thực tế.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo máy chủ được liên kết giữa hai vùng chứa Docker chạy SQL Server (Ví dụ T-SQL)

  2. Cách tạo nhiều cái cho một cái

  3. Đếm các bản ghi cho mỗi tháng trong một năm

  4. Tính tổng số đang chạy với mệnh đề OVER và mệnh đề PARTITION BY trong SQL Server

  5. Đổi tên cột SQL Server 2008