码迷,mamicode.com
首页 > 数据库 > 详细

sqlserver 索引优化 CPU占用过高 执行分析 服务器检查

时间:2019-04-13 01:00:28      阅读:327      评论:0      收藏:0      [点我收藏+]

标签:监视器   数据库   mis   tail   sys   weight   管理公司   字段   好的   

原文:sqlserver 索引优化 CPU占用过高 执行分析 服务器检查

1. 管理公司一台服务器,上面放的东西挺多的.有一天有个哥们告诉我现在程序卡的厉害.我给他说,是时候读点优化的书了.别一天到晚没个正形,现在写的程序卡的跑不动.他说我本地

是好好的,跑的很快.我说别扯那么多没用的,服务器不比你的本子强得多.待洒家上去看看.不看不知道一看吓一跳,CPU占用在95上下.开个程序是不卡,可整点有些时间是卡的一匹.这就令人很难受了.

本来服务器上也没有什么,就一个网站和几个数据库.那一个个分析吧,打开任务管理器和资源监视器,CPU占用达到93,这个还是普通,有时间到98 99.

技术图片

2. 这不要了亲命了吗,打开资源监视器看看什么占用的最多吧.一看果然是数据库占用最多,数据服务占用过大

 技术图片

这个为了重现占用过高,我把自己建的索引都删除掉后,sqlservr.exe立马成为,人群中最靓的仔.占用独占大头.看来只有试出来绝招了.作为面向浏览器编程的程序员,首先搜索一下.网上还真有建设性意见.都说是索引缺失

还贴心的给了一段查询索引的语句.把查出的结果做非聚集索引,就可以了.贴上代码.

SELECT  TOP 10 
        [Total Cost]  = ROUND(avg_total_user_cost * avg_user_impact * (user_seeks + user_scans),0) 
        , avg_user_impact
        , TableName = statement
        , [EqualityUsage] = equality_columns 
        , [InequalityUsage] = inequality_columns
        , [Include Cloumns] = included_columns
FROM        sys.dm_db_missing_index_groups g 
INNER JOIN    sys.dm_db_missing_index_group_stats s 
       ON s.group_handle = g.index_group_handle 
INNER JOIN    sys.dm_db_missing_index_details d 
       ON d.index_handle = g.index_handle
ORDER BY [Total Cost] DESC;

 

微软名字起的也很直白,直接叫missing_index,就是sqlserver 经过分析认为这些字段处理和查询是最耗时的,最好在 EqualityUsage上包含的字段上加个非聚集索引.前几个用时是后几名的好几个数量级.

加了索引立马飞起.

技术图片

现在优化过,耗时都在一个数量级.如果没有优化是不同的几个数量级.

 

sqlserver 索引优化 CPU占用过高 执行分析 服务器检查

标签:监视器   数据库   mis   tail   sys   weight   管理公司   字段   好的   

原文地址:https://www.cnblogs.com/lonelyxmas/p/10699334.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!