SQL Server

[MSSQL] 19. 성능 많이 먹는 프로시저 조회

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

인스턴스에 캐시된 프로시저 중에 성능을 많이 사용하고 있는 프로시저를 조회하는 쿼리입니다.

장애 상황 시 이슈 프로시저를 잡아내는데 사용할 수 있습니다.

DECLARE @productversion VARCHAR(128)
DECLARE @Majorversion INT

SET @productversion = convert(VARCHAR(128), SERVERPROPERTY('ProductVersion'))
SET @Majorversion = convert(INT, left(@productversion, charindex('.', @productversion) - 1))

IF @Majorversion > 9
BEGIN
	SELECT TOP 300 DB_NAME(d.database_id) AS dbName
		,OBJECT_NAME(object_id, database_id) AS objName
		,d.execution_count AS execCNT
		,(d.total_worker_time / d.execution_count) / 1000 AS avgCPU
		,(d.total_elapsed_time / d.execution_count) / 1000 AS avgDuration
		,(d.total_logical_reads / d.execution_count) AS avgReads
		,d.max_worker_time / 1000 AS maxCPU
		,d.max_elapsed_time / 1000 AS maxDuration
		,d.max_logical_reads AS maxReads
		,d.total_worker_time / 1000 AS totalCPU
		,d.total_elapsed_time / 1000 AS totalDuration
		,d.total_logical_reads AS totalReads
		,d.last_execution_time AS last_runtime
		,d.cached_time AS cacheTime
	FROM sys.dm_exec_procedure_stats AS d
	WHERE d.database_id <> 32767
	ORDER BY d.total_worker_time DESC;
END
GO