SQL Server性能问题

我有一个SQL Server框,其CPU使用率为100%。 我应该采取什么步骤,而不是看长时间运行的查询来确定是什么原因造成的?

检查活动监视器以确保您没有任何大的回滚/事务正在进行。

其次,运行SQL Server Profiler来查find底是什么东西撞到了你的盒子。

第三,检查分配给SQL Server的内存,因为阻塞的内存导致页面文件使用率boostCPU消耗。

第四,检查确认服务器上没有另一个正在运行的进程正在咀嚼内存或CPU。

之后,如果有长时间运行的查询命中,只需执行一些查询优化(索引等)。

Perfmon – >每个进程的CPU消耗,确保SQL是罪犯

Perfmon – >每秒批处理和编译,以查看是否有一些令人讨厌的查询或大量的小问题。

一般来说(没有看过你的设置),如果你有很多的CPU动作,而不是很多的磁盘活动,那么这意味着SQL Server正在使用的数据适合内存但没有有效地索引。 这意味着查询需要花费大量的CPU周期来扫描内存中的数据页面,因为简化和加速该过程的索引结构不见了。 如果数据较大,或RAM较小,则会将其本身performance为I / O瓶颈。 但是有了大量的RAM和更小的数据集,您将会遇到CPU瓶颈。

所以下一站是查询失踪索引DMV,你可能会发现很多高成本的查询,寻求更好的索引。 尽pipe如此,我们仍然可以select性地实施。

那么,它在做什么?

如果它正在做一个select,你需要添加索引。 或从你的连接中删除笛卡尔。

如果是添加索引,则需要喝杯咖啡,然后等待。 ;)

如果正在进行更新,请检查where子句是否只包含应更新的行。

如果它正在执行插入(或更新),请检查讨厌的触发器,或者索引太多,或者(如果您正在更新密钥)聚集索引。

或者,可能需要执行提交或转储日志。