다음을 통해 공유


SQL 데이터베이스의 인텔리전트 쿼리 처리

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric 내 SQL 데이터베이스

IQP(지능형 쿼리 처리) 기능 제품군에는 도입을 위한 최소한의 구현 노력으로 기존 워크로드의 성능을 개선하는 광범위한 효과를 제공하는 기능이 포함됩니다. 다음 그래픽에서는 IQP 기능 제품군과 SQL Server 처음 도입된 시기를 자세히 설명합니다. 모든 IQP 기능은 Azure SQL Managed Instance 및 Azure SQL Database 사용할 수 있습니다. 일부 기능은 데이터베이스의 호환성 수준에 따라 달라집니다.

지능형 쿼리 처리 제품군의 기능과 이들이 SQL Server에 도입된 시점을 나타내는 다이어그램입니다.

이 동영상을 보고 지능형 쿼리 처리에 대한 개요를 확인하세요.

 

IQP(지능형 쿼리 처리) 기능의 데모 및 샘플 코드는 GitHub 샘플 리포지토리 참조하세요.

데이터베이스에 대해 적용 가능한 데이터베이스 호환성 수준을 사용하도록 설정하여 워크로드가 지능형 쿼리 처리에 자동으로 적합하도록 만들 수 있습니다. Transact-SQL 사용하여 설정할 수 있습니다. 다음은 그 예입니다.

ALTER DATABASE [WideWorldImportersDW]
    SET COMPATIBILITY_LEVEL = 170;

다음 표에서는 모든 지능형 쿼리 처리 기능과 데이터베이스 호환성 수준에 대한 요구 사항을 자세히 설명합니다. 릴리스 정보 및 자세한 설명을 포함하여 모든 IQP 기능에 대한 자세한 내용은 지능형 쿼리 처리 기능을 자세히 참조하세요.

2025년 Azure SQL Database 및 SQL Server의 IQP(지능형 쿼리 처리) 기능

IQP 기능 Azure SQL Database에서 지원됨 2025년 SQL Server 지원(17.x) Description
OPPO(선택적 매개 변수 계획 최적화) 예, 데이터베이스 호환성 수준 170부터 예, SQL Server 2025(17.x)부터 데이터베이스 호환성 수준 170 단일 문에서 여러 계획을 생성하는 PSPO(매개 변수 중요 계획 최적화) 개선과 함께 도입된 적응 계획 최적화(Multiplan) 인프라를 활용합니다. 이 기능은 매개 변수 NULL OR NOT NULL가 있는지 여부에 따라 런타임에 더 최적의 계획을 선택할 수 있습니다. 이렇게 하면 이러한 쿼리 패턴에 대한 최적이 아닌 성능으로 기본값이 될 수 있는 쿼리의 성능이 향상됩니다.
식에 대한 CE(카디널리티 추정) 피드백 예, 데이터베이스 호환성 수준 170부터 예, SQL Server 2025(17.x)부터 데이터베이스 호환성 수준 160 CE 피드백을 확장하여 이전 실행에서 학습하고 해당 식의 향후 실행에 적절한 CE 모델 선택을 자동으로 적용하여 쿼리 간에 식을 반복하는 카디널리티 예상치를 향상시킵니다.
OPTIMIZED_SP_EXECUTESQL Yes 예, SQL Server 2025(17.x)부터 컴파일 폭풍의 영향을 효과적으로 줄입니다. 컴파일 폭풍은 많은 수의 쿼리가 동시에 컴파일되어 성능 문제 및 리소스 경합으로 이어지는 상황입니다. 이 기능을 사용하면 호출이 sp_executesql 컴파일 관점에서 저장 프로시저 및 트리거와 같은 개체처럼 동작할 수 있습니다.

2022년 Azure SQL Database 및 SQL Server IQP 기능

