다음을 통해 공유


식에 대한 CE(카디널리티 추정) 피드백

적용 대상:적용 대상:Microsoft Fabric의 SQL Server 2025(17.x) 미리 보기 Azure SQL Database SQL 데이터베이스

정확하지 않은 카디널리티 예측은 쿼리 최적화 중 성능 저하를 야기하는 경우가 많습니다. 식에 대한 CE(카디널리티 추정) 피드백은 CE 피드백 기능으로 시작된 프레임워크를 확장합니다. 목표는 반복 식에 대한 카디널리티 예상치를 개선하는 것입니다. 식에 대한 피드백 기능은 쿼리에서 식의 이전 실행에서 학습하여 적절한 CE 모델 선택을 찾고 이러한 식의 향후 실행에 학습된 내용을 적용합니다. CE 피드백과 마찬가지로 모델 권장 사항은 테스트되고 향후 쿼리 실행에 자동으로 적용됩니다.

식 기능에 대한 피드백은 지정된 쿼리의 식 및 데이터 분포에 더 잘 맞는 모델 가정을 식별하고 사용하므로 쿼리 실행 계획 품질이 향상됩니다. 현재 식 기능에 대한 피드백은 예상 행 수와 실제 행 수가 매우 다른 계획 연산자를 식별할 수 있습니다. 피드백은 중요한 모델 추정 오류가 발생할 때 쿼리 내의 식에 적용되며, 시도할 수 있는 대체 모델이 있습니다.

데이터베이스 엔진의 여러 버전에서는 데이터를 배포하고 쿼리하는 방법에 따라 서로 다른 CE 모델 가정을 사용합니다.

작동 방식

지문은 SQL Server 데이터베이스 엔진의 새로운 개념은 아니지만 식 기능에 대한 피드백 컨텍스트의 지문 은 식 내에서 계산된 서명의 조합을 나타냅니다. 예를 들어 가상 비즈니스의 비즈니스 분석가는 해당 고객이 $10,000 이상을 지출한 고객의 주문에 대한 정보를 얻고자 할 수 있습니다. Customers 테이블에서 데이터를 수집하고 Orders 테이블에 조인하는 select 문은 이러한 유형의 데이터를 보기 위한 한 가지 방법일 수 있습니다.

SELECT *
FROM Customer AS C
     INNER JOIN Orders AS O
         ON C.custkey = O.o_custkey
WHERE O.o_totalprice > 10000;

이 쿼리의 경우, 쿼리 최적화 프로그램은 각 테이블에서 데이터를 가져온 다음, 두 테이블에서 모든 관련 열을 선택하고 주문 금액이 $10,000보다 큰 데이터(필터 포함)를 조인하여 결합할 수 있습니다. 이 과정의 각 단계마다, 표현에 대한 피드백 기능이 사용하는 지문을 구성하는 서명이 생성됩니다.

이 기능은 쿼리에서 일관된 카디널리티 과잉 추정/과소 추정이 있는 식에 중점을 둡니다. 현재 CE 피드백에 적합하지 않은 두 가지 워크로드 패턴을 분석합니다.

  • 반복 실행이 없는 워크로드이지만 식 패턴이 반복됩니다. 예를 들어 일반적으로 사용되는 조인 패턴입니다.

  • 쿼리의 한 부분이 동일한 쿼리의 다른 부분과 다른 CE 모델의 이점을 얻을 수 있는 쿼리입니다. 예를 들어 테이블 A와 B 간의 조인에는 간단한 포함이 필요할 수 있으며, 기본 포함이 필요할 수 있는 테이블 C와 D 간의 조인이 필요할 수 있습니다.

표현 기능에 대한 피드백은 필터 및 조인 가정을 적용하여 추정 오류 문제를 해결합니다.

필터:

  • ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES
  • ASSUME_PARTIAL_CORRELATION_FOR_FILTER_ESTIMATES
  • ASSUME_FULL_INDEPENDENCE_FOR_FILTER_ESTIMATES

조인:

  • ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS
  • 기본 포함 가정(힌트를 전달할 필요가 없음)

표현에 CE 피드백 사용

데이터베이스의 식 피드백 기능을 활성화하려면 다음의 필수 조건이 필요합니다.

  • 데이터베이스는 호환성 수준 160 이상을 사용해야 합니다.

  • CE_FEEDBACK_FOR_EXPRESSIONS 데이터베이스 범위 구성을 사용하도록 설정해야 합니다.

CE_FEEDBACK_FOR_EXPRESSIONS 데이터베이스 범위 구성은 기본적으로 사용하도록 설정됩니다.

다음 문을 실행하여 데이터베이스가 SQL Server 2025(17.x) 미리 보기의 식 기능에 대한 피드백을 사용하는지 확인할 수 있습니다.

ALTER DATABASE SCOPED CONFIGURATION SET CE_FEEDBACK_FOR_EXPRESSIONS = ON;

식 기능에 대한 피드백을 비활성화하려면, 데이터베이스 범위 구성을 CE_FEEDBACK_FOR_EXPRESSIONS 비활성화합니다.

ALTER DATABASE SCOPED CONFIGURATION SET CE_FEEDBACK_FOR_EXPRESSIONS = OFF;
  • 식 활동에 대한 CE 피드백은 adhoc_ce_feedback_query_level_telemetry, query_adhoc_ce_feedback_expression_hint, 및 query_adhoc_ce_feedback_hint 확장 이벤트를 통해 볼 수 있습니다. CE 피드백 확장 이벤트 query_ce_feedback_begin_analysisquery_ce_feedback_telemetry 기능의 활동을 추적 하는 동안 유용할 수도 있습니다.

  • 지문 데이터를 캐시하는 곳으로 AdHocCEFeedbackCache이라는 새 메모리 관리 시스템이 있습니다. 캐시는 새 시스템 카탈로그 뷰 sys.dm_exec_ce_feedback_cache를 통해 액세스할 수 있습니다.

제한점

표현 기능에 대한 CE 피드백에는 현재 다음 기능이 포함되어 있지 않습니다.

  • 지속성: 지문 테이블 및 식 수준 힌트의 쿼리 저장소 지속성은 이후 CTP에서 사용할 수 있습니다. SQL Server를 다시 시작하면 식 기능에 대한 피드백이 다시 학습되고 현재 워크로드에 힌트를 적용해야 합니다.