Sql server 是否更改sys.dm_os_ring_buffers注册的记录间隔?

Sql server 是否更改sys.dm_os_ring_buffers注册的记录间隔?,sql-server,Sql Server,我想得到任务管理器中显示的当前CPU百分比,我在中找到了这个查询,它给出了我想要的CPU总使用率 查询: SELECT @ts_now = cpu_ticks / CONVERT(FLOAT, ms_ticks) FROM sys.dm_os_sys_info SELECT top 30 record_id, DATEADD(ms, -1 * (@ts_now - [timestamp]), GETDATE()) AS EventTime,

我想得到任务管理器中显示的当前CPU百分比,我在中找到了这个查询,它给出了我想要的CPU总使用率

查询:

    SELECT @ts_now = cpu_ticks / CONVERT(FLOAT, ms_ticks) FROM sys.dm_os_sys_info

    SELECT top 30 record_id,
            DATEADD(ms, -1 * (@ts_now - [timestamp]), GETDATE()) AS EventTime, 
            SQLProcessUtilization,
            SystemIdle,
            100 - SystemIdle - SQLProcessUtilization AS OtherProcessUtilization,
            100 - SystemIdle AS TotalCPU
    FROM (
            SELECT 
                    record.value('(./Record/@id)[1]', 'int') AS record_id,
                    record.value('(./Record/SchedulerMonitorEvent/SystemHealth/SystemIdle)[1]', 'int') AS SystemIdle,
                    record.value('(./Record/SchedulerMonitorEvent/SystemHealth/ProcessUtilization)[1]', 'int') AS SQLProcessUtilization,
                    TIMESTAMP
            FROM (
                    SELECT TIMESTAMP, CONVERT(XML, record) AS record 
                    FROM sys.dm_os_ring_buffers 
                    WHERE ring_buffer_type = N'RING_BUFFER_SCHEDULER_MONITOR'
                    AND record LIKE '% %') AS x
            ) AS y 
    ORDER BY record_id DESC 
输出:


问题是这只会每分钟刷新一次,执行查询时我需要当前的CPU。是否有方法更改生成的记录的间隔?如果没有,我是否可以触发新记录或其他方法?

您可以从DMV获取CPU利用率的瞬时值,该值公开原始性能计数器数据。请注意,由于这里的性能计数器是原始的,因此您必须根据数据执行采样或计算

例如:

select  100.* c.cntr_value /  base.cntr_value cpu_usage_percentage
from sys.dm_os_performance_counters c
join sys.dm_os_performance_counters base
  on c.object_name = base.object_name
 and c.instance_name = base.instance_name 
where c.counter_name = 'CPU usage %'
and base.counter_name = 'CPU usage % base'
and c.object_name = 'SQLServer:Resource Pool Stats'
and c.instance_name = 'default'