【发布时间】:2018-06-06 12:11:50
【问题描述】:
在我的环境中,特定时区的 CPU 利用率很高。当我运行以下查询时,我知道 sql server 某某记录 id 消耗了最多的 CPU 时间。
DECLARE @ms_ticks_now BIGINT
SELECT @ms_ticks_now = ms_ticks
FROM sys.dm_os_sys_info;
SELECT record_id
,dateadd(ms, - 1 * (@ms_ticks_now - [timestamp]), GetDate()) AS EventTime
,SQLProcessUtilization
,SystemIdle
,100 - SystemIdle - SQLProcessUtilization AS OtherProcessUtilization
,TIMESTAMP
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
使用得到的结果中的RecordID,我们可以得到运行的查询文本。如果可以,请分享查询
谢谢 拉玛拉朱
【问题讨论】:
-
你所说的特定时区是什么意思,你指的是特定时间
-
时区不过是应用程序繁忙的营业时间。查询结果时间戳上方...对于运行查询的特定时间戳
标签: sql sql-server sql-server-2008 sql-server-2012 database-administration