sys.dm_exec_query_optimizer_info(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System(PDW)

SQL Server 쿼리 최적화 프로그램의 작업에 대한 자세한 통계를 반환합니다. 쿼리 최적화 문제 또는 개선점을 식별하는 작업을 튜닝할 때 이 뷰를 사용할 수 있습니다. 예를 들어 총 최적화 수, 경과된 시간 값 및 최종 비용 값을 사용하여 현재 작업의 쿼리 최적화와 튜닝 프로세스 동안 관찰된 모든 변경 내용을 비교할 수 있습니다. 일부 카운터는 SQL Server 내부 진단 사용과 관련된 데이터를 제공합니다. 이러한 카운터는 "내부 전용"으로 표시됩니다.

참고 항목

Azure Synapse Analytics 또는 PDW(Analytics Platform System)에서 이를 호출하려면 이름을 sys.dm_pdw_nodes_exec_query_optimizer_info사용합니다. 이 구문은 Azure Synapse Analytics의 서버리스 SQL 풀에서 지원되지 않습니다.

이름 데이터 유형 설명
카운터 nvarchar(4000) 최적화 프로그램 통계 이벤트의 이름입니다.
발생 빈도 bigint 이 카운터에 대한 최적화 이벤트의 발생 횟수입니다.
value float 이벤트 발생당 평균 속성 값입니다.
pdw_node_id int 적용 대상: Azure Synapse Analytics, Analytics Platform System(PDW)

이 배포가 있는 노드의 식별자입니다.

사용 권한

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 권한이 필요합니다.

설명

sys.dm_exec_query_optimizer_info 다음 속성(카운터)을 포함합니다. 모든 발생 값은 누적되며 시스템 다시 시작 시 0으로 설정됩니다. 시스템 다시 시작 시 값 필드의 모든 값이 NULL로 설정됩니다. 평균을 지정하는 모든 값 열 값은 평균 계산에서 분모와 동일한 행의 발생 값을 사용합니다. 모든 쿼리 최적화는 SQL Server가 사용자 및 시스템 생성 쿼리를 포함하여 dm_exec_query_optimizer_info 변경 내용을 결정할 때 측정됩니다. 이미 캐시된 계획을 실행해도 dm_exec_query_optimizer_info은 변경되지 않으며 최적화만 중요합니다.

카운터 항목
최적화 총 최적화 수입니다. 해당 없음
경과된 시간 총 최적화 수입니다. 개별 문(쿼리)의 최적화당 평균 경과 시간(초)입니다.
final cost 총 최적화 수입니다. 내부 비용 단위의 최적화된 계획에 대한 평균 예상 비용입니다.
간단한 계획 내부 전용 내부 전용
작업  내부 전용 내부 전용
계획 없음 내부 전용 내부 전용
검색 0 내부 전용 내부 전용
search 0 time 내부 전용 내부 전용
0 작업 검색 내부 전용 내부 전용
search 1 내부 전용 내부 전용
검색 1회 내부 전용 내부 전용
검색 1 작업 내부 전용 내부 전용
검색 2 내부 전용 내부 전용
검색 2시간 내부 전용 내부 전용
2개 작업 검색 내부 전용 내부 전용
gain stage 0 to stage 1 내부 전용 내부 전용
게인 스테이지 1에서 스테이지 2까지 내부 전용 내부 전용
시간 제한 내부 전용 내부 전용
메모리 제한을 초과했습니다. 내부 전용 내부 전용
stmt 삽입 INSERT 문에 대한 최적화 수입니다. 해당 없음
stmt 삭제 DELETE 문에 대한 최적화 수입니다. 해당 없음
update stmt UPDATE 문에 대한 최적화 수입니다. 해당 없음
하위 쿼리를 포함합니다. 하나 이상의 하위 쿼리를 포함하는 쿼리에 대한 최적화 수입니다. 해당 없음
unnest failed 내부 전용 내부 전용
테이블 총 최적화 수입니다. 최적화된 쿼리당 참조되는 평균 테이블 수입니다.
힌트 일부 힌트가 지정된 횟수입니다. 개수에 포함되는 힌트는 JOIN, GROUP, UNION 및 FORCE ORDER 쿼리 힌트, FORCE PLAN 집합 옵션 및 조인 힌트입니다. 해당 없음
주문 힌트 힘 순서 힌트가 지정된 횟수입니다. 해당 없음
조인 힌트 조인 힌트에 의해 조인 알고리즘이 강제로 적용된 횟수입니다. 해당 없음
참조 보기 쿼리에서 뷰가 참조된 횟수입니다. 해당 없음
원격 쿼리 쿼리가 네 부분으로 구성된 이름 또는 OPENROWSET 결과를 가진 테이블과 같이 하나 이상의 원격 데이터 원본을 참조한 최적화 수입니다. 해당 없음
maximum DOP 총 최적화 수입니다. 최적화된 계획에 대한 평균 유효 MAXDOP 값입니다. 기본적으로 유효 MAXDOP는 최대 병렬 처리 수준 서버 구성 옵션에 의해 결정되며 MAXDOP 쿼리 힌트 값으로 특정 쿼리에 대해 재정의될 수 있습니다.
최대 재귀 수준 쿼리 힌트를 사용하여 MAXRECURSION 수준이 0보다 큰 최적화 수를 지정했습니다. 최대 재귀 수준이 쿼리 힌트와 함께 지정된 최적화의 평균 MAXRECURSION 수준입니다.
인덱싱된 뷰 로드됨 내부 전용 내부 전용
indexed views matched 하나 이상의 인덱싱된 뷰가 일치하는 최적화 수입니다. 일치된 평균 뷰 수입니다.
indexed views used 일치된 후 하나 이상의 인덱싱된 뷰가 출력 계획에 사용되는 최적화 수입니다. 사용된 평균 뷰 수입니다.
인덱싱된 뷰 업데이트됨 하나 이상의 인덱싱된 뷰를 포함하는 기본 계획을 생성하는 DML 문의 최적화 수입니다. 기본 평균 뷰 수입니다.
동적 커서 요청 동적 커서 요청이 지정된 최적화 수입니다. 해당 없음
빠른 전달 커서 요청 빠른 전달 커서 요청이 지정된 최적화 횟수입니다. 해당 없음
stmt 병합 MERGE 문에 대한 최적화 수입니다. 해당 없음

예제

A. 최적화 프로그램 실행에 대한 통계 보기

이 SQL Server 인스턴스에 대한 현재 최적화 프로그램 실행 통계는 무엇인가요?

SELECT * FROM sys.dm_exec_query_optimizer_info;  

B. 총 최적화 수 보기

수행되는 최적화는 몇 개입니까?

SELECT occurrence AS Optimizations FROM sys.dm_exec_query_optimizer_info  
WHERE counter = 'optimizations';  

C. 최적화당 평균 경과 시간

최적화당 평균 경과 시간은 얼마인가요?

SELECT ISNULL(value,0.0) AS ElapsedTimePerOptimization  
FROM sys.dm_exec_query_optimizer_info WHERE counter = 'elapsed time';  

D. 하위 쿼리를 포함하는 최적화의 분수

하위 쿼리를 포함하는 최적화 쿼리 부분을 확인할 수 있습니다.

SELECT (SELECT CAST (occurrence AS float) FROM sys.dm_exec_query_optimizer_info WHERE counter = 'contains subquery') /  
       (SELECT CAST (occurrence AS float)   
        FROM sys.dm_exec_query_optimizer_info WHERE counter = 'optimizations')  
        AS ContainsSubqueryFraction;  

참고 항목

동적 관리 뷰 및 함수(Transact-SQL)
실행 관련 동적 관리 뷰 및 함수(Transact-SQL)