다음을 통해 공유


sys.dm_exec_procedure_stats(Transact-SQL)

캐시된 저장 프로시저에 대한 집계 성능 통계를 반환합니다. 이 뷰에는 캐시된 각 저장 프로시저 계획에 대해 하나의 행이 반환되며 행의 유효 기간은 저장 프로시저가 캐시에 남아 있는 기간과 같습니다. 캐시에서 저장 프로시저가 제거되면 이 뷰에서도 해당 행이 제거됩니다. 이때 Performance Statistics SQL 추적 이벤트가 sys.dm_exec_query_stats와 유사하게 발생합니다.

[!참고]

현재 서버에서 실행 중인 작업이 있을 경우 sys.dm_exec_procedure_stats의 초기 쿼리 결과가 정확하지 않을 수 있습니다. 쿼리를 다시 실행하면 보다 정확한 결과를 확인할 수 있습니다.

열 이름

데이터 형식

설명

database_id

int

이 저장 프로시저가 있는 데이터베이스의 ID입니다.

object_id

int

이 저장 프로시저의 개체 ID입니다.

유형

char(2)

개체의 유형입니다.

P = SQL 저장 프로시저

PC = 어셈블리(CLR) 저장 프로시저

X = 확장 저장 프로시저

type_desc

nvarchar(60)

개체 유형에 대한 설명입니다.

SQL_STORED_PROCEDURE

CLR_STORED_PROCEDURE

EXTENDED_STORED_PROCEDURE

sql_handle

varbinary(64)

이 저장 프로시저에서 실행된 sys.dm_exec_query_stats 쿼리와의 상관 관계를 지정하는 데 사용할 수 있습니다.

plan_handle

varbinary(64)

메모리 내 계획의 식별자입니다. 이 식별자는 일시적이며 계획이 캐시에 있는 동안에만 일정하게 유지됩니다. 이 값은 sys.dm_exec_cached_plans 동적 관리 뷰와 함께 사용할 수 있습니다.

cached_time

datetime

이 저장 프로시저가 캐시에 추가된 시간입니다.

cached_time

datetime

이 저장 프로시저가 캐시에 추가된 시간입니다.

last_execution_time

datetime

이 저장 프로시저가 마지막으로 실행된 시간입니다.

execution_count

bigint

이 저장 프로시저가 마지막으로 컴파일된 이후 실행된 횟수입니다.

total_worker_time

bigint

이 저장 프로시저가 컴파일된 이후 실행되는 데 사용된 총 CPU 시간(마이크로초)입니다.

last_worker_time

bigint

이 저장 프로시저가 마지막으로 실행될 때 사용된 CPU 시간(마이크로초)입니다.

min_worker_time

bigint

단일 실행 중 이 저장 프로시저에 사용된 최대 CPU 시간(마이크로초)입니다.

max_worker_time

bigint

단일 실행 중 이 저장 프로시저에 사용된 최대 CPU 시간(마이크로초)입니다.

total_physical_reads

bigint

이 저장 프로시저가 컴파일된 이후 실행될 때 수행된 총 물리적 읽기 수입니다.

last_physical_reads

bigint

이 저장 프로시저가 마지막으로 실행될 때 수행된 물리적 읽기 수입니다.

min_physical_reads

bigint

단일 실행 중 이 저장 프로시저가 수행한 최소 물리적 읽기 수입니다.

max_physical_reads

bigint

단일 실행 중 이 저장 프로시저가 수행한 최대 물리적 읽기 수입니다.

total_logical_writes

bigint

이 저장 프로시저가 컴파일된 이후 실행될 때 수행된 총 논리적 쓰기 수입니다.

last_logical_writes

bigint

이 저장 프로시저가 마지막으로 실행될 때 수행된 논리적 쓰기 수입니다.

min_logical_writes

bigint

단일 실행 중 이 저장 프로시저가 수행한 최소 논리적 쓰기 수입니다.

max_logical_writes

bigint

단일 실행 중 이 저장 프로시저가 수행한 최대 논리적 쓰기 수입니다.

total_logical_reads

bigint

이 저장 프로시저가 컴파일된 이후 실행될 때 수행된 총 논리적 읽기 수입니다.

last_logical_reads

bigint

이 저장 프로시저가 마지막으로 실행될 때 수행된 논리적 읽기 수입니다.

min_logical_reads

bigint

단일 실행 중 이 저장 프로시저가 수행한 최소 논리적 읽기 수입니다.

max_logical_reads

bigint

단일 실행 중 이 저장 프로시저가 수행한 최대 논리적 읽기 수입니다.

total_elapsed_time

bigint

이 저장 프로시저의 실행을 완료하는 데 소요된 총 경과 시간(마이크로초)입니다.

last_elapsed_time

bigint

가장 최근에 이 저장 프로시저의 실행을 완료하는 데 소요된 경과 시간(마이크로초)입니다.

min_elapsed_time

bigint

이 저장 프로시저의 실행을 완료하는 데 소요된 최소 경과 시간(마이크로초)입니다.

max_elapsed_time

bigint

이 저장 프로시저의 실행을 완료하는 데 소요된 최대 경과 시간(마이크로초)입니다.

사용 권한

서버에 대한 VIEW SERVER STATE 권한이 필요합니다.

주의

저장 프로시저의 실행이 완료되면 뷰에 있는 통계가 업데이트됩니다.

다음 예에서는 평균 경과 시간으로 식별된 상위 10개의 저장 프로시저에 대한 정보를 반환합니다.

SELECT TOP 10 d.object_id, d.database_id, OBJECT_NAME(object_id, database_id) 'proc name', 
d.cached_time, d.last_execution_time, d.total_elapsed_time, d.total_elapsed_time/d.execution_count AS [avg_elapsed_time],
d.last_elapsed_time, d.execution_count
FROM sys.dm_exec_procedure_stats AS d
ORDER BY [total_worker_time] DESC;