监控消耗CPU最多的语句

--1 通用版(适用于2005,2008)
SELECT TOP 20
CAST(qs.total_elapsed_time / 1000000.0 AS DECIMAL(28, 2))
AS [Total Duration (s)]
, CAST(qs.total_worker_time * 100.0 / qs.total_elapsed_time
AS DECIMAL(28, 2)) AS [% CPU]
, CAST((qs.total_elapsed_time - qs.total_worker_time)* 100.0 /
qs.total_elapsed_time AS DECIMAL(28, 2)) AS [% Waiting]
, qs.execution_count
, CAST(qs.total_elapsed_time / 1000000.0 / qs.execution_count
AS DECIMAL(28, 2)) AS [Average Duration (s)]
, SUBSTRING (qt.text,(qs.statement_start_offset/2) + 1,
((CASE WHEN qs.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2) + 1) AS [Individual Query]
, qt.text AS [Parent Query]
, DB_NAME(qt.dbid) AS DatabaseName
, qp.query_plan
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
WHERE qs.total_elapsed_time > 0
ORDER BY qs.total_elapsed_time DESC


-- SQL CPU 100%问题,启动以来累计使用CPU资源最多的语句(作用同上)
select
    highest_cpu_queries.*,q.dbid,
    q.objectid, q.number, q.encrypted, q.[text]
from
    (select top 50 qs.*
    from sys.dm_exec_query_stats qs
    order by qs.total_worker_time desc) as highest_cpu_queries
    cross apply sys.dm_exec_sql_text(plan_handle) as q
order by highest_cpu_queries.total_worker_time desc


--2 查看正在运行的语句,消耗时长及语句相关信息(适用于2008)
 SELECT TOP (50) start_time = CONVERT(datetime2(0), R.start_time), run_time = datediff(mm,R.start_time, GETDATE()),
         R.session_id, blocking_id = R.blocking_session_id,
         S.[host_name], S.[program_name], S.login_name, database_name = DB_NAME(R.database_id),
         [object_name] = OBJECT_SCHEMA_NAME(T.objectid, R.database_id) + '.' + OBJECT_NAME(T.objectid, R.database_id),
         T.[text], R.command, R.[status], estimated_completion_time = R.estimated_completion_time ,
         wait_time = R.wait_time , R.last_wait_type, cpu_time = R.cpu_time/1000 ,
         total_elapsed_time = R.total_elapsed_time / 1000, R.reads, R.writes, R.logical_reads,
         R.open_transaction_count, R.open_resultset_count, R.percent_complete, R.database_id,
         [object_id] = T.objectid, S.host_process_id, S.client_interface_name, R.[sql_handle], R.plan_handle
    FROM sys.dm_exec_requests R
         CROSS APPLY sys.dm_exec_sql_text(R.[sql_handle]) T
         LEFT JOIN sys.dm_exec_sessions S ON S.session_id = R.session_id
    ORDER BY R.start_time


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值