IQP 기능 Azure SQL Database에서 지원됨 SQL Server 2022(16.x) 이상 버전에서 지원됨 Description
적응 조인(일괄 처리 모드) 예, 데이터베이스 호환성 수준 140부터 예, SQL Server 2017(14.x)부터 데이터베이스 호환성 수준 140 적응형 조인은 실제 입력 행을 기준으로 런타임 중에 조인 형식을 동적으로 선택합니다.
대략적인 고유 값 수 Yes SQL Server 2019(15.x)부터 예, 시작합니다. 고성능 및 낮은 메모리 공간의 이점을 통해 빅 데이터 시나리오에 대한 대략 COUNT DISTINCT 적인 정보를 제공합니다.
근사치 백분위 예, 데이터베이스 호환성 수준 110부터 예, 호환성 수준이 110인 SQL Server 2022(16.x)부터 대략적인 백분위수 집계 함수를 사용하여 신속한 의사 결정을 내릴 수 있도록 허용 가능한 순위 기반 오류 범위가 있는 대규모 데이터 세트에 대한 백분위수를 빠르게 계산합니다.
Rowstore의 일괄 처리 모드 예, 데이터베이스 호환성 수준 150부터 예, 호환성 수준이 150인 SQL Server 2019(15.x)부터 columnstore 인덱스를 요구하지 않고 CPU 바인딩 관계형 DW 워크로드에 대한 일괄 처리 모드를 제공합니다.
CE(카디널리티 추정) 피드백 예, 데이터베이스 호환성 수준 160부터 예, 호환성 수준이 160인 SQL Server 2022(16.x)부터 비효율적인 CE 가정으로 인해 쿼리 성능이 저하되는 워크로드를 최적화하기 위해 반복 쿼리에 대한 카디널리티 예측값을 자동으로 조정합니다. CE 피드백은 지정된 쿼리 및 데이터 배포에 더 잘 맞는 모델 가정을 식별하고 사용하여 쿼리 실행 계획 품질을 개선합니다.
DOP(병렬 처리 수준) 피드백 예, 데이터베이스 호환성 수준 160부터 예, 데이터베이스 호환성 수준 160부터 비효율적인 병렬 처리로 인해 성능 문제가 발생할 수 있는 워크로드를 최적화하기 위해 쿼리 반복에 대한 병렬 처리 수준을 자동으로 조정합니다. 쿼리 저장소 사용하도록 설정해야 합니다.
인터리브 실행 예, 데이터베이스 호환성 수준 140부터 예, SQL Server 2017(14.x)부터 데이터베이스 호환성 수준 140 초기 컴파일에서 발생하는 다중 문 테이블 값 함수의 실제 카디널리티를 고정된 추정 대신 사용합니다.
메모리 할당 피드백(일괄 처리 모드) 예, 데이터베이스 호환성 수준 140부터 예, SQL Server 2017(14.x)부터 데이터베이스 호환성 수준 140 일괄 처리 모드 쿼리에 디스크로 분산되는 작업이 있는 경우 연속 실행을 위해 메모리를 추가합니다. 쿼리가 할당된 메모리의 > 50%를 낭비하는 경우 연속 실행을 위한 메모리 부여 크기를 줄입니다.
메모리 할당 피드백(행 모드) 예, 데이터베이스 호환성 수준 150부터 예, SQL Server 2019(15.x)부터 데이터베이스 호환성 수준 150 행 모드 쿼리에 디스크로 분산되는 작업이 있는 경우 연속 실행을 위해 메모리를 추가합니다. 쿼리가 할당된 메모리의 > 50%를 낭비하는 경우 연속 실행을 위한 메모리 부여 크기를 줄입니다.
메모리 부여 피드백(백분위수) 예, 모든 데이터베이스에서 사용하도록 설정 예, 데이터베이스 호환성 수준이 140인 SQL Server 2022(16.x)부터 시작합니다. 이전 쿼리 실행을 통합하여 피드백을 구체화하고 비침해적 방식으로 메모리 부여 피드백의 기존 제한 사항을 해결합니다.
메모리 부여 피드백 지속성 예, 모든 데이터베이스에서 사용하도록 설정 예, 데이터베이스 호환성 수준이 140인 SQL Server 2022(16.x)부터 시작합니다. 메모리 부여 피드백을 유지하는 새로운 기능을 제공합니다. 데이터베이스 및 READ_WRITE 모드에서 쿼리 저장소 사용하도록 설정해야 합니다.
CE 피드백 지속성 예, 데이터베이스 호환성 수준 160부터 예, 데이터베이스 호환성 수준이 160인 SQL Server 2022(16.x)부터 시작합니다. 데이터베이스 및 READ_WRITE 모드에서 쿼리 저장소 사용하도록 설정해야 합니다.
쿼리 저장소를 사용한 최적화된 계획 강제 Yes 예, SQL Server 2022(16.x)부터 시작합니다. 강제 쿼리를 반복하기 위한 컴파일 오버헤드를 줄입니다. 자세한 내용은 쿼리 저장소 최적화된 계획 강제 적용을 참조하십시오.
스칼라 UDF 인라인화 예, 데이터베이스 호환성 수준 150부터 예, SQL Server 2019(15.x)부터 데이터베이스 호환성 수준 150 스칼라 사용자 정의 함수 (UDF)는 호출 쿼리 내에 "인라인"될 수 있는 동등한 관계형 식으로 변환되며, 이는 종종 성능을 대폭 향상시킵니다.
매개 변수 중요한 계획 최적화 예, 데이터베이스 호환성 수준 160부터 예, SQL Server 2022(16.x)부터 데이터베이스 호환성 수준 160 매개 변수 중요한 계획 최적화는 매개 변수가 있는 쿼리에 대해 캐시된 단일 계획이 들어오는 모든 매개 변수 값(예: 균일하지 않은 데이터 배포)에 최적이 아닌 시나리오를 해결합니다.
테이블 변수 지연 컴파일 예, 데이터베이스 호환성 수준 150부터 예, SQL Server 2019(15.x)부터 데이터베이스 호환성 수준 150 고정 추측 대신 첫 번째 컴파일에서 발생한 테이블 변수의 실제 카디널리티를 사용합니다.

