如果性能计数器处理器:处理器时间在所有核心上始终低于 30%,那么原则上 CPU 是否可能成为 SQL Server 的瓶颈?或者较低的处理器时间是否会自动允许我排除 CPU 作为潜在故障源?
我之所以问这个问题,是因为 SQL Nexus 将 CPU 列为处理器时间值较低的服务器上的最大瓶颈。
答案1
如果查询中存在大量同步操作,即使 CPU 报告有空闲周期,CPU 也可能成为瓶颈。只能发生有限的多线程。随着 CPU 核心数的不断增加,您越有可能看到这种情况。您唯一能做的就是获得更快的 CPU 核心或研究可以对查询/数据库进行哪种优化。
答案2
如果处理器队列长度较高,那么理论上可能会出现一些 CPU 瓶颈。
答案3
需要注意的是 SQL 等待时间。DMV 可以告诉你系统正在等待什么。查看布伦特·奥扎尔网站了解更多详情。
需要注意的事项:SQL 服务器将(默认情况下)使用多线程并行处理预计耗时超过 10 秒左右的查询。有时,这对于正在执行的查询类型并不合适,您会得到非常高的 CX_WAIT 时间 - 不同线程需要相互通信和同步。您可以通过将此值设置得更高(在服务器上)或通过查询提示来获得更好的吞吐量(每秒处理更多事务,即使每个事务花费的时间更长)。(有关更多详细信息,请参阅 Google!)
您的查询是否包含大量复杂的字符串操作?或者 CLR 函数?
SQL 最有可能受到 DISK 限制,然后是 RAM 速度限制,然后才是纯粹的 CPU 限制。