안규 공부방

MS-SQL > dm_exec_query_stats , dm_exec_sql_text - CPU 사용량이 많은 쿼리문을 찾아라.

등록일 : 2017-07-03 19:55 조회수 : 133,812

사용량이 많은 쿼리문을 찾고 싶을 경우 사용하세요.
 

	SELECT TOP 10 
		   REPLACE(CONVERT(VARCHAR(20), CONVERT(MONEY,qs.total_worker_time / qs.execution_count/1000),1),'.00','') 
		   as [Avg CPU Time(ms)]
		  ,qs.execution_count
		  ,substring (qt.text,
					  qs.statement_start_offset/2+1,
					  (case when qs.statement_end_offset = -1 then len (convert (nvarchar(max), qt.text)) * 2
							else qs.statement_end_offset end - qs.statement_start_offset)/2) as query_text
		  ,qt.dbid
		  ,sd.name
		  ,qt.objectid
		  ,qt.number
		  ,qt.encrypted
		  ,qt.text
		  ,sr.session_id
		  ,sr.command
		  ,sr.status
		  ,sr.last_wait_type
		  ,sr.wait_resource
		  ,sq.query_plan
		  ,fs.text
	  FROM sys.dm_exec_query_stats qs
		   CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt 
		   CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) as sq
		   LEFT OUTER JOIN sys.databases as sd on qt.dbid = sd.database_id
		   LEFT OUTER JOIN sys.dm_exec_requests as sr on qs.sql_handle = sr.sql_handle
		   OUTER APPLY sys.fn_get_sql(sr.sql_handle) AS fs       
	 ORDER BY qs.total_worker_time / qs.execution_count DESC


 
※ 혹시 도움이 되셨다면 댓글에 한마디 남겨주세요!
작성자   비밀번호
자동글 방지     (자동글 방지 기능입니다.)
내용   댓글달기 
이메일 문의 : cak0280@nate.com  
Copyright 2000 By ENTERSOFT.KR All Rights Reserved.