mssql sqlserver cpu使用过高可能的原因分析


摘要:
今天运维的同事反馈,sqlserver服务器的cpu过高,经常达到100%,下文讲述可能导致CPU过高的语句,
如下所述:
实验环境:sql server 2008 R2



sql脚本编译和重编译

当sql脚本初次运行时,sql脚本会重编译,重编译过程是sqlserver引擎生成执行计划的过程。sqlserver此时会分析最佳执行路径,分析sql语法,表结构 估算各种执行的时间,此时将会消耗大量的CPU。
当执行计划生成后被缓存到内存后,但当数据量发生变化,结构发生变化,显式指定重编译时,此时执行计划就会被重编译。

sql排序和聚合计算

当我们检索数据时,我们使用order by distinct avg sum max min count等聚合计算时,当我们把数据加载到内存后,我们需对数据进行计算,将数据组合为我们所需的结果,此时会消耗大量的CPU

表格连接join操作

当我们对表进行连接操作时,sqlserver会使用相应的算法对表数据进行相关的计算,然后进行相应的连接操作,此处也是CPU密集操作的地方。