sys.dm_exec_trigger_stats (Transact-SQL)
適用於:SQL ServerAzure SQL 資料庫 Azure SQL 受控執行個體
傳回快取觸發程式的匯總效能統計數據。 檢視會針對每個觸發程式包含一個數據列,而且只要觸發程式保持快取,數據列的存留期就會存在。 從快取移除觸發程式時,會從這個檢視中排除對應的數據列。 此時,就會引發效能統計資料 SQL 追蹤事件 (與 sys.dm_exec_query_stats 很相似)。
資料行名稱 | 資料類型 | 描述 |
---|---|---|
database_id | int | 觸發程式所在的資料庫標識碼。 在 Azure SQL 資料庫中,這些值在單一資料庫或彈性集區內是唯一的,但在邏輯伺服器內則不是唯一的。 |
object_id | int | 觸發程式的物件識別碼。 |
type | char(2) | 物件的類型: TA = 元件 (CLR) 觸發程式 TR = SQL 觸發程式 |
Type_desc | nvarchar(60) | 物件類型的描述: CLR_TRIGGER SQL_TRIGGER |
sql_handle | varbinary(64) | 這可用來與從此觸發程式內執行之sys.dm_exec_query_stats中的查詢相互關聯。 |
plan_handle | varbinary(64) | 記憶體中計畫的識別碼。 這個識別碼是暫時性的,只有當計畫留在快取時才會保留。 這個值可以與 sys.dm_exec_cached_plans 動態管理檢視一起使用。 |
cached_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_elapsed_time | bigint | 完成此觸發程式的執行時間總計,以微秒為單位。 |
last_elapsed_time | bigint | 經過的時間,以微秒為單位,針對此觸發程式最近完成的執行。 |
min_elapsed_time | bigint | 對於此觸發程式的任何已完成執行,以微秒為單位的最小耗用時間。 |
max_elapsed_time | bigint | 此觸發程式的任何完成執行時間上限,以微秒為單位。 |
total_spills | bigint | 執行此觸發程序之後,溢出的頁面總數。 適用於:從 SQL Server 2017 (14.x) CU3 開始 |
last_spills | bigint | 上次執行觸發程式時溢出的頁面數目。 適用於:從 SQL Server 2017 (14.x) CU3 開始 |
min_spills | bigint | 此觸發程式在單一執行期間已溢出的最小頁數。 適用於:從 SQL Server 2017 (14.x) CU3 開始 |
max_spills | bigint | 此觸發程式在單一執行期間已溢出的最大頁數。 適用於:從 SQL Server 2017 (14.x) CU3 開始 |
total_page_server_reads | bigint | 執行此觸發程式後執行的頁面伺服器讀取總數。 適用於:Azure SQL 資料庫 超大規模資料庫 |
last_page_server_reads | bigint | 上次執行觸發程式時所執行的頁面伺服器讀取數目。 適用於:Azure SQL 資料庫 超大規模資料庫 |
min_page_server_reads | bigint | 此觸發程式在單一執行期間執行的頁面伺服器讀取數目下限。 適用於:Azure SQL 資料庫 超大規模資料庫 |
max_page_server_reads | bigint | 此觸發程式在單一執行期間執行的頁面伺服器讀取數目上限。 適用於:Azure SQL 資料庫 超大規模資料庫 |
備註
在 SQL 資料庫 中,動態管理檢視無法公開會影響資料庫內含專案的資訊,或公開用戶可存取之其他資料庫的相關信息。 為了避免公開此資訊,系統會篩選出包含不屬於連線租用戶之資料的每個資料列。
檢視中的統計數據會在查詢完成時更新。
權限
在 SQL Server 和 SQL 受控執行個體上,需要 VIEW SERVER STATE
權限。
在 SQL 資料庫 基本、S0 和 S1 服務目標上,以及彈性集區中的資料庫,需要伺服器管理員帳戶、Microsoft Entra 系統管理員帳戶,或伺服器角色的成員##MS_ServerStateReader##
資格。 在所有其他 SQL Database 服務目標上,需要資料庫的 VIEW DATABASE STATE
權限或 ##MS_ServerStateReader##
伺服器角色的成員資格。
SQL Server 2022 及更新版本的權限
需要伺服器上的 VIEW SERVER PERFORMANCE STATE 權限。
範例
下列範例會傳回平均經過時間所識別的前五個觸發程式相關信息。
SELECT TOP 5 d.object_id, d.database_id, DB_NAME(database_id) AS 'database_name',
OBJECT_NAME(object_id, database_id) AS 'trigger_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_trigger_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)
sys.dm_exec_procedure_stats (Transact-SQL)
sys.dm_exec_cached_plans (Transact-SQL)