如何检查SQL Server CPU瓶颈

系统 1785 0

--检测CPU压力的一个方法是计算运行状态下的工作进程数量,
--通过执行如下的DMV查询可以得到这个信息

      
SELECT COUNT ( * ) AS workers_waiting_for_cpu,t2.scheduler_id
FROM sys.dm_os_workers AS t1, sys.dm_os_schedulers AS t2
WHERE t1.state = ' RUNNABLE ' AND
t1.scheduler_address
= t2.scheduler_address AND
t2.scheduler_id
< 255
GROUP BY t2.scheduler_id

--也可以执行如下的查询得到工作进程在可运行状态下花费的时间

SELECT SUM(signal_wait_time_ms) FROM sys.dm_os_wait_stats

--下面是一个DMV查询,它可以用来找出每次执行中占用CPU最多的钱10为查询,
--也列出了SQL语句的查询计划及计划被执行的次数。如果一个查询大家虽高,
--但执行次数少,那也可以采纳。

      
SELECT TOP 10
total_worker_time
/ execution_count AS avg_cpu_cost, plan_handle,execution_count,
(
SELECT SUBSTRING ( text ,statement_start_offset / 2 + 1 ,
(
CASE WHEN statement_end_offset =- 1
THEN LEN ( CONVERT ( NVARCHAR ( max ), text )) * 2
ELSE statement_end_offset
END - statement_start_offset) / 2 )
FROM sys.dm_exec_sql_text(sql_handle)
)
AS query_text
FROM sys.dm_exec_query_stats
ORDER BY [ avg_cpu_cost ] DESC

--以上DMV只显示当前被缓存的查询合计统计信息
--为了找出工作负荷中运行最频繁的查询,就需要执行下面的DMV查询。

      
SELECT TOP 10 total_worker_time ,plan_handle,execution_count,
(
SELECT SUBSTRING ( text ,statement_start_offset / 2 + 1 ,
(
CASE WHEN statement_end_offset =- 1
THEN LEN ( CONVERT ( NVARCHAR ( max ), text )) * 2
ELSE statement_end_offset
END - statement_start_offset) / 2 )
FROM sys.dm_exec_sql_text(sql_handle)
)
AS query_text
FROM sys.dm_exec_query_stats ORDER BY execution_count

--SQL Server在优化查询计划上花费的时间可以用下面的DMV查询

      
SELECT * FROM sys.dm_exec_query_optimizer_info WHERE counter = ' optimizations '
UNION
SELECT * FROM sys.dm_exec_query_optimizer_info WHERE counter = ' elapsed time '


SELECT TOP 10 plan_generation_num ,plan_handle,execution_count,
(
SELECT SUBSTRING ( text ,statement_start_offset / 2 + 1 ,
(
CASE WHEN statement_end_offset =- 1
THEN LEN ( CONVERT ( NVARCHAR ( max ), text )) * 2
ELSE statement_end_offset
END - statement_start_offset) / 2 )
FROM sys.dm_exec_sql_text(sql_handle)
)
AS query_text
FROM sys.dm_exec_query_stats
WHERE plan_generation_num > 1
ORDER BY execution_count


 
 --检查高速缓存内存

      
DBCC memorystatus


本文来自CSDN博客,转载请标明出处: http://blog.csdn.net/dz45693/archive/2010/01/27/5260697.aspx

如何检查SQL Server CPU瓶颈


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论