Azure SQL Managed Instance 위한 IQP 기능

IQP 기능 Azure SQL Managed Instance에서 지원됨 Description
적응 조인(일괄 처리 모드) 예, 데이터베이스 호환성 수준 140부터 적응형 조인은 실제 입력 행을 기준으로 런타임 중에 조인 형식을 동적으로 선택합니다.
대략적인 고유 값 수 Yes 고성능 및 낮은 메모리 공간의 이점을 통해 빅 데이터 시나리오에 대한 대략 COUNT DISTINCT 적인 정보를 제공합니다.
근사치 백분위 예, 데이터베이스 호환성 수준 110부터 대략적인 백분위수 집계 함수를 사용하여 신속한 의사 결정을 내릴 수 있도록 허용 가능한 순위 기반 오류 범위가 있는 대규모 데이터 세트에 대한 백분위수를 빠르게 계산합니다.
Rowstore의 일괄 처리 모드 예, 데이터베이스 호환성 수준 150부터 columnstore 인덱스를 요구하지 않고 CPU 바인딩 관계형 DW 워크로드에 대한 일괄 처리 모드를 제공합니다.
카디널리티 추정(Cardi.nality Estimation, CE) 피드백 예, 데이터베이스 호환성 수준 160부터 비효율적인 CE 가정으로 인해 쿼리 성능이 저하되는 워크로드를 최적화하기 위해 반복 쿼리에 대한 카디널리티 예측값을 자동으로 조정합니다. CE 피드백은 지정된 쿼리 및 데이터 배포에 더 잘 맞는 모델 가정을 식별하고 사용하여 쿼리 실행 계획 품질을 개선합니다.
식에 대한 CE(카디널리티 추정) 피드백 예, Azure SQL Managed Instance 데이터베이스 호환성 수준 160부터 SQL Server 2025 또는 Always-up-to-date업데이트 정책을 통해 시작합니다. 아니요, SQL Server 2022 업데이트 정책에 대한 것입니다. CE 피드백을 확장하여 이전 실행에서 학습하고 해당 식의 향후 실행에 적절한 CE 모델 선택을 자동으로 적용하여 쿼리 간에 식을 반복하는 카디널리티 예상치를 향상시킵니다.
DOP(병렬 처리 수준) 피드백 예, Azure SQL Managed Instance 데이터베이스 호환성 수준 160부터 SQL Server 2025 또는 항상 최신 상태 유지업데이트 정책. 아니요, SQL Server 2022 업데이트 정책. 비효율적인 병렬 처리로 인해 성능 문제가 발생할 수 있는 워크로드를 최적화하기 위해 쿼리 반복에 대한 병렬 처리 수준을 자동으로 조정합니다. 쿼리 저장소 사용하도록 설정해야 합니다.
인터리브 실행 예, 데이터베이스 호환성 수준 140부터 초기 컴파일에서 발생하는 다중 문 테이블 값 함수의 실제 카디널리티를 고정된 추정 대신 사용합니다.
메모리 할당 피드백(일괄 처리 모드) 예, 데이터베이스 호환성 수준 140부터 일괄 처리 모드 쿼리에 디스크로 분산되는 작업이 있는 경우 연속 실행을 위해 메모리를 추가합니다. 쿼리가 할당된 메모리의 > 50%를 낭비하는 경우 연속 실행을 위한 메모리 부여 크기를 줄입니다.
메모리 할당 피드백(행 모드) 예, 데이터베이스 호환성 수준 150부터 행 모드 쿼리에 디스크로 분산되는 작업이 있는 경우 연속 실행을 위해 메모리를 추가합니다. 쿼리가 할당된 메모리의 > 50%를 낭비하는 경우 연속 실행을 위한 메모리 부여 크기를 줄입니다.
메모리 부여 피드백(백분위수) 예, 데이터베이스 호환성 수준 160부터 이전 쿼리 실행을 통합하여 피드백을 구체화하고 비침해적 방식으로 메모리 부여 피드백의 기존 제한 사항을 해결합니다.
메모리 부여, CE, DOP 피드백 지속성 예, 데이터베이스 호환성 수준 160부터 메모리 부여 피드백을 유지하는 새로운 기능을 제공합니다. CE 및 DOP 피드백은 항상 유지됩니다. 데이터베이스 및 READ_WRITE 모드에서 쿼리 저장소 사용하도록 설정해야 합니다.
OPPO(선택적 매개 변수 계획 최적화) 예, Azure SQL Managed Instance 데이터베이스 호환성 수준 170부터, SQL Server 2025 또는 최신으로 유지되는 Always-up-to-date업데이트 정책으로 시작합니다. 아니요, SQL Server 2022 업데이트 정책에 대해서는 아닙니다. 단일 문에서 여러 계획을 생성하는 PSPO(매개 변수 중요 계획 최적화) 개선과 함께 도입된 적응 계획 최적화(Multiplan) 인프라를 활용합니다. 이 기능은 매개 변수 NULL OR NOT NULL가 있는지 여부에 따라 런타임에 더 최적의 계획을 선택할 수 있습니다. 이렇게 하면 이러한 쿼리 패턴에 대한 최적이 아닌 성능으로 기본값이 될 수 있는 쿼리의 성능이 향상됩니다.
쿼리 저장소를 사용한 최적화된 계획 강제 아님 강제 쿼리를 반복하기 위한 컴파일 오버헤드를 줄입니다. 자세한 내용은 쿼리 저장소 최적화된 계획 강제 적용을 참조하십시오.
매개 변수 중요한 계획 최적화 예, 데이터베이스 호환성 수준 160부터 매개 변수 민감도 계획 최적화는 매개 변수가 있는 쿼리에 대해 캐시된 단일 계획이 들어오는 모든 매개 변수 값(예: 균일하지 않은 데이터 배포)에 최적이 아닌 시나리오를 해결합니다.
스칼라 UDF 인라인화 예, 데이터베이스 호환성 수준 150부터 스칼라 사용자 정의 함수 (UDF)는 호출 쿼리 내에 "인라인"될 수 있는 동등한 관계형 식으로 변환되며, 이는 종종 성능을 대폭 향상시킵니다.
테이블 변수 지연 컴파일 예, 데이터베이스 호환성 수준 150부터 고정 추측 대신 첫 번째 컴파일에서 발생한 테이블 변수의 실제 카디널리티를 사용합니다.

