SQL Server 2014에서 배치 모드로 정확히 실행할 수있는 것은 무엇입니까?
SQL Server 2014는 배치 모드 연산자의 원래 목록에 다음을 추가합니다.
- 해시 외부 조인 (전체 조인 포함)
- 해시 세미 조인
- 해시 안티 세미 조인
- 연합 모두 (연결 만)
- 스칼라 해시 집계 (그룹 별 없음)
- 배치 해시 테이블 빌드가 제거되었습니다.
데이터가 columnstore 인덱스에서 시작되지 않은 경우에도 데이터가 배치 모드로 전환 될 수 있습니다.
SQL Server 2012는 배치 연산자 사용이 매우 제한적이었습니다. 배치 모드 계획은 모양이 고정적이고 휴리스틱에 의존했으며 행 모드 처리로 전환 한 후에 배치 모드를 다시 시작할 수 없었습니다.
SQL Server 2014는 실행 모드 (배치 또는 행)를 쿼리 최적화 프로그램의 일반 속성 프레임 워크에 추가합니다. 즉, 계획의 어느 시점에서나 배치 모드로 전환하거나 배치 모드에서 전환 할 수 있습니다. 계획에서 보이지 않는 실행 모드 어댑터로 전환이 구현됩니다. 이러한 어댑터는 최적화 중에 도입 된 전환 수를 제한하기 위해 관련 비용이 있습니다. 이 새로운 유연한 모델을 혼합 모드 실행이라고합니다.
실행 모드 어댑터는 문서화되지 않은 TF 8607을 사용하여 옵티마이 저의 출력에서 볼 수 있습니다 (슬프게도 사용자가 볼 수있는 실행 계획은 아님).
열 저장소 인덱스를 사용하는 것이 SQL Server를 배치 모드로 간주하는 데 필요한 공식 요구 사항입니까?
오늘은 그렇습니다. 이 제한의 한 가지 가능한 이유는 배치 모드 처리를 Enterprise Edition으로 자연스럽게 제한하기 때문입니다.
배치 모드를 유도하기 위해 columnstore 인덱스가있는 0 행 더미 테이블을 추가 할 수 있습니까?
그렇습니다. 또한 이러한 이유로 사람들이 단일 행 클러스터형 columnstore 인덱스와 교차 결합하는 것을 보았습니다. 거짓 열 더미 테이블에 조인을 남겨 두는 의견에서 제안한 것은 훌륭합니다.
-- Demo the technique (no performance advantage in this case)
--
-- Row mode everywhere
SELECT COUNT_BIG(*) FROM dbo.FactOnlineSales AS FOS;
GO
-- Dummy columnstore table
CREATE TABLE dbo.Dummy (c1 int NULL);
CREATE CLUSTERED COLUMNSTORE INDEX c ON dbo.Dummy;
GO
-- Batch mode for the partial aggregate
SELECT COUNT_BIG(*)
FROM dbo.FactOnlineSales AS FOS
LEFT OUTER JOIN dbo.Dummy AS D ON 0 = 1;
더미 왼쪽 외부 조인을 사용하여 계획 :
문서가 얇다
참된.
최고의 공식 정보 출처는 설명 된 Columnstore Indexes 및 SQL Server Columnstore 성능 조정 입니다.
SQL Server MVP Niko Neugebauer는 일반적으로 columnstore에 대한 훌륭한 시리즈를 제공 합니다 .
공식 리서치 문서가 아니지만 Microsoft Research 논문, SQL Server 컬럼 저장소 향상 (pdf) 의 2014 변경 사항에 대한 유용한 기술 정보가 있습니다.