今天线上sqlServer数据库的cpu被打爆了,紧急情况下,分析了数据库阻塞、连接分布、最耗cpu的TOP10 sql、查询sql并行度配置、查询sql 重编译的原因等等
整理了一些常用的sql
SELECT * FROM sys.sysprocesses WHERE blocked<>0
查询结果中,重点看Blocked这一列,先找出最多的SID,然后循环找出Root的阻塞根源SID
DBCC Inputbuffer(sid)
SELECT Hostname FROM sys.sysprocesses WHERE hostname<>‘‘
select top(10) st.text as Query,qs.total_worker_time,qs.execution_count from sys.dm_exec_query_stats as qs CROSS Apply sys.dm_exec_sql_text(qs.sql_handle) AS st order by qs.total_worker_time desc
4. 查看sqlServer并行度
并行度如果设置为1,To suppress parallel plan generation,set max degree of parallelism to 1
设置策略和具体设置方法,请参考:https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/configure-the-max-degree-of-parallelism-server-configuration-option?view=sql-server-2017
USE DatabaseName ; GO EXEC sp_configure ‘show advanced options‘,1; GO RECONfigURE WITH OVERRIDE; GO EXEC sp_configure ‘max degree of parallelism‘,16; GO RECONfigURE WITH OVERRIDE; GO
5. 查询sql Server Recompilation Reasons
select dxmv.name,dxmv.map_key,dxmv.map_value from sys.dm_xe_map_values as dxmv where dxmv.name=‘statement_recompile_cause‘ order by dxmv.map_key
6. 将sql Trace文件存入一张表,做聚合分析(cpu、IO、执行时间等)
SELECT * INTO Tabsql FROM fn_trace_gettable(‘C:\Users\***\Desktop\Trace\sql05trace20180606-业务.trc‘,default); GO
对上述表数据进行聚合分析最耗时的sql
select top 100 replace(replace(replace( substring(Textdata,1,6600),char(10),‘ ‘),char(13),char(9),‘ ‘) as ‘名称‘,--substring(Textdata,6600) as old,count(*) as ‘数量‘,sum(duration/1000) as ‘总执行时间ms‘,avg(duration/1000) as ‘平均执行时间ms‘,avg(cpu) as ‘平均cpu时间ms‘,avg(reads) as ‘平均读次数‘,avg(writes) as ‘平均写次数‘,LoginName from Tabsql t group by replace(replace(replace( substring(Textdata,LoginName order by sum(duration) desc
最耗IO的sql
select TOP 100 replace(replace(replace( substring(Textdata,‘ ‘) as ‘名称‘,LoginName,sum(cpu) as ‘总cpu时间ms‘,sum(reads) as ‘总读次数‘,avg(writes) as ‘平均写次数‘ from Tabsql group by replace(replace(replace( substring(Textdata,LoginName order by sum(reads) desc
SELECT TOP 100 replace(replace(replace( substring(Textdata,sum(cpu) as ‘总cpu时间‘,avg(cpu) as ‘平均cpu时间‘,LoginName order by avg(cpu) desc
周国庆
2019/7/8
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。