安装sqlserver2005数据库服务器,服务器硬件配置也不错,最近出现sqlservr.exe 这个进程占用CPU 从14% 跳跃上升到100%,等一会又跳跃下降至14%左右或24%左右,跳到100%后停留的时间比较长,一般就是百分之十几到百分之四十几到百分之六十几然后到100%,请问大家这是应该是什么原因引起的,该怎么解决阿?非常感谢

解决方案 »

  1.   

    CPU很高一般有编译、重编译过多,或者由于内存不足,cpu需要把数据页频繁从硬盘和内存之间频繁切换。最好还是用Profiler或者性能监视器监控一下,看看是什么语句之类的导致这种情况。
      

  2.   

    当你查询数据的数据量比较大时,sqlserver会把查询结果缓存在内存中,保证你下次查询同样的记录时会很快得到结果,所以内存使用量会激增。而且在你完成此次查询后,sqlserver不会马上释放内存,所以会出现你说的CPU一直增高。还有就是这些数据会依然放在内存中,这是sqlserver的优化策略,sqlserver会不断地占用你的系统内存,来加快sqlserver的运行速度,当你的系统中的其它服务也需要内存时,它才会自动释放部分内存。当你内存被占用,就需要CPU频繁重复完成SQL的相关编译等工作,由此造成CPU使用率过高。建议优化你的SQL代码
      

  3.   

    你跳到100%的时候查询一下SQL Server正在执行什么,有可能HASH等等的操作也是非常耗资源的(用DMV可以查看),也有可能突然用户数增多或者重编译(用Profiler)
      

  4.   

    这个你可以使用SQL Server Porfiler工具跟踪,重点看下CPU列,看看哪些操作导致CPU开销过大。
    另外你还可以使用服务器上的系统监视器(Windows Server 2008称为性能监视器)来监控CPU的运作。
      

  5.   

    Porfiler trace 一下cpu 比较大的语句