2012-06-15 112 views
2

我试图找出或争取促成有关SQL Server的持续高CPU使用率SQL Server的因素可以导致CPU占用率过高

这里有一些,我想出了

一个因素)编译或存储的特效或查询

b)表现较差的查询执行庞大的排序或结束了使用哈希联接

C)平行的频繁重新编译(多线程跨度,以便它可以保持CPU繁忙)

d)在T-SQL中为例如While循环或使用CURSOR

E)缺少或不恰当的索引,导致表扫描

什么是其他SQL Server操作可能导致的高CPU使用率?

+0

缺失或不合适的索引确实不会影响CPU,它几乎只有磁盘I/O。此外,循环构造不是CPU密集型的,除非它们中的计算很复杂。 –

+1

缺少统计信息,可以真正将其并行化 –

+0

我的意思是丢失或过时的统计信息。 –

回答

1

数据压缩是相对CPU密集型的。 加密是可能导致高CPU使用率的另一种操作。

+0

Transperent数据加密...好的一个以及单元级别的加密 –

+0

我也将添加备份压缩 –

1

标量用户定义函数的使用使用了比您想象的更多的CPU。

+0

只有当你在错误的地方使用它们。 :-) –

+0

亚伦,你的意思是如果你使用UDF访问表数据..而不是执行一些calculatios纠正我? –

+2

对,CPU使用率将直接与行数和/或执行次数相关。如果由于您已将UDF应用到SELECT列表中而执行了80,000次UDF,则每次调用将不会占用大量的CPU,而是总和。另一方面,如果你的过程以'DECLARE @x = dbo.SomeFunc();'开始,或者甚至在许多情况下它是查询的一部分,那么函数只会被调用一次,所以你我们不会看到CPU使用率过高(除非函数也会导致问题中的某些其他问题)。 –

相关问题