SQL Server 2008 R2 高 CPU

m0f*_*0fo 7 performance sql-server-2008 sql-server

我们有一个 SQL Server R2 网络版数据库,它基于 Windows Server 2008 R2,具有强大的 CPU 和 32GB RAM DDR3。

我们的数据库工作非常努力(我们在 1 分钟内运行了大约 600,000 个查询)并且它的 CPU 变得疯狂(25% 到 90%)。

我正在处理缓慢的查询,找到了一些,修复了它们,其他一些我只是取消以检查它是否有帮助,但它没有,CPU 仍然很高。

我想知道还能是什么?我不是 DBA,但我和一个非常有经验的人一起工作,他创建了所有索引并重新配置了 DB,但是 CPU 仍然很高,而且这个 DBA(有 20 多年的经验)有点像绝望,真的不知道如何找到问题。

我想知道,这可能是缓存问题吗?像这样的查询没有缓存?

有谁知道它可以是什么?我们能做什么?我们如何调查?

也许它只是大量的查询?

我很想得到你能提供的每一个小信息!

Rem*_*anu 8

我建议从像Waits 和 Queues这样的方法开始。但是在每秒 10k 次查询时,您应该会消耗一些 CPU。仅从您提供的信息中很难判断它是否超出应有的水平。链接的方法至少可以帮助您找到瓶颈。

最大的收益可能是......每秒不要发送 10k 次查询。在客户端缓存。查看StackOverflow 如何使用 SQL Server 进行扩展,并了解 SE 如何在访问服务器之前尽可能多地在 web 层缓存。

以防万一,做几次,DBCC SQLPERF ('SPINLOCKSTATS')看看是否有什么突出的地方。


小智 2

CPU 使用率高可能是其他几个问题之一:

  1. 索引是否已被删除(在您不知情的情况下)?
  2. 你有索引吗?
  3. 您最近是否发现系统使用率更高(更多用户/更多数据)?
  4. 系统最近是否已重新启动(从而清空缓存并导致查询重新编译)?
  5. 查询/存储过程/函数是否已更改(再次在您不知情的情况下)?

在进一步讨论之前我会检查这些事情。