cpu占用过高怎么办 cpu占用过高怎么办

来自:马非码 - 博客园  
文章目录  
遇到的问题  
使用SQLServer Profiler监控数据库  
SQL1:查找最新的30条告警事件  
SQL2:获取当前的总报警记录数  
有哪些SQL语句会导致CPU过高?  
查看SQL的查询计划  
选择top记录时,尽量为order子句的字段建立索引  
查看SQL语句CPU高的语句  
通过建立相关索引来减少表扫描  
其他优化手段  
总结  
遇到的问题  
使用SQLServer Profiler监控数据库  
SQL1:查找最新的30条告警事件  
SQL2:获取当前的总报警记录数  
有哪些SQL语句会导致CPU过高?  
查看SQL的查询计划  
选择top记录时,尽量为order子句的字段建立索引  
查看SQL语句CPU高的语句  
通过建立相关索引来减少表扫描  
其他优化手段  
总结  
遇到的问题  
使用SQLServer Profiler监控数据库  
SQL1:查找最新的30条告警事件  
SQL2:获取当前的总报警记录数  
展开全文  
SQL1:查找最新的30条告警事件  
SQL2:获取当前的总报警记录数  
有哪些SQL语句会导致CPU过高?  
查看SQL的查询计划  
选择top记录时,尽量为order子句的字段建立索引  
查看SQL语句CPU高的语句  
通过建立相关索引来减少表扫描  
选择top记录时,尽量为order子句的字段建立索引  
查看SQL语句CPU高的语句  
通过建立相关索引来减少表扫描  
其他优化手段  
总结  
遇到的问题  
有同事反应服务器CPU过高,一看截图基本都是100%了,my god,这可是大问题,赶紧先看看 。  
让同事查看系统进程,发现是SQLServer的CPU占用比较高 。首先想到的是不是报表生成的时候高,因为这块之前出现过问题,关掉服务程序,还是高 。难道是客户端程序引发的?但是这么多的客户端连接,难不成每个都叫人关闭,很简单,把网络断开即可 。网络断开之后,CPU立马下降 。那么问题到底在哪里呢,是时候祭出我们的利器了——SQLServer Profiler 。  
使用SQLServer Profiler监控数据库  

cpu占用过高怎么办 cpu占用过高怎么办
  
文章插图  
让同事使用SQLProfiler监控了大概20分钟左右,然后保存为跟踪文件*.rtc 。  
我们来看看到底是哪句SQL有问题:  
SQL1:查找最新的30条告警事件  
selecttop30a.orderno,a.AgentBm,a.AlarmTime,a.RemoveTime,c.NameasAddrName,b.NameasMgrObjName,a.Ch,a.Value,a.Content,a.Level  
,ag.NameasAgentServerName,a.EventBm,a.MgrObjId,a.Id,a.Cfmoper,a.Cfm,a.Cfmtime,a.State,a.IgnoreStartTime,a.IgnoreEndTime  
,a.OpUserId,d.NameasMgrObjTypeName,l.UserNameasuserName,f.NameasAddrName2  
fromeventlogasaleft joinmgrobjasbona.MgrObjId=b.Idanda.AgentBm=b.AgentBm  
left joinaddrnodeasconb.AddrId=c.Idleft joinmgrobjtypeasdonb.MgrObjTypeId=d.Id  
left joineventdiraseona.EventBm=e.Bmleft joinagentserverasagona.AgentBm=ag.AgentBm  
left joinloginUseraslona.cfmoper=l.loginGuidleft joinaddrnodeasfonag.AddrId=f.Id  
where((MgrObjIdin(  
selectIdfromMgrObj  
whereAddrIdin('','02100000','02113000','02113001','02113002','02113003','02113004'  
,'02113005','02113006','02113007','02113008','02113009','02113010','02113011','02113012'  
,'02113013','02113014','02113015','02113016','02113017','02113018','02113019','02113020'  
,'02113021','02113022','02113023','02113024','02113025','02113026')))  
or(mgrobjidin('00000000-0000-0000-0000-000000000000','00000000-0000-0000-0000-000000000000'  
,'00000000-0000-0000-0000-000000000000','11111111-1111-1111-1111-111111111111'  
,'11111111-1111-1111-1111-111111111111'))  
)  
order byalarmtimeDESC  
selecttop30a.orderno,a.AgentBm,a.AlarmTime,a.RemoveTime,c.NameasAddrName,b.NameasMgrObjName,a.Ch,a.Value,a.Content,a.Level


特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。