sys.dm_exec_procedure_stats (Transact-SQL)

傳回快取預存程序的彙總效能統計資料。 此檢視會針對每個快取預存程序計畫傳回一個資料列,而且資料列的存留期間與預存程序維持快取狀態的時間一樣長。 從快取中移除預存程序時,對應的資料列也會從這個檢視中刪除。 此時,就會引發效能統計資料 SQL 追蹤事件 (與 sys.dm_exec_query_stats 很相似)。

在 Windows Azure SQL 資料庫,動態管理檢視不可以公開可能會影響資料庫內含項目的資訊或公開有關使用者可存取之其他資料庫的資訊。 為了避免公開此資訊,包含不屬於連接租用戶之資料的每個資料列都會被篩選出來。

注意

如果伺服器上目前有工作負載正在執行,sys.dm_exec_procedure_stats 的初始查詢所產生的結果可能並不精確。您可以重複執行查詢,以找出較精確的結果。

適用於:SQL Server (SQL Server 2008 至目前版本)、Windows Azure SQL 資料庫 (初始版本至目前版本)。

資料行名稱

資料類型

描述

database_id

int

預存程序所在的資料庫識別碼。

object_id

int

預存程序的物件識別碼。

型別

char(2)

物件的類型:

P = SQL 預存程序

PC = 組件 (CLR) 預存程序

X = 擴充預存程序

type_desc

nvarchar(60)

物件類型的描述:

SQL_STORED_PROCEDURE

CLR_STORED_PROCEDURE

EXTENDED_STORED_PROCEDURE

sql_handle

varbinary(64)

這可用來與 sys.dm_exec_query_stats 中從這個預存程序內部執行的查詢相互關聯。

plan_handle

varbinary(64)

記憶體中計畫的識別碼。 這個識別碼是暫時性的,只有當計畫留在快取時才會保留。 這個值可以與 sys.dm_exec_cached_plans 動態管理檢視一起使用。

當原生編譯的預存程序查詢記憶體最佳化的資料表時,一律為 0x000。

cached_time

datetime

在快取中加入預存程序的時間。

last_execution_time

datetime

上次執行預存程序的時間。

execution_count

bigint

預存程序從上次編譯以來被執行的次數。

total_worker_time

bigint

這個預存程序從編譯以來執行所耗用的 CPU 時間總量 (以微秒為單位)。

如果原生編譯預存程序執行數次的時間都少於 1 毫秒,total_worker_time 可能就不準確。

last_worker_time

bigint

預存程序上次執行所耗用的 CPU 時間 (以微秒為單位)。 1

min_worker_time

bigint

這個預存程序在單次執行期間曾耗用的最小 CPU 時間 (以微秒為單位)。 1

max_worker_time

bigint

這個預存程序在單次執行期間曾耗用的最大 CPU 時間 (以微秒為單位)。 1

total_physical_reads

bigint

這個預存程序在編譯以來執行所執行的實體讀取總數。

查詢記憶體最佳化的資料表時一律為 0。

last_physical_reads

bigint

預存程序上次執行所執行的實體讀取數。

查詢記憶體最佳化的資料表時一律為 0。

min_physical_reads

bigint

這個預存程序在單次期間曾執行的最小實體讀取數。

查詢記憶體最佳化的資料表時一律為 0。

max_physical_reads

bigint

這個預存程序在單次期間曾執行的最大實體讀取數。

查詢記憶體最佳化的資料表時一律為 0。

total_logical_writes

bigint

這個預存程序在編譯以來執行所執行的邏輯寫入總數。

查詢記憶體最佳化的資料表時一律為 0。

last_logical_writes

bigint

上次執行計畫時修改的緩衝集區頁數。 如果已修改頁面,則不會計算寫入。

查詢記憶體最佳化的資料表時一律為 0。

min_logical_writes

bigint

這個預存程序在單次執行期間曾執行的最小邏輯寫入數。

查詢記憶體最佳化的資料表時一律為 0。

max_logical_writes

bigint

這個預存程序在單次執行期間曾執行的最大邏輯寫入數。

查詢記憶體最佳化的資料表時一律為 0。

total_logical_reads

bigint

這個預存程序在編譯以來執行所執行的邏輯讀取總數。

查詢記憶體最佳化的資料表時一律為 0。

last_logical_reads

bigint

預存程序上次執行所執行的邏輯讀取數。

查詢記憶體最佳化的資料表時一律為 0。

min_logical_reads

bigint

這個預存程序在單次期間曾執行的最小邏輯讀取數。

查詢記憶體最佳化的資料表時一律為 0。

max_logical_reads

bigint

這個預存程序在單次期間曾執行的最大邏輯讀取數。

查詢記憶體最佳化的資料表時一律為 0。

total_elapsed_time

bigint

這個預存程序完成執行經歷的總時間 (以微秒為單位)。

last_elapsed_time

bigint

這個預存程序最近完成執行經歷的時間 (以微秒為單位)。

min_elapsed_time

bigint

這個預存程序完成執行經歷的最小時間 (以微秒為單位)。

max_elapsed_time

bigint

這個預存程序完成執行經歷的最大時間 (以微秒為單位)。

1 如果統計資料集合啟用的對象是原生編譯的預存程序,則收集的工作者時間單位為毫秒。 若查詢的執行時間少於一毫秒,其值將會是 0。

權限

需要伺服器的 VIEW SERVER STATE 權限。

備註

預存程序執行完成時,就會更新檢視中的統計資料。

範例

下列範例會傳回平均經過時間所識別之前 10 項預存程序的相關資訊。

SELECT TOP 10 d.object_id, d.database_id, OBJECT_NAME(object_id, database_id) 'proc name', 
    d.cached_time, d.last_execution_time, d.total_elapsed_time,
    d.total_elapsed_time/d.execution_count AS [avg_elapsed_time],
    d.last_elapsed_time, d.execution_count
FROM sys.dm_exec_procedure_stats AS d
ORDER BY [total_worker_time] DESC;

請參閱

參考

執行相關的動態管理檢視和函數 (Transact-SQL)

sys.dm_exec_sql_text (Transact-SQL)

sys.dm_exec_query_stats (Transact-SQL)

動態管理檢視和函數 (Transact-SQL)

sys.dm_exec_trigger_stats (Transact-SQL)