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/sec
和 Buffer Manager:Checkpoint pages/sec
计数器的最后一秒的类似快照的读取,必须比较两个相隔一秒的收集点之间的增量。
列 cntr_type
值537003264将子集的比率显示为百分比的性能计数器。 例如,计数器 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 数据库服务目标,需要数据库的 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)