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 平台系统(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 上的 WMI 性能计数器类型 或 Windows Server 文档。
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 安装程序日志文件”。

cntr_type 值为 65792 的性能计数器仅显示最后一个观察到值的快照,而不是平均值。

列值272696320或272696576的性能计数器 cntr_type 显示样本间隔每秒完成的平均操作数。 此类型的计数器以系统时钟的刻度为单位测量时间。 例如,若要获取仅针对 Buffer Manager:Lazy writes/secBuffer Manager:Checkpoint pages/sec 计数器的最后一秒的类似快照的读取,必须比较两个相隔一秒的收集点之间的增量。

cntr_type 值537003264将子集的比率显示为百分比的性能计数器。 例如,计数器 Buffer Manager:Buffer cache hit ratio 比较缓存命中总数和缓存查找总数。 因此,若要仅获取最后一秒的类似快照的读数,必须比较当前值与两个集合点(分母)之间的增量(分母)。两个集合点之间相隔一秒。 相应的基值是列值1073939712的性能计数器Buffer Manager:Buffer cache hit ratio basecntr_type

列值1073874176显示平均处理项数的性能计数器 cntr_type ,作为处理的项目数与操作数的比率。 例如, Locks:Average Wait Time (ms) 计数器将每秒锁等待数与每秒锁请求进行比较,以显示导致等待的每个锁请求的平均等待时间(以毫秒为单位)。 因此,若要仅获取最后一秒的类似快照的读数,必须比较当前值与两个集合点(分母)之间的增量(分母)。两个集合点之间相隔一秒。 相应的基值是列值1073939712的性能计数器Locks:Average Wait Time Basecntr_type

数据库引擎重启后,DMV 中的数据 sys.dm_os_performance_counters 不会持久保存。 使用 sys.dm_os_sys_info 中的 sqlserver_start_time 列查找上次数据库引擎启动时间。

权限

对于 SQL Server 和 SQL 托管实例,需要 VIEW SERVER STATE 权限。

在SQL 数据库基本、S0S1 服务目标以及弹性池中的数据库、服务器管理员帐户、Microsoft Entra 管理员帐户或服务器角色的成员##MS_ServerStateReader##身份是必需的。 对于所有其他 SQL 数据库服务目标,需要数据库的 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)