高度分散的索引会导致SQL Server中的CPU峰值?

时间:2013-08-28 21:01:45

标签: sql sql-server-2008-r2

我每天都在数据库服务器上看到CPU峰值,我发现索引没有重建很长一段时间。这可能是这些峰值的原因吗?

2 个答案:

答案 0 :(得分:0)

碎片可能会导致更多CPU负载,但不会导致峰值。为什么会这样?看别处。找出在峰值期间运行的查询,并查看具有大量CPU的长时间运行的查询。

答案 1 :(得分:0)

是的,但这完全取决于该特定表中可用的记录数,碎片可能会导致CPU峰值以及负载期间服务器的100%CPU利用率。 因为在加载过程中通过索引搜索页面时,CPU需要4毫秒的时间来执行查询,如果由于碎片化存储引擎而导致在CPU上执行的查询需要内存中的其他页面(在内存中不可用),则必须回头查看在B +树(页面分散)中来回移动,导致CPU尚未将该查询溢出到服务员列表中,一旦可用数据移动到可运行队列(查询等待CPU执行)。 试想一下,如果表中有大量记录,那么肯定会有碎片会对CPU产生影响。