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;