SQL Server 2019의 IQP 기능

IQP 기능 2019년 SQL Server 지원됨(15.x) Description
적응 조인(일괄 처리 모드) 예, SQL Server 2017(14.x)부터 데이터베이스 호환성 수준 140 적응형 조인은 실제 입력 행을 기준으로 런타임 중에 조인 형식을 동적으로 선택합니다.
대략적인 고유 값 수 Yes 고성능 및 낮은 메모리 공간의 이점을 통해 빅 데이터 시나리오에 대한 대략 COUNT DISTINCT 적인 정보를 제공합니다.
Rowstore의 일괄 처리 모드 예, 데이터베이스 호환성 수준 150부터 columnstore 인덱스를 요구하지 않고 CPU 바인딩 관계형 DW 워크로드에 대한 일괄 처리 모드를 제공합니다.
인터리브 실행 예, 데이터베이스 호환성 수준 140부터 첫 번째 컴파일 시점에서 발생한 다중 문 테이블 값 함수의 실제 카디널리티를 고정된 추측 대신 사용합니다.
메모리 할당 피드백(일괄 처리 모드) 예, 데이터베이스 호환성 수준 140부터 일괄 처리 모드 쿼리에 디스크로 분산되는 작업이 있는 경우 연속 실행을 위해 메모리를 추가합니다. 쿼리가 할당된 메모리의 > 50%를 낭비하는 경우 연속 실행을 위한 메모리 부여 크기를 줄입니다.
메모리 할당 피드백(행 모드) 예, 데이터베이스 호환성 수준 150부터 행 모드 쿼리에 디스크로 분산되는 작업이 있는 경우 연속 실행을 위해 메모리를 추가합니다. 쿼리가 할당된 메모리의 > 50%를 낭비하는 경우 연속 실행을 위한 메모리 부여 크기를 줄입니다.
스칼라 UDF 인라인화 예, 데이터베이스 호환성 수준 150부터 스칼라 사용자 정의 함수 (UDF)는 호출 쿼리 내에 "인라인"될 수 있는 동등한 관계형 식으로 변환되며, 이는 종종 성능을 대폭 향상시킵니다.
테이블 변수 지연 컴파일 예, 데이터베이스 호환성 수준 150부터 고정 추측 대신 첫 번째 컴파일에서 발생한 테이블 변수의 실제 카디널리티를 사용합니다.

