SQL Server 100%CPU利用率 - 一个数据库显示高CPU使用率

时间:2012-09-17 12:04:10

标签: sql-server sql-server-2005 cpu-usage sql-server-performance

我们有一个SQL服务器,大约有40个不同的(每个大约1-5GB)数据库。该服务器是一个8核2.3G CPU,32G的RAM。 27Gig固定到SQL Server。 CPU使用率总是接近100%,内存消耗约为95%。这里的问题是CPU不断接近100%,并试图了解原因。

我已经通过使用 - this脚本运行初步检查以查看哪个数据库有助于高CPU,但我无法详细说明真正消耗CPU的情况。最高查询(来自所有数据库)只需要大约4秒钟即可完成。 IO也不是瓶颈。

记忆会成为罪魁祸首吗?我检查了内存分裂,OBJECT CACHE占用了大约80%的内存分配(27G)到SQL Server。如果涉及到很多SP,我希望这是正常的。运行探查器,我确实看到很多重新编译,但主要是由于“临时表更改”,“延迟编译”等,并不清楚这些重新编译是否是由于内存压力计划被抛出缓存的结果

欣赏任何想法。

2 个答案:

答案 0 :(得分:18)

您可以在SSMS中看到一些报告:

右键单击实例名称/ reports / standard / top sessions

您可以看到顶级CPU消费会话。这可能会说明SQL进程正在使用资源。如果你环顾四周,还有一些其他与CPU相关的报告。我打算指出更多的DMV,但是如果你已经调查了那些我已经跳过了它。

您可以使用sp_BlitzCache查找占用大量CPU的查询。您也可以按IO和其他方式进行排序。这是使用DMV信息,它在重新启动之间累积。

This article看起来很有希望。

Ozar先生的一些stackoverflow善良。

答案 1 :(得分:0)

根据关于sqlserverstudymaterial的this文章;

  

请记住"%特权时间"不是基于100%。它基于处理器的数量。如果你看到sqlserver.exe为200,系统有8个CPU,那么sqlserver.exe消耗的CPU是800个中的200个(只有25%)。

     

如果"%特权时间"价值超过30%,然后通常由错误的驱动程序或防病毒软件引起。在这种情况下,请确保BIOS和过滤器驱动器是最新的,然后尝试暂时禁用防病毒软件以查看更改。

     

如果"%用户时间"很高,然后有一些消耗SQL Server。   有几种已知的模式可能导致SQL Server中运行的进程的CPU占用率高,包括