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

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

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

지능형 쿼리 처리 기능 제품군 및 해당 기능이 SQL Server에 처음 도입된 시기의 다이어그램.

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

GitHub의 IQP(지능형 쿼리 처리) 기능의 데모 및 샘플 코드는 https://aka.ms/IQPDemos을 참조하세요.

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

ALTER DATABASE [WideWorldImportersDW] SET COMPATIBILITY_LEVEL = 160;

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

Azure SQL 데이터베이스 및 SQL Server 2022(16.x)용 IQP 기능

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

Azure SQL Managed Instance용 IQP 기능

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

SQL Server 2019(15.x)용 IQP 기능

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

SQL Server 2017(14.x)용 IQP 기능

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

쿼리 저장소 요구 사항

몇 가지 지능형 쿼리 처리 기능 제품군에서는 사용자 데이터베이스를 활용하기 위해 쿼리 저장소를 사용하도록 설정해야 합니다. 쿼리 저장소를 사용하도록 설정해야 하는 경우 쿼리 저장소 사용을 참조하세요.

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

릴리스 정보와 상세한 설명을 포함한 모든 IQP 기능에 대한 자세한 내용은 IQP(지능형 쿼리 처리) 기능 세부 정보를 참조하세요.