我在查詢資料庫主機的CPU使用狀況, 一是用語法去資料庫查詢, 二是查看工作管理員的CPU效能, 發現語法所查到的SQL Server Process CPU Utilization其值, 與工作管理員的CPU效能有所差異, SQL Server Process CPU Utilization常態性有明顯差異(偏高), 這是一台實體主機的資料庫, 若在VM上所建的其他資料庫就不會有這個情形, 懇請各位先進指點一下, 感恩。
SQL Server Process CPU Utilization System Idle Process Other Process CPU Utilization Event Time
15 94 -9 2022-11-22 11:51:48.487
16 95 -11 2022-11-22 11:50:48.397
16 94 -10 2022-11-22 11:49:48.323
16 94 -10 2022-11-22 11:48:48.233
16 95 -11 2022-11-22 11:47:48.130
15 94 -9 2022-11-22 11:46:48.043
DECLARE @ts_now2 BIGINT
SELECT @ts_now2 = cpu_ticks / (cpu_ticks / ms_ticks)
FROM sys.dm_os_sys_info
SELECT TOP (1000) SQLProcessUtilization AS [SQL Server Process CPU Utilization]
,SystemIdle AS [System Idle Process]
,100 - SystemIdle - SQLProcessUtilization AS [Other Process CPU Utilization]
,Dateadd(ms, - 1 * (@ts_now2 - [timestamp]), Getdate()) AS [Event Time]
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 '%<SystemHealth>%'
) AS x
) AS y
ORDER BY record_id DESC;
select scheduler_id, cpu_id, status, is_online
from sys.dm_os_schedulers
where status = 'VISIBLE ONLINE'