sql server效能分析--執行sql次數和邏輯次數
阿新 • • 發佈:2021-11-13
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語句執行時間長,進而做效能分析,加入查詢索引等