1. 程式人生 > 其它 >sql server效能分析--執行sql次數和邏輯次數

sql server效能分析--執行sql次數和邏輯次數

dbcc freeProcCache
SELECT  creation_time  N'語句編譯時間'
        ,last_execution_time  N'上次執行時間'
        ,total_physical_reads N'物理讀取總次數'
        ,total_logical_reads/execution_count N'每次邏輯讀次數'
        ,total_logical_reads  N'邏輯讀取總次數'
        ,total_logical_writes N'邏輯寫入總次數'
        , execution_count  N
'執行次數' , total_worker_time/1000 N'所用的CPU總時間ms' , total_elapsed_time/1000 N'總花費時間ms' , (total_elapsed_time / execution_count)/1000 N'平均時間ms' ,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) N'執行語句' FROM sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st where 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) not like '%fetch%' ORDER BY total_elapsed_time / execution_count DESC;
SELECT TOP 2000 
       ST.text AS '執行的SQL語句',
       QS.execution_count AS '執行次數',
       QS.total_elapsed_time AS '耗時',
       QS.total_logical_reads AS '邏輯讀取次數',
       QS.total_logical_writes AS '邏輯寫入次數',
       QS.total_physical_reads AS '物理讀取次數',       
       QS.creation_time AS '執行時間' ,  
       QS.*
FROM   sys.dm_exec_query_stats QS
       CROSS APPLY 
sys.dm_exec_sql_text(QS.sql_handle) ST
WHERE  QS.creation_time BETWEEN '2020-06-11 00:00:00' AND '2020-06-12 00:00:00' 
ORDER BY
     QS.total_elapsed_time DESC

使用以上語句的意義在於找到那些語句被執行的次數比較頻繁,進而優化介面,然後找出那些sql語句執行時間長,進而做效能分析,加入查詢索引等