기둥 저장소 구조
열 저장소 데이터는 열당 하나 이상의 세그먼트 (일반 LOB 할당 단위)에 실제로 저장되며 일반적인 방식으로 분할 될 수도 있습니다. 각 세그먼트에는 약 100 만 행의 압축률이 높은 값 또는 값 참조가 포함되어 있습니다 (여러 압축 기술을 사용할 수 있음). 값 참조는 최대 2 개의 해시 사전 중 하나의 항목에 연결됩니다 .
쿼리는 실행 중에 실제 데이터 값이 필요할 때마다 사전의 세그먼트에서 데이터 값 ID를 찾은 상태로 사전이 메모리 에 고정됩니다 (이 조회는 성능상의 이유로 가능한 한 지연됩니다).
세그먼트에는 또한 세그먼트에 저장된 최소값 및 최대 값과 같은 메타 데이터를 포함하는 헤더 레코드가 있습니다. 헤더의 정보는 종종 실행시 완전한 파티션 처리 를 제거 하는 데 사용될 수 있습니다 . 헤더 레코드 정보는 일반적인 LOB 데이터 루트 구조에 저장되므로 세그먼트를 제거하면 스토리지 엔진이 물리적 스토리지에서 LOB 데이터 페이지를 완전히 읽는 것을 건너 뛸 수 있습니다. 제거 가능성을 최대화하려면 Columnstore 인덱스가 생성 될 때 클러스터 된 인덱스 순서에 대한 종속성 을 포함하여 신중한 디자인 이 필요할 수 있습니다 .
특정 계획 운영자
SQL Server 2012에는 배치 모드라는 새로운 실행 모드가 도입되었습니다. 이 모드에서는 약 1000 행의 패킷이 운영자간에 전달되므로 프로세서 활용 효율이 크게 향상됩니다. 각 패킷 내에서 열 데이터는 벡터로 표시됩니다. 모든 계획 연산자가 배치 모드 작업을 지원하는 것은 아니지만 Columnstore Index Scan, Hash Inner Join, Batch Hash Table Build, Bitmap Filter, Hash Aggregate ( 스칼라 집계 아님), Filter 및 Compute Scalar (투영 및 표현 용)를 포함하는 예 평가). 쿼리 실행 계획이 예상 및 실제 실행 모드를 표시하도록 향상되었습니다.
안티 패턴
첫 번째 릴리스에는 허용 가능한 데이터 형식 에 대한 제약 조건을 비롯하여 많은 제한이 있습니다 . 가장 일반적인 유형이 지원됩니다. 지원되지 않는 데이터 유형은 DECIMAL
18 진수,보다 큰 정밀도로 (N)VARCHAR(MAX)
, UNIQUEIDENTIFIER
, CLR 유형 및 (VAR)BINARY
.
사용 문자열 타입은 , OUTER JOIN
, IN
,EXISTS
, NOT IN
, OR
, UNION ALL
대안이 섹션에 연결된 문서에서 나타낸 바와 같이 일반적으로 특이 재기록 구문을 포함하지 않는 것을 이용 대폭 저감 성능 (로우 모드 실행)을 초래할 수있다.
더 많은 정보
Remus Rusanu는 여기 에서 훌륭한 개요를 블로그에 올렸 습니다 .