2013-03-31 59 views
2

我完成了我的項目,使用了很多程序,現在我找到了找到最常用的程序的工作,並且有平均執行時間。如何知道我的數據庫中最常用的過程?

這樣我就知道我需要先調整哪些程序?

有沒有辦法獲得特定數據庫的過程執行歷史記錄?

+1

sys.dm_exec_procedure_stats? –

回答

5

我相信你可以使用sys.dm_exec_query_stats動態管理視圖。該視圖中有兩列稱爲execution_count和total_worker_time,可以幫助您。

execution_count給出的時間,因爲它被重新編譯最後一次有問題的存儲過程執行的總數。

total_worker_time給出該花在執行,因爲它被重新編譯最後一次此存儲過程毫秒的總CPU時間。

這裏是一個MSDN鏈接: http://msdn.microsoft.com/en-us/library/ms189741.aspx

+0

將dm_exec_query_stats中的行與存儲過程關聯起來相當困難。不知道這沒有鏈接是多麼有用。 – Andomar

+0

@Andomar如果可以使用2008+'sys.dm_exec_procedure_stats'。 –

-1

我想你想檢查SQL Server Profiler爲此。 您可以在MSDN和其他地方查看詳細信息。

但是,在生產服務器中使用它之前,需要注意的是: Profiler adds too much overhead to production server。因此,首先檢查您的網站何時沒有點擊,然後繼續。

-1

這就是SQL Server Profiler是。有了它,你可以跟蹤查詢運行次數,執行時間等

+0

感謝您的回覆,但要使用Profiler來獲得執行過程的最後5天的平均執行時間並不容易 –

+0

我明白了。對於這個特殊情況,邁克爾的答案應該是有幫助的。如果你的目標是做很多調整,那麼profiler對於識別什麼是緩慢的和爲什麼是很好的。 –

1

您可以使用dm_exec_cached_plans尋找那些已經被編譯成查詢計劃的存儲過程。該功能dm_exec_query_plan可用於檢索object id的計劃,這反過來又可以翻譯成程序的名稱:

select object_name(qp.objectid) 
,  cp.usecounts 
from sys.dm_exec_cached_plans cp 
cross apply 
     sys.dm_exec_query_plan(cp.plan_handle) qp 
where cp.objtype = 'Proc' 
order by 
     cp.usecounts desc 
相關問題