SQL Server

[MSSQL] 18. 성능 많이 먹는 쿼리 조회

푸팟퐁쿼리 2023. 4. 25. 21:47

인스턴스의 캐시에 올라와있는 쿼리 중 비용을 많이 소비하고 있는 쿼리를 뽑는 쿼리입니다.

장애 상황에서 제일 문제되는 쿼리를 뽑을 때 사용할 수 있습니다.

SELECT TOP 300 
    db_name(execText.dbid) AS dbName
	,execution_count AS execCnt
	,(total_worker_time / execution_count) / 1000 AS avgCPU
	,(total_elapsed_time / execution_count) / 1000 AS avgDuration
	, total_logical_reads / execution_count AS avgReads
	, max_worker_time AS maxCPU
	, max_elapsed_time AS maxDuration
	, max_logical_reads AS maxReads
	, total_worker_time / 1000 AS totalCPU
	, total_logical_reads as totalReads
	,object_name(execText.objectid, execText.dbid) AS objName
	,'"' + REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(7600), SUBSTRING(execText.TEXT, deqs.statement_start_offset / 2 + 1, (
							(
								CASE 
									WHEN deqs.statement_end_offset = - 1
										THEN LEN(CONVERT(NVARCHAR(max), execText.TEXT)) * 2
									ELSE deqs.statement_end_offset
									END
								) - deqs.statement_start_offset
							) / 2)), '"', ''''), CHAR(13), ' '), CHAR(10), ' ') + '"' AS queryText
--	, qp.query_plan
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.plan_handle) AS execText
--OUTER APPLY sys.dm_exec_query_plan(deqs.plan_handle) AS qp
ORDER BY deqs.total_worker_time DESC;
GO