共用方式為


sys.dm_exec_query_stats

更新: 2006 年 12 月 12 日

傳回快取查詢計劃的彙總效能統計資料。這個檢視會針對快取計劃內的每個查詢陳述式,各傳回一個資料列,而資料列的存留期會視計劃本身而定。從快取移除計劃時,對應的資料列也會從這個檢視中刪除。

ms189741.note(zh-tw,SQL.90).gif附註:
如果伺服器上目前有工作負載正在執行,sys.dm_exec_query_stats 的初始查詢所產生的結果可能並不精確。您可以重複執行查詢,以找出較精確的結果。
資料行名稱 資料類型 描述

sql_handle

varbinary(64)

這是指查詢所屬批次或預存程序的 Token。

sql_handle 再配合 statement_start_offsetstatement_end_offset,可藉由呼叫 sys.dm_exec_sql_text 動態管理函數來擷取查詢的 SQL 文字。

statement_start_offset

int

表示資料列於其批次或保存物件的文字中所描述之查詢的起始位置 (由 0 開始並以位元組為單位)。

statement_end_offset

int

表示資料列於其批次或保存物件的文字中所描述之查詢的結束位置 (由 0 開始並以位元組為單位)。-1 值代表批次的結尾。

plan_generation_num

bigint

可用於重新編譯之後區分計劃執行個體的序號。

plan_handle

varbinary(64)

指查詢所屬編譯計劃的 Token。此值可以傳遞至 sys.dm_exec_query_plan 動態管理函數,以取得查詢計劃。

creation_time

datetime

計劃的編譯時間。

last_execution_time

datetime

上次執行計劃的時間。

execution_count

bigint

計劃從上次編譯以來被執行的次數。

total_worker_time

bigint

這個計劃從編譯以來執行所耗用的 CPU 時間總量 (以毫秒為單位)。

last_worker_time

bigint

計劃上次執行所耗用的 CPU 時間 (以毫秒為單位)。

min_worker_time

bigint

這個計劃在單次執行期間曾耗用的最小 CPU 時間 (以毫秒為單位)。

max_worker_time

bigint

這個計劃在單次執行期間曾耗用的最大 CPU 時間 (以毫秒為單位)。

total_physical_reads

bigint

這個計劃在編譯以來執行所執行的實體讀取總數。

last_physical_reads

bigint

計劃上次執行所執行的實體讀取數。

min_physical_reads

bigint

這個計劃在單次期間曾執行的最小實體讀取數。

max_physical_reads

bigint

這個計劃在單次執行期間曾執行的最大實體讀取數。

total_logical_writes

bigint

這個計劃在編譯以來執行所執行的邏輯寫入總數。

last_logical_writes

bigint

計劃上次執行所執行的邏輯寫入數。

min_logical_writes

bigint

這個計劃在單次執行期間曾執行的最小邏輯寫入數。

max_logical_writes

bigint

這個計劃在單次執行期間曾執行的最大邏輯寫入數。

total_logical_reads

bigint

這個計劃在編譯以來執行所執行的邏輯讀取總數。

last_logical_reads

bigint

計劃上次執行所執行的邏輯讀取數。

min_logical_reads

bigint

這個計劃在單次執行期間曾執行的最小邏輯讀取數。

max_logical_reads

bigint

這個計劃在單次執行期間曾執行的最大邏輯讀取數。

total_clr_time

bigint

這個計劃從編譯以來執行的 Microsoft .NET Framework Common Language Runtime (CLR) 物件內部耗用的時間 (以毫秒為單位)。CLR 物件可以是預存程序、函數、觸發程序、類型和彙總。

last_clr_time

bigint

這個計劃上次執行期間於 .NET Framework CLR 物件內部執行所耗用的時間。CLR 物件可以是預存程序、函數、觸發程序、類型和彙總。

min_clr_time

bigint

這個計劃在單次執行期間於 .NET Framework CLR 物件內部耗用的最小時間 (以毫秒為單位)。CLR 物件可以是預存程序、函數、觸發程序、類型和彙總。

max_clr_time

bigint

這個計劃在單次執行期間於 .NET Framework CLR 內部耗用的最長時間 (以毫秒為單位)。CLR 物件可以是預存程序、函數、觸發程序、類型和彙總。

total_elapsed_time

bigint

這個計劃完成執行經歷的總時間 (以毫秒為單位)。

last_elapsed_time

bigint

這個計劃最近完成執行經歷的時間 (以毫秒為單位)。

min_elapsed_time

bigint

這個計劃完成執行經歷的最小時間 (以毫秒為單位)。

max_elapsed_time

bigint

這個計劃完成執行經歷的最大時間 (以毫秒為單位)。

權限

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

備註

完成查詢時,會更新檢視中的統計資料。

範例

下列範例會傳回平均 CLR 時間之前五項查詢的相關資訊。

SELECT TOP 5 creation_time, last_execution_time, total_clr_time,
    total_clr_time/execution_count AS [Avg CLR Time], last_clr_time,
    execution_count, 
    SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
    ((CASE statement_end_offset 
        WHEN -1 THEN DATALENGTH(st.text)
        ELSE qs.statement_end_offset END 
            - qs.statement_start_offset)/2) + 1) as statement_text
FROM sys.dm_exec_query_stats as qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as st
ORDER BY total_clr_time/execution_count DESC;
GO

請參閱

參考

動態管理檢視和函數
執行相關動態管理檢視和函數
sys.dm_exec_sql_text
sys.dm_exec_query_plan

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 12 月 12 日

變更的內容:
  • 更正 sql_handleplan_generation_numplan_handle 資料行的定義。

2006 年 4 月 14 日

變更的內容:
  • 更正範例。

2005 年 12 月 5 日

新增內容:
  • 新增附註,說明如果伺服器上目前有工作負載正在執行,必須多次查詢此動態管理檢視以取得更精確的結果。
  • 說明 statement_end_offsetstatement_start_offset 資料行是以零為基底,而 statement_end_offset 資料行中的 -1 值代表批次的結尾。