当前位置:Gxlcms > 数据库问题 > SQL 数据库高CPU占用语句排查

SQL 数据库高CPU占用语句排查

时间:2021-07-01 10:21:17 帮助过:44人阅读

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

  直接复制粘贴上面的语句就可以查出最耗时的前10条语句。

查看具体语句执行时间

  切换到文本模式

技术分享

  使用下面的语句查看单条语句的执行时间

go  
set statistics profile on  
set statistics io on  
set statistics time on  
go  
/** 欲查询CPU执行时间的目标语句**/     
go  
set statistics profile off  
set statistics io off  
set statistics time off  
go

语句耗时的原因及对策

1.单表数据太多:分表、清理过时数据

  排查中有两张相同的表,一张表数据量在7000条,另一张表由于问题插入大量无用数据达到三十万+,相同的语句针对两张表的查询时间分别为0ms/900ms,差距非常大。

  表1执行时间技术分享            表2执行时间技术分享

2.数据表没有索引:建立聚集索引

  对表结构进行分析,发现没有建立聚集索引,于是针对表及主要操作字段建立聚集索引,建立聚集索引后语句执行时间技术分享

3.对语句进行优化:这个只能特定语句特定分析,不断查询语句执行时间来查看优化结果

  语句优化完成效果如图技术分享

  上面2、3都是单独作用时的效果图,可以看到效果还是很明显的,只是并未达到令人满意的效果,但2、3结合使用后效果就惊人了技术分享

  

  

 

SQL 数据库高CPU占用语句排查

标签:管理器   blog   col   end   iis   div   任务   结果   查询语句   

人气教程排行