sys.dm_exec_procedure_stats(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System(PDW)

캐시된 저장 프로시저에 대한 집계 성능 통계를 반환합니다. 뷰는 캐시된 각 저장 프로시저 계획에 대해 하나의 행을 반환하며, 행의 수명은 저장 프로시저가 다시 캐시되는 한 기본. 캐시에서 저장 프로시저를 제거하면 해당 행이 이 보기에서 제거됩니다. 이때 query_cache_removal_statistics 이 이벤트는 SQL Server 및 Azure SQL Managed Instance에 대한 sys.dm_exec_query_stats 유사하게 발생합니다.

Azure SQL Database에서 동적 관리 뷰는 데이터베이스 포함에 영향을 주거나 사용자가 액세스할 수 있는 다른 데이터베이스에 대한 정보를 노출하는 정보를 노출할 수 없습니다. 이 정보를 노출하지 않으려면 연결된 테넌트에 속하지 않는 데이터가 포함된 모든 행이 필터링됩니다.

참고 항목

sys.dm_exec_procedure_stats 결과는 데이터가 완료된 쿼리만 반영하고 아직 진행 중인 쿼리는 반영하지 않으므로 실행마다 다를 수 있습니다. Azure Synapse Analytics 또는 PDW(Analytics Platform System)에서 이를 호출하려면 이름을 sys.dm_pdw_nodes_exec_procedure_stats사용합니다. 이 구문은 Azure Synapse Analytics의 서버리스 SQL 풀에서 지원되지 않습니다.

열 이름 데이터 형식 설명
database_id int 저장 프로시저가 있는 데이터베이스 ID입니다.

Azure SQL Database에서 값은 단일 데이터베이스 또는 탄력적 풀 내에서 고유하지만 논리 서버 내에는 없습니다.
object_id int 저장 프로시저의 개체 ID 번호입니다.
type 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 동적 관리 뷰와 함께 사용할 수 있습니다.

고유하게 컴파일된 저장 프로시저가 메모리 최적화 테이블을 쿼리할 때 항상 0x000.
cached_time 날짜/시간 저장 프로시저가 캐시에 추가된 시간입니다.
last_execution_time 날짜/시간 저장 프로시저가 마지막으로 실행된 시간입니다.
execution_count bigint 저장 프로시저가 마지막으로 컴파일된 이후 실행된 횟수입니다.
total_worker_time bigint 컴파일된 이후 이 저장 프로시저의 실행에 사용된 총 CPU 시간(마이크로초)입니다.

고유하게 컴파일된 저장 프로시저의 경우 1초 미만이 소요되는 실행이 많으면 total_worker_time 이 정확하지 않을 수 있습니다.
last_worker_time bigint 저장 프로시저가 마지막으로 실행되었을 때 사용된 CPU 시간(마이크로초)입니다. 1
min_worker_time bigint 이 저장 프로시저가 단일 실행 중에 사용한 최소 CPU 시간(마이크로초)입니다. 1
max_worker_time bigint 이 저장 프로시저가 단일 실행 중에 사용한 최대 CPU 시간(마이크로초)입니다. 1
total_physical_reads bigint 컴파일된 이후 이 저장 프로시저의 실행에 의해 수행된 실제 읽기의 총 수입니다.

항상 메모리 최적화 테이블을 쿼리하는 0이 됩니다.
last_physical_reads bigint 저장 프로시저가 마지막으로 실행되었을 때 수행된 실제 읽기 수입니다.

항상 메모리 최적화 테이블을 쿼리하는 0이 됩니다.
min_physical_reads bigint 이 저장 프로시저가 단일 실행 중에 수행한 최소 물리적 읽기 수입니다.

항상 메모리 최적화 테이블을 쿼리하는 0이 됩니다.
max_physical_reads bigint 이 저장 프로시저가 단일 실행 중에 수행한 최대 물리적 읽기 수입니다.

항상 메모리 최적화 테이블을 쿼리하는 0이 됩니다.
total_logical_writes bigint 컴파일된 이후 이 저장 프로시저의 실행에 의해 수행된 총 논리 쓰기 수입니다.

항상 메모리 최적화 테이블을 쿼리하는 0이 됩니다.
last_logical_writes bigint 계획이 마지막으로 실행되었을 때 버퍼 풀 페이지 수가 더러워졌습니다. 페이지가 이미 변경된(수정된) 경우에는 쓰기 수가 계산되지 않습니다.

항상 메모리 최적화 테이블을 쿼리하는 0이 됩니다.
min_logical_writes bigint 이 저장 프로시저가 단일 실행 중에 수행한 최소 논리 쓰기 수입니다.

항상 메모리 최적화 테이블을 쿼리하는 0이 됩니다.
max_logical_writes bigint 이 저장 프로시저가 단일 실행 중에 수행한 최대 논리 쓰기 수입니다.

항상 메모리 최적화 테이블을 쿼리하는 0이 됩니다.
total_logical_reads bigint 컴파일된 이후 이 저장 프로시저의 실행에 의해 수행된 총 논리 읽기 수입니다.

항상 메모리 최적화 테이블을 쿼리하는 0이 됩니다.
last_logical_reads bigint 저장 프로시저가 마지막으로 실행되었을 때 수행된 논리적 읽기 수입니다.

항상 메모리 최적화 테이블을 쿼리하는 0이 됩니다.
min_logical_reads bigint 단일 실행 중에 이 저장 프로시저가 수행한 최소 논리 읽기 수입니다.

항상 메모리 최적화 테이블을 쿼리하는 0이 됩니다.
max_logical_reads bigint 이 저장 프로시저가 단일 실행 중에 수행한 최대 논리 읽기 수입니다.

항상 메모리 최적화 테이블을 쿼리하는 0이 됩니다.
total_elapsed_time bigint 이 저장 프로시저의 완료된 실행에 대한 총 경과 시간(마이크로초)입니다.
last_elapsed_time bigint 이 저장 프로시저의 가장 최근에 완료된 실행에 대해 경과된 시간(마이크로초)입니다.
min_elapsed_time bigint 이 저장 프로시저의 완료된 실행에 대한 최소 경과 시간(마이크로초)입니다.
max_elapsed_time bigint 이 저장 프로시저의 완료된 실행에 대한 최대 경과 시간(마이크로초)입니다.
total_spills bigint 컴파일된 이후 이 저장 프로시저를 실행하여 유출된 총 페이지 수입니다.

적용 대상: SQL Server 2017(14.x) CU3부터
last_spills bigint 저장 프로시저가 마지막으로 실행되었을 때 유출된 페이지 수입니다.

적용 대상: SQL Server 2017(14.x) CU3부터
min_spills bigint 단일 실행 중에 이 저장 프로시저가 유출한 최소 페이지 수입니다.

적용 대상: SQL Server 2017(14.x) CU3부터
max_spills bigint 단일 실행 중에 이 저장 프로시저가 유출한 최대 페이지 수입니다.

적용 대상: SQL Server 2017(14.x) CU3부터
pdw_node_id int 이 배포가 있는 노드의 식별자입니다.

적용 대상: Azure Synapse Analytics, Analytics Platform System(PDW)
total_page_server_reads bigint 컴파일된 이후 이 저장 프로시저의 실행에 의해 수행된 총 페이지 서버 읽기 수입니다.

적용 대상: Azure SQL Database 하이퍼스케일
last_page_server_reads bigint 저장 프로시저가 마지막으로 실행되었을 때 수행된 페이지 서버 읽기 수입니다.

적용 대상: Azure SQL Database 하이퍼스케일
min_page_server_reads bigint 단일 실행 중에 이 저장 프로시저가 수행한 최소 페이지 서버 읽기 수입니다.

적용 대상: Azure SQL Database 하이퍼스케일
max_page_server_reads bigint 단일 실행 중에 이 저장 프로시저가 수행한 최대 페이지 서버 읽기 수입니다.

적용 대상: Azure SQL Database 하이퍼스케일

1 통계 수집을 사용하는 경우 고유하게 컴파일된 저장 프로시저의 경우 작업자 시간이 밀리초 단위로 수집됩니다. 쿼리가 밀리초 미만 단위로 실행되는 경우 값은 0이 됩니다.

사용 권한

SQL Server 및 SQL Managed Instance에서는 VIEW SERVER STATE 권한이 필요합니다.

SQL Database Basic, S0S1 서비스 목표 및 탄력적 풀의 데이터베이스에는 서버 관리자 계정, Microsoft Entra 관리자 계정 또는 서버 역할##MS_ServerStateReader##멤버 자격이 필요합니다. 다른 모든 SQL Database 서비스 목표에 대해서는 데이터베이스에 대한 VIEW DATABASE STATE 권한 또는 ##MS_ServerStateReader## 서버 역할의 멤버 자격이 필요합니다.

SQL Server 2022 이상에 대한 권한

서버에 대한 VIEW SERVER PERFORMANCE 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;  

참고 항목

실행 관련 동적 관리 뷰 및 함수(Transact-SQL)
sys.dm_exec_sql_text(Transact-SQL)
sys.dm_exec_query_plan(Transact-SQL)
sys.dm_exec_query_stats(Transact-SQL)
sys.dm_exec_trigger_stats(Transact-SQL)
sys.dm_exec_cached_plans (Transact-SQL)