SQL Server 2017의 IQP 기능

IQP 기능 SQL Server 2017에서 지원됨(14.x) Description
적응 조인(일괄 처리 모드) 예, SQL Server 2017(14.x)부터 데이터베이스 호환성 수준 140 적응형 조인은 실제 입력 행을 기준으로 런타임 중에 조인 형식을 동적으로 선택합니다.
대략적인 고유 값 수 Yes 고성능 및 낮은 메모리 공간의 이점을 통해 빅 데이터 시나리오에 대한 대략 COUNT DISTINCT 적인 정보를 제공합니다.
인터리브 실행 예, 데이터베이스 호환성 수준 140부터 고정 추측 대신 첫 번째 컴파일 시 사용된 다중 문 테이블 값 함수의 실제 카디널리티를 사용합니다.
메모리 할당 피드백(일괄 처리 모드) 예, 데이터베이스 호환성 수준 140부터 일괄 처리 모드 쿼리에 디스크로 분산되는 작업이 있는 경우 연속 실행을 위해 메모리를 추가합니다. 쿼리가 할당된 메모리의 > 50%를 낭비하는 경우 연속 실행을 위한 메모리 부여 크기를 줄입니다.

쿼리 저장소 요구 사항

인텔리젠트 쿼리 처리 기능 제품군 중 일부는 사용자 데이터베이스를 활용하기 위해 쿼리 저장소 사용하도록 설정해야 합니다. 쿼리 저장소 사용하려면 쿼리 저장소을 참조하세요.

IQP 기능 쿼리 저장소 사용하도록 설정하고 READ_WRITE 필요합니다.
적응 조인(일괄 처리 모드) No
대략적인 고유 값 수 No
근사치 백분위 No
Rowstore의 일괄 처리 모드 No
카디널리티 추정(Cardi.nality Estimation, CE) 피드백 Yes
DOP(병렬 처리 수준) 피드백 Yes
인터리브 실행 No
메모리 할당 피드백(배치 모드) No
메모리 할당 피드백(행 모드) No
메모리 부여 피드백(백분위수 및 지속성 모드) Yes
쿼리 저장소로 최적화된 계획 강제 Yes
스칼라 UDF 인라인화 No
매개 변수 중요한 계획 최적화 아니요, 하지만 권장
테이블 변수 지연 컴파일 No