服务器最近cpu使用率很高,有时能到100% ,查了下是数据库的问题,数据库活动监视器里看到有阻塞而且都是自身阻塞(看了下有阻塞的sql命令都是查询),图片上传不了下面是活动监视器中截图的连接,各位大哥大姐帮帮忙了,先谢过了
http://blog.csdn.net/xiangyuhm/article/details/8766359

解决方案 »

  1.   

    根据你的确等待类型一个是并行查询阻塞.一个是排它锁的申请你根据你的对应命令以及用户来进行调整.
    并行查询看是否读取了大量数据导致.可考虑降低并行度.MAXDOP
    把你命令放出来看看
      

  2.   

    这个得根据当前的业务进行优化的,就是根据执行的sql命令找到堵塞的原因
      

  3.   

    --1、统计占用cpu最多的查询,比如前10
    SELECT TOP  10
    total_worker_time AS TotalTime,
    total_worker_time/execution_count AS avg_cpu_cost,
    plan_handle,
    execution_count,
    (SELECT SUBSTRING(text,statement_start_offset/2 + 1,
    (CASE WHEN statement_end_offset = -1 THEN LEN(CONVERT(NVARCHAR(MAX),text))*2
    ELSE statement_end_offset END - statement_start_offset)/2)
    FROM sys.dm_exec_sql_text(sql_handle))AS query_text
    FROM sys.dm_exec_query_stats
    ORDER BY [avg_cpu_cost] DESC
    --2、性能监视器查看(检查重编译的情况)  这个需要lz有之前的正常状况基础信息,进行对比。
    sql Server :sql statistics:batch requests/sec
    sql Server :sql statistics:sql compilations/sec
    sql Server :sql statistics:sql recompilations/sec--3、查证前端语句使用,这个需要结合实际业务。
      

  4.   

    多核的系统,数据库占cpu能达100%,正常情况下,说明数据库表结构设计的好,能让sql并发执行了
      

  5.   

    这不是三五句能“指点”出结果的。。否则专业的DBA也就没了价值
      

  6.   

    给点小建议:
    1、在【运行】中输入resmon.exe,看看服务器上有没有其他非SQLServer应用的资源使用比SQLServer的还多。
    2、使用性能计数器【运行】中输入pefmon.exe,监控相关的cpu计数器是否有问题。
    3、如果2008,可以右键实例名,选择报表,再选择如图,看看那些语句耗资源,然后这些代码的执行计划是否有问题,优化脚本: