iT邦幫忙

1

請問 SQLSever 如何統計某個時段內的所有SQL最大、最小、平均花費時間跟執行次數

  • 分享至 

  • xImage

期望邏輯:

select sql,max(花費時間),avg(花費時間),min(花費時間),count(*) 執行次數
from 查詢LOG表
where 執行日期 between '2020-01-01' and '2020-12-31'
group by sql
  • 時間秒為單位

結果:

sql 最大花費時間 最小花費時間 平均花費時間 執行次數
select * from table1 where a=1 500 0.25 1.25 4500
select count(1) from table2 where b=5 200 0.35 2.25 500
max min avg count
我更新回答了~你在參考看看~
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
純真的人
iT邦大師 1 級 ‧ 2021-01-05 18:11:57
最佳解答

我有這個可以查目前鎖定的SQL~
至於你要的~你可以在Google在找看看~

SELECT
   r.scheduler_id as 排程器識別碼, 
   status   as 要求的狀態, 
   r.session_id   as SPID, 
   r.blocking_session_id as BlkBy, 
   substring( 
    ltrim(q.text), 
    r.statement_start_offset/2+1, 
    (CASE
     WHEN r.statement_end_offset = -1 
     THEN LEN(CONVERT(nvarchar(MAX), q.text)) * 2 
     ELSE r.statement_end_offset 
     END - r.statement_start_offset)/2) 
     AS [正在執行的 T-SQL 命令], 
   r.cpu_time   as [CPU Time(ms)], 
   r.start_time as [開始時間], 
   r.total_elapsed_time as [執行總時間], 
   r.reads     as [讀取數], 
   r.writes    as [寫入數], 
   r.logical_reads   as [邏輯讀取數], 
   -- q.text, /* 完整的 T-SQL 指令碼 */ 
   d.name      as [資料庫名稱], 
   c.client_net_address as [用戶端IP地址], 
   c.client_tcp_port as [用戶端Port] 
FROM
   sys.dm_exec_requests r 
   CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS q 
   LEFT JOIN sys.databases d ON (r.database_id=d.database_id) 
   LEFT JOIN sys.dm_exec_connections c ON ( r.connection_id = c.connection_id ) 
ORDER BY
   r.total_elapsed_time desc

這是我找Google搜尋到的~
但不確定這樣是否Ok你要的@@

SELECT st.text as [Sql]
,max(datediff(s,qs.creation_time,qs.last_execution_time)) as [最大花費時間]
,min(datediff(s,qs.creation_time,qs.last_execution_time)) as [最小花費時間]
,avg(datediff(s,qs.creation_time,qs.last_execution_time)) as [平均花費時間]
,Count(0) Use_Count
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.plan_handle) st
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
where qs.creation_time between '2021/1/6 06:00:00' and '2021/1/6 06:10:00'
group by st.text

參考來源:https://www.cnblogs.com/seusoftware/p/4826958.html?fbclid=IwAR3sEISn_wfSZ-KrV7GIewuWpzWIqjcAAQhmIa5yYNekxLUzcPgiNtaS_N0
【五. 历史SQL语句记录】

正一 iT邦新手 5 級 ‧ 2021-01-07 16:12:54 檢舉

太厲害了,dm_exec_query_stats這個可以解決問題!

我要發表回答

立即登入回答