sys.dm_exec_function_stats(Transact-SQL)
적용 대상: SQL Server 2016(13.x) 이상 Azure SQL 데이터베이스 Azure SQL Managed Instance
캐시된 함수에 대한 집계 성능 통계를 반환합니다. 뷰는 캐시된 각 함수 계획에 대해 하나의 행을 반환하며, 함수가 캐시된 상태로 유지되는 한 행의 수명은 유지됩니다. 캐시에서 함수가 제거되면 이 뷰에서도 해당 행이 제거됩니다. 이때 성능 통계 SQL 추적 이벤트는 sys.dm_exec_query_stats와 유사하게 발생합니다. 메모리 내 함수 및 CLR 스칼라 함수를 포함하여 스칼라 함수에 대한 정보를 반환합니다. 테이블 반환 함수 및 스칼라 UDF 인라인 처리로 인라인된 스칼라 함수에 대한 정보는 반환하지 않습니다.
Azure SQL Database에서 동적 관리 뷰는 데이터베이스 봉쇄에 영향을 미치는 정보를 노출하거나 사용자가 액세스할 수 있는 다른 데이터베이스에 대한 정보를 노출할 수 없습니다. 이 정보를 노출하지 않으려면 연결된 테넌트에 속하지 않는 데이터가 포함된 모든 행이 필터링됩니다.
참고 항목
sys.dm_exec_function_stats 결과는 데이터가 완료된 쿼리만 반영하고 아직 진행 중인 쿼리는 반영하지 않으므로 실행마다 다를 수 있습니다.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
database_id | int | 함수가 있는 데이터베이스 ID입니다. Azure SQL Database에서 값은 단일 데이터베이스 또는 탄력적 풀 내에서 고유하지만 논리 서버 내에는 고유하지 않습니다. |
object_id | int | 함수의 개체 식별 번호입니다. |
type | char(2) | 개체의 형식: FN = 스칼라 반환 함수 |
type_desc | nvarchar(60) | 개체 형식에 대한 설명: SQL_SCALAR_FUNCTION |
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_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 하이퍼스케일. |
사용 권한
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) 'function 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_function_stats AS d
ORDER BY [total_worker_time] DESC;
참고 항목
실행 관련 동적 관리 뷰 및 함수(Transact-SQL)
sys.dm_exec_sql_text(Transact-SQL)
sys.dm_exec_query_stats(Transact-SQL)
sys.dm_exec_trigger_stats(Transact-SQL)
sys.dm_exec_procedure_stats(Transact-SQL)