看到没有,已经没有eventlog表的表扫描了。我们再来比较前后的CPU:

很明显,这个count的优化,对萌芽top的语句依然的生效的。今朝为止,这两个萌芽用上去之后,再也没有CPU过高的现象了。
其他优化手段
- 经由过程办事端的推送,有事宜告警或者解除过来才萌芽数据库。
- 优化上述萌芽语句,比如count(*)可以用count(0)替代
- 优化语句,先萌芽出所有的MgrObjId,然后在做连接
- 为治理对象、地点表等增长索引
- 添加了索引之后,事宜表的插入就会慢,可以或许再怎么竽暌古化呢?可以分区建立索引,天天不忙的时刻,把新的记录移入到建好索引的分区
当然,这些优化的手段是后续的工作了,我要做的工作根本完了。
总结
- 办事器CPU过高,起首查看体系过程,肯定激发CPU过高的过程
- 经由过程SQLServer Profiler可以或许随便马虎监控到哪些SQL语句履行时光过长,消费最多的CPU
- 经由过程SQL语句是可以查看每条SQL语句消费的CPU是若干
- 导致CPU高的都是进行大年夜量计算的语句:包含内存排序、表扫描、编译筹划等。
- 如不雅应用Top刷选前面几条语句,则尽量为Order By子句建立索引,如许可以削减对所有的刷选结不雅进行排序
- 应用Count萌芽记录数时,尽量经由过程为where字句的相干字段建立索引以削减表扫描。如不雅多个表进行join操作,则把相干的表连接字段建立在包含索引中
- 经由过程办事端通知的方法,削减SQL语句的萌芽
- 经由过程表分区,尽量降低因为添加索引而导致表插劝道稞的影响
参考文┞仿
- SQLSERVR语句 in和exists哪个效力高本人测试证实
- Sql Server Cpu 100% 的常见原因及优化
- SQLSERVER排查CPU占用高的情况
- 人人都是 DBA(XII)萌芽信息收集脚本汇编
最后,感激博客园DBA桦仔的热情指导。
【编辑推荐】
- SQL Server 与 MySQL,关系型数据库范畴的“绝代双骄”
- SQL Server进级,真如想象中那样简单?
- 用于处理SQL Server安装后期问题的最佳实践
- 专家眷你如安在SQL Server中经由过程PowerUpSQL获得Windows主动登录暗码
- 若何为SQL Server 2008数据库分派用户
推荐阅读
我总感到 PHP 的开辟者们并没有对 PHP 的质量有所寻求,可能是因为 PHP 的机制问题吧,让大年夜部分的开辟者总认为浏览器拜访就没有问题,所以很多时刻,做 PHP 开辟的,就没有单位测试的>>>详细阅读
本文标题:程序猿是如何解决SQL Server占CPU100%的
地址:http://www.17bianji.com/lsqh/34647.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示