Skip to content

Instantly share code, notes, and snippets.

@danesparza
Last active June 22, 2018 20:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danesparza/72eee601130883094f280775b1a3c282 to your computer and use it in GitHub Desktop.
Save danesparza/72eee601130883094f280775b1a3c282 to your computer and use it in GitHub Desktop.
Finding high CPU queries in SQL server
select getdate() 'colltime',
c.session_id,
s.login_name,
@@SERVERNAME 'sqlnwname',
db_name(m.dbid) 'dbname',
s.status,m.blocked,
s.program_name,
s.host_name,
t.last_wait_type,
t.wait_resource,
last_request_start_time,
t.total_elapsed_time/1000 'elaptime',
m.physical_io,
t.cpu_time/1000 'cputime',
substring(st.text, (t.statement_start_offset/2) + 1,
((case statement_end_offset
when -1
then datalength(st.text)
else
t.statement_end_offset
end
- t.statement_start_offset)/2) + 1) as statement_text,
st.text,
query_plan
-- into #eplan
FROM sys.dm_exec_connections c
INNER JOIN sys.dm_exec_sessions s
ON c.session_id = s.session_id
INNER JOIN sys.dm_exec_requests t
ON c.session_id = t.session_id
INNER JOIN master..sysprocesses m
ON c.session_id = m.spid
CROSS APPLY sys.dm_exec_sql_text(most_recent_sql_handle) AS st
CROSS APPLY sys.dm_exec_query_plan(plan_handle) AS qp
WHERE t.total_elapsed_time/1000 > 5 and m.lastwaittype != 'BROKER_RECEIVE_WAITFOR'
select * from sys.dm_os_wait_stats order by wait_time_ms desc
SELECT s.session_id
,r.STATUS
,r.blocking_session_id 'blocked by'
,r.wait_type
,wait_resource
,r.wait_time / (1000.0) 'Wait Time (in Sec)'
,r.cpu_time
,r.logical_reads
,r.reads
,r.writes
,r.total_elapsed_time / (1000.0) 'Elapsed Time (in Sec)'
,Substring(st.TEXT, (r.statement_start_offset / 2) + 1, (
(
CASE r.statement_end_offset
WHEN - 1
THEN Datalength(st.TEXT)
ELSE r.statement_end_offset
END - r.statement_start_offset
) / 2
) + 1) AS statement_text
,Coalesce(Quotename(Db_name(st.dbid)) + N'.' + Quotename(Object_schema_name(st.objectid, st.dbid)) + N'.' +
Quotename(Object_name(st.objectid, st.dbid)), '') AS command_text
,r.command
,s.login_name
,s.host_name
,s.program_name
,s.host_process_id
,s.last_request_end_time
,s.login_time
,r.open_transaction_count
FROM sys.dm_exec_sessions AS s
INNER JOIN sys.dm_exec_requests AS r ON r.session_id = s.session_id
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS st
WHERE r.session_id != @@SPID
ORDER BY r.cpu_time DESC
,r.STATUS
,r.blocking_session_id
,s.session_id
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment