Sql-Server
SQL Server - 分析多個儲存過程統計資訊
我正在嘗試分析 1000 多個儲存過程,我需要找出:
- 以秒為單位的經過時間(基於迭代次數的 AVG)
- CPU(基於迭代次數的 AVG)
- 邏輯讀取
起初我使用的是SQL Query Stress,但要花很多時間來測試執行每個儲存過程並分析測試參數。
所以我的問題是,有沒有更簡單的方法來獲得我需要的東西?
如果這些在實時數據庫中,那麼您可以使用 DMV
sys.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