sys.dm_os_performance_counters (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)
針對伺服器所維護的每個效能計數器,各傳回一個資料列。 如需每個性能計數器的相關信息,請參閱 使用 SQL Server 物件。
注意
若要從 Azure Synapse Analytics 或 Analytics Platform System (PDW) 呼叫此專案,請使用 名稱 sys.dm_pdw_nodes_os_performance_counters
。 Azure Synapse Analytics 的無伺服器 SQL 集區不支援此語法。
資料行名稱 | 資料類型 | 描述 |
---|---|---|
object_name | nchar(128) | 此計數器所屬的類別。 |
counter_name | nchar(128) | 計數器的名稱。 若要取得計數器的詳細資訊,這是從使用 SQL Server 物件中的計數器清單中選取的主題名稱。 |
instance_name | nchar(128) | 計數器之特定實例的名稱。 通常包含資料庫名稱。 |
cntr_value | bigint | 計數器的目前值。 注意: 對於每秒計數器,此值是累計的。 速率值必須藉由以離散時間間隔取樣值來計算。 任兩個連續樣本值之間的差異等於所使用時間間隔的速率。 |
cntr_type | int | Windows 效能架構所定義的計數器類型。 如需性能計數器類型的詳細資訊,請參閱 Docs 或 Windows Server 上的 WMI 性能計數器類型 檔。 |
pdw_node_id | int | 適用於:Azure Synapse Analytics、Analytics Platform System (PDW) 此散發節點的標識碼。 |
備註
如果 SQL Server 安裝實例無法顯示 Windows 作業系統的性能計數器,請使用下列 Transact-SQL 查詢來確認性能計數器已停用。
SELECT COUNT(*) FROM sys.dm_os_performance_counters;
如果傳回值為 0 個數據列,這表示性能計數器已經停用。 然後,您應該查看設定記錄檔並搜尋錯誤 3409, Reinstall sqlctr.ini for this instance, and ensure that the instance login account has correct registry permissions.
這表示性能計數器未啟用。 3409 錯誤之前的錯誤應該指出啟用性能計數器失敗的根本原因。 如需安裝記錄檔的詳細資訊,請參閱 檢視和讀取 SQL Server 安裝程式記錄檔。
數據行值為 65792 的性能計數器 cntr_type
只會顯示最後觀察到值的快照集,而非平均值。
數據行值272696320或272696576性能計數器 cntr_type
會顯示樣本間隔每秒鐘完成的平均作業數目。 此類型的計數器會以系統時鐘刻度為單位測量時間。 例如,若要只針對 Buffer Manager:Lazy writes/sec
和 Buffer Manager:Checkpoint pages/sec
計數器取得最後一秒類似快照集的讀取,您必須比較兩個集合點之間的差異,這兩個收集點相距一秒。
數據行值537003264將子集與設定百分比的比例顯示的性能計數器 cntr_type
。 例如, Buffer Manager:Buffer cache hit ratio
計數器會比較快取點擊總數和快取查閱總數。 因此,若要只取得最後一秒的類似快照集的讀取,您必須比較目前值與兩個集合點之間相隔一秒的基底值(分母)之間的差異。 對應的基底值是數據行值1073939712的性能計數器Buffer Manager:Buffer cache hit ratio base
cntr_type
。
數據行值1073874176性能計數器 cntr_type
會顯示平均處理的項目數目,以處理的專案與作業數目的比例。 例如,計數器會 Locks:Average Wait Time (ms)
比較每秒鎖定等候與每秒的鎖定要求,以顯示導致等候的每個鎖定要求的平均等候時間量(以毫秒為單位)。 因此,若要只取得最後一秒的類似快照集的讀取,您必須比較目前值與兩個集合點之間相隔一秒的基底值(分母)之間的差異。 對應的基底值是數據行值1073939712的性能計數器Locks:Average Wait Time Base
cntr_type
。
資料庫引擎重新啟動之後,DMV 中的數據 sys.dm_os_performance_counters
不會保存。 使用 sys.dm_os_sys_info 中的 sqlserver_start_time
資料行,來尋找最近一次資料庫引擎啟動時間。
權限
在 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 object_name, counter_name, instance_name, cntr_value, cntr_type
FROM sys.dm_os_performance_counters
WHERE cntr_type = 65792 OR cntr_type = 272696320 OR cntr_type = 537003264;
另請參閱
SQL Server 操作系統相關動態管理檢視 (Transact-SQL)
sys.sysperfinfo (Transact-SQL)
sys.dm_os_sys_info (Transact-SQL)