Sql-Server

SQL Server - 分析多個儲存過程統計資訊

  • March 11, 2016

我正在嘗試分析 1000 多個儲存過程,我需要找出:

  • 以秒為單位的經過時間(基於迭代次數的 AVG)
  • CPU(基於迭代次數的 AVG)
  • 邏輯讀取

起初我使用的是SQL Query Stress,但要花很多時間來測試執行每個儲存過程並分析測試參數。

所以我的問題是,有沒有更簡單的方法來獲得我需要的東西?

如果這些在實時數據庫中,那麼您可以使用 DMVsys.dm_exec_procedure_stats提取已在實例上執行和記憶體的所有儲存過程的資訊。

拉取按平均持續時間排序的所有過程的基本查詢可能如下所示:

USE <DATABASE>;
GO

SELECT  
 o.name, 
 deps.total_elapsed_time/CAST(deps.execution_count AS DECIMAL(10,2))/1000000 AS AvgDurationInS,
 deps.total_worker_time/CAST(deps.execution_count AS DECIMAL(10,2))/1000000 AS AvgCPUInS,
 deps.total_logical_reads/CAST(deps.execution_count AS DECIMAL(10,2)) AS AvgLogicalReads,
 deps.cached_time
FROM sys.dm_exec_procedure_stats AS deps
INNER JOIN sys.objects AS o
 ON o.object_id = deps.object_id
WHERE deps.database_id = DB_ID()
ORDER BY AvgDurationInS DESC;

但是,這不會向您顯示儲存過程中的所有查詢,並按相同的指標分解每個查詢。您可以使用sys.dm_exec_query_stats

引用自:https://dba.stackexchange.com/questions/131912