Sql server SQL Server可能导致高CPU使用率的因素

Sql server SQL Server可能导致高CPU使用率的因素,sql-server,sql-server-2008,sql-server-2005,Sql Server,Sql Server 2008,Sql Server 2005,我试图找出或列出导致SQL Server持续高CPU利用率的因素 以下是我提出的一些建议 对存储过程或查询的编译或频繁重新编译 b执行大量排序或最终使用哈希连接的性能较差的查询 c并行多线程是跨线程的,因此它可以保持CPU繁忙 T-SQL中的d循环构造,例如WHILE循环或游标的使用 e导致表扫描的索引缺失或不适当 其他哪些SQL server操作会导致CPU的高使用率 数据压缩是相对CPU密集型的。加密是另一种可能导致高CPU利用率的操作。使用标量用户定义函数比您想象的要占用更多的CPU。缺少

我试图找出或列出导致SQL Server持续高CPU利用率的因素

以下是我提出的一些建议

对存储过程或查询的编译或频繁重新编译

b执行大量排序或最终使用哈希连接的性能较差的查询

c并行多线程是跨线程的,因此它可以保持CPU繁忙

T-SQL中的d循环构造,例如WHILE循环或游标的使用

e导致表扫描的索引缺失或不适当


其他哪些SQL server操作会导致CPU的高使用率

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

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

缺少或不适当的索引实际上不会影响CPU,它几乎完全是磁盘I/O。此外,循环结构不是特别CPU密集型的,除非其中的计算很复杂。缺少统计数据会真正影响并行性我的意思是缺少或过时的统计数据。还有一件事参数嗅探。。。只要你在错误的地方使用它们,你就会发现-Aaron,你是说如果你使用UDF访问表数据。。CPU的使用将与行数和/或执行数直接相关,而不是执行一些计算。如果UDF被执行80000次,因为您已经在SELECT列表中应用了它,那么每次调用都不会占用大量CPU,但总的CPU会占用。另一方面,如果您的过程以DECLARE@x=dbo.SomeFunc;开头;,或者,即使在很多情况下,它是查询的一部分,函数只会被调用一次,因此,除非函数也会执行或导致问题中的某些其他事情,否则您不会看到高CPU使用率。@AaronBertrand确实如此。我想我在C世界中使用过,在C世界中,如果你不经常调用一个函数,它就不会那么昂贵:你认为他们会生成内联标量UDF吗?在某个时候。我向他们抱怨,他们在网上的书中被引用过一次,但再也没有了:回到2005年的版本,我说:对于内联标量函数,没有函数体;标量值是单个语句的结果。当然他们还没有发布这样的东西。透明数据加密。。。好的一个和单元级加密一样,我还将添加备份压缩