sys.dm_exec_procedure_stats(Transact-SQL)
적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics 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, S0 및 S1 서비스 목표 및 탄력적 풀의 데이터베이스에는 서버 관리자 계정, 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)