02/10/2018, 00:36

[SQLSERVER] Câu lệnh Sql theo dõi tốc độ truy vấn T-sql trong SERVER

Nếu bạn là một admin quản lý database server của công ty, bỗng nhiên một ngày đẹp trời, dữ liệu truy vấn đến server của các bạn bị chậm lại, vậy làm thế nào để kiểm tra các câu lệnh truy vấn nào làm ảnh hưởng đến tốc độ của sqlserver. Các bạn có thể sử dụng ...

Nếu bạn là một admin quản lý database server của công ty, bỗng nhiên một ngày đẹp trời, dữ liệu truy vấn đến server của các bạn bị chậm lại, vậy làm thế nào để kiểm tra các câu lệnh truy vấn nào làm ảnh hưởng đến tốc độ của sqlserver. Các bạn có thể sử dụng Sqlserver Monitor để kiểm tra.

Bây giờ, mình sẽ chia sẽ cho các bạn đoạn code T-sql để kiểm tra tốc độ của từng câu lệnh truy vấn gởi về máy chủ.

SELECT top 1000  creation_time 
        ,last_execution_time
        ,total_physical_reads
        ,total_logical_reads 
        ,total_logical_writes
        , execution_count
        , total_worker_time
        , total_elapsed_time
        , total_elapsed_time / execution_count avg_elapsed_time
        ,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
         ((CASE statement_end_offset
          WHEN -1 THEN DATALENGTH(st.text)
          ELSE qs.statement_end_offset END
            - qs.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
ORDER BY total_elapsed_time / execution_count DESC

Và hình ảnh dưới đây là kết quả trả về:

sql server monitor

Câu truy vấn ở trên là chúng ta select lấy ra 1000 dòng có tốc độ xử lý chậm nhất, và dựa vào bảng dữ liệu trả về này, mà các bạn có thể phân tích và tối ưu hóa lại câu truy vấn của mình.

HAVE FUN :)

Tags:
0