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, S0 및 S1 서비스 목표 및 탄력적 풀의 데이터베이스에는 서버 관리자 계정, 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;
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기