columnstore 인덱스의 새로운 기능

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System(PDW)

각 버전의 SQL Server에 사용할 수 있는 columnstore 기능과 SQL Database, Azure Synapse Analytics 및 PDW(Analytics Platform System)의 최신 릴리스에 대해 알아봅니다.

제품 릴리스에 대한 기능 요약

이 표에는 columnstore 인덱스 및 사용할 수 있는 제품에 대한 주요 기능이 요약되어 있습니다.

Columnstore 인덱스 기능 SQL Server 2012(11.x) SQL Server 2014(12.x) SQL Server 2016 (13.x)1 SQL Server 2017(14.x) SQL Server 2019 (15.x) SQL Server 2022(16.x) SQL Database1 Azure Synapse Analytics 전용 SQL 풀
다중 스레드 쿼리에 대한 일괄 처리 모드 실행 2
단일 스레드 쿼리에 대한 일괄 처리 모드 실행
보관 압축 옵션
스냅샷 격리 및 커밋된 읽기 스냅샷 격리
테이블을 만들 때 columnstore 인덱스 지정
Always On에서 columnstore 인덱스를 지원합니다.
Always On 읽기 가능 보조 데이터베이스는 읽기 전용 비클러스터형 columnstore 인덱스를 지원합니다.
Always On 읽기 가능한 보조는 업데이트할 수 있는 columnstore 인덱스 지원
힙 또는 B-tree에 대한 읽기 전용 비클러스터형 columnstore 인덱스 3 3 3 3 3 3
힙 또는 B-트리에서 업데이트할 수 있는 비클러스터형 columnstore 인덱스
비클러스터형 columnstore 인덱스가 있는 힙 또는 B-트리에서 허용되는 추가 B-트리 인덱스
업데이트 가능한 클러스터형 columnstore 인덱스
클러스터형 columnstore 인덱스 B-트리 인덱스
메모리 최적화 테이블의 Columnstore 인덱스
비클러스터형 columnstore 인덱스 정의는 필터링된 조건 사용을 지원합니다.
CREATE TABLEALTER TABLE의 columnstore 인덱스에 대한 압축 지연 옵션
nvarchar(max) 형식 지원 아니요 4
Columnstore 인덱스에는 비지속형 계산 열이 있을 수 있음
튜플 이동기 백그라운드 병합 지원
정렬된 클러스터형 columnstore 인덱스

1 SQL Database의 경우 columnstore 인덱스는 Azure SQL Database DTU 프리미엄 계층, DTU 표준 계층 - S3 이상 및 모든 vCore 계층에서 사용할 수 있습니다. SQL Server 2016(13.x) SP1 이상 버전의 경우 columnstore 인덱스는 모든 버전에서 사용할 수 있습니다. SQL Server 2016(13.x)(SP1 이전) 및 이전 버전의 경우 columnstore 인덱스는 Enterprise Edition에서만 사용할 수 있습니다.

2 일괄 처리 모드 작업에 대한 DOP(병렬 처리 수준)는 SQL Server Standard Edition의 경우 2, SQL Server Web 및 Express Edition의 경우 1로 제한됩니다. 이 제한은 디스크 기반 테이블 및 메모리 최적화 테이블을 통해 생성된 columnstore 인덱스를 나타냅니다.

3 읽기 전용 비클러스터형 columnstore 인덱스 만들려면 읽기 전용 파일 그룹에 인덱스 저장

4 전용 SQL 풀에서는 지원되지 않지만 서버리스 SQL 풀에서 지원됩니다.

SQL Server 2022(16.x)

SQL Server 2022(16.x)는 이러한 새로운 기능을 추가합니다. 자세한 내용은 SQL Server 2022의 새로운 기능(16.x)을 참조하세요.

  • 정렬된 클러스터형 columnstore 인덱스는 정렬된 열 조건자를 기반으로 쿼리의 성능을 향상시킵니다. 정렬된 columnstore 인덱스는 데이터 세그먼트를 모두 건너뛰어 성능을 향상시킬 수 있습니다. 이렇게 하면 columnstore 데이터에 대한 쿼리를 완료하는 데 필요한 IO를 크게 줄일 수 있습니다. 자세한 내용은 세그먼트 제거를 참조 하세요. 정렬된 클러스터 columnstore 인덱스는 SQL Server 2022(16.x)에서 사용할 수 있습니다. 자세한 내용은 정렬된 클러스터형 columnstore 인덱스로 CREATE COLUMNSTORE INDEX성능 튜닝을 참조하세요.

  • 문자열의 클러스터형 columnstore 행 그룹 제거를 사용하는 조건자 푸시다운은 경계 값을 사용하여 문자열 검색을 최적화합니다. 모든 columnstore 인덱스는 데이터 형식별로 향상된 세그먼트 제거의 이점을 누릴 수 있습니다. SQL Server 2022(16.x)부터 이러한 세그먼트 제거 기능은 문자열, 이진 및 guid 데이터 형식 및 2보다 큰 배율에 대한 datetimeoffset 데이터 형식으로 확장됩니다. 이전에는 columnstore 세그먼트 제거가 숫자, 날짜 및 시간 데이터 형식 및 소수 자릿수가 2보다 작거나 같은 datetimeoffset 데이터 형식에만 적용되었습니다. 문자열 최소/최대 세그먼트 제거(SQL Server 2022(16.x) 이상 버전)를 지원하는 SQL Server 버전으로 업그레이드한 후에는 REBUILD 또는 DROP/CREATE를 사용하여 다시 작성될 때까지 columnstore 인덱스가 이 기능에 도움이 되지 않습니다.

SQL Server 2019 (15.x)

SQL Server 2019(15.x)는 다음과 같은 새로운 기능을 추가합니다.

기능적

SQL Server 2019(15.x)부터 튜플 이동기는 내부 임계값에 따라 일정 시간 동안 존재했던 더 작은 OPEN 델타 행 그룹을 자동으로 압축하거나 많은 수의 행이 삭제된 곳에서 COMPRESSED 행 그룹을 병합하는 백그라운드 병합 작업의 도움을 받습니다. 이전에는 행 그룹을 부분적으로 삭제된 데이터와 병합하기 위해 인덱스 재구성 작업이 필요했습니다. 그러면 시간이 지남에 따라 columnstore 인덱스 품질이 향상됩니다.

SQL Server 2017(14.x)

SQL Server 2017(14.x)은 이러한 새로운 기능을 추가합니다.

기능적

  • SQL Server 2017(14.x)은 클러스터형 columnstore 인덱스의 비지속형 계산 열을 지원합니다. 클러스터형 columnstore 인덱스에서는 지속형 계산 열이 지원되지 않습니다. 계산 열에는 비클러스터형 columnstore 인덱스 만들 수 없습니다.

SQL Server 2016(13.x)

SQL Server 2016(13.x)은 columnstore 인덱스의 성능과 유연성을 향상시키기 위해 주요 향상된 기능을 추가합니다. 이러한 향상된 기능은 데이터 웨어하우징 시나리오를 향상시키고 실시간 운영 분석을 가능하게 합니다.

기능적

  • Rowstore 테이블에는 업데이트할 수 있는 비클러스터형 columnstore 인덱스 한 개가 있을 수 있습니다. 이전에는 비클러스터형 columnstore 인덱스가 읽기 전용이었습니다.

  • 비클러스터형 columnstore 인덱스 정의는 필터링된 조건 사용을 지원합니다. OLTP 테이블에 columnstore 인덱스 추가의 성능 영향을 최소화하려면 필터링된 조건을 사용하여 운영 워크로드의 콜드 데이터에만 비클러스터형 columnstore 인덱스 만들기

  • 메모리 내 테이블에는 columnstore 인덱스가 한 개만 있을 수 있습니다. 테이블을 만들 때 만들거나 나중에 ALTER TABLE(Transact-SQL)을 사용하여 추가할 수 있습니다. 이전에는 디스크 기반 테이블에만 columnstore 인덱스가 있을 수 있었습니다.

  • 클러스터형 columnstore 인덱스에는 하나 이상의 비클러스터형 rowstore 인덱스가 있을 수 있습니다. 이전에는 columnstore 인덱스가 비클러스터형 인덱스를 지원하지 않았습니다. SQL Server는 DML 작업에 대한 비클러스터형 인덱스를 자동으로 기본.

  • B-트리 인덱스를 사용하여 클러스터형 columnstore 인덱스에 이러한 제약 조건을 적용하여 기본 키 및 외세 키를 지원합니다.

  • Columnstore 인덱스에는 실시간 운영 분석에 대한 트랜잭션 워크로드의 영향을 최소화하는 압축 지연 옵션이 있습니다. 이 옵션을 사용하면 행을 columnstore로 압축하기 전에 자주 변경하는 행이 안정화됩니다. 자세한 내용은 실시간 운영 분석을 위해 CREATE COLUMNSTORE INDEX(Transact-SQL) 및 Columnstore 시작(Columnstore 시작)을 참조하세요.

데이터베이스 호환성 수준 120 또는 130에 대한 성능

  • Columnstore 인덱스는 커밋된 읽기 스냅샷 격리 수준(RCSI) 및 SI(스냅샷 격리)를 지원합니다. 이렇게 하면 잠금 없이 트랜잭션 일치 분석 쿼리를 사용할 수 있습니다.

  • Columnstore는 인덱스를 명시적으로 다시 작성할 필요 없이 삭제된 행을 제거하여 인덱스 조각 모음을 지원합니다. 이 문은 ALTER INDEX ... REORGANIZE 내부적으로 정의된 정책에 따라 columnstore에서 삭제된 행을 온라인 작업으로 제거합니다.

  • Columnstore 인덱스는 Always On 읽기 가능한 보조 복제본(replica) 액세스할 수 있습니다. 분석 쿼리를 Always On 보조 복제본(replica) 오프로드하여 운영 분석의 성능을 향상시킬 수 있습니다.

  • 집계 푸시다운은 데이터 형식이 8바이트 이하를 사용하고 문자열 데이터 형식이 아닌 경우 집계 함수MINMAX, , AVGSUMCOUNT및 테이블 검색 중에 계산합니다. 집계 푸시다운은 클러스터형 columnstore 인덱스와 비클러스터형 columnstore 인덱스에 대해 절을 사용하거나 사용하지 않고 GROUP BY 지원됩니다. SQL Server에서 이 향상된 기능은 Enterprise Edition용으로 예약되어 있습니다.

  • 문자열 조건자 푸시다운은 VARCHAR/CHAR 또는 NVARCHAR/NCHAR 형식의 문자열을 비교하는 쿼리 속도를 향상합니다. 이는 일반적인 비교 연산자 및 비트맵 필터를 사용하는 연산 LIKE 자를 포함합니다. 지원되는 모든 데이터 정렬에서 작동합니다. SQL Server에서 이 향상된 기능은 Enterprise Edition용으로 예약되어 있습니다.

  • 벡터 기반 하드웨어 기능을 활용하여 일괄 처리 모드 작업을 향상시킵니다. 이 데이터베이스 엔진 AVX 2(고급 벡터 확장) 및 SSE 4(스트리밍 SIMD 확장 4) 하드웨어 확장에 대한 CPU 지원 수준을 검색하고 지원되는 경우 사용합니다. SQL Server에서 이 향상된 기능은 Enterprise Edition용으로 예약되어 있습니다.

데이터베이스 호환성 수준 130에 대한 성능

  • 다음 작업을 사용하는 쿼리에 대한 새 일괄 처리 모드 실행 지원:

    • SORT
    • 여러 고유 함수를 사용하여 집계합니다. 몇 가지 예: COUNT/COUNT, AVG/SUM, CHECKSUM_AGGSTDEV/STDEVP
    • 창 집계 함수: COUNT, COUNT_BIG, SUM, AVG, MIN, MAX, CLR
    • 창 사용자 정의 집계: CHECKSUM_AGG,, STDEVSTDEVP, VARVARPGROUPING
    • 창 집계 분석 함수: LAG,LEAD, FIRST_VALUE, LAST_VALUEPERCENTILE_CONT, PERCENTILE_DISC, CUME_DISTPERCENT_RANK
  • 직렬 쿼리 계획에서 MAXDOP 1 실행되거나 직렬 쿼리 계획으로 실행되는 단일 스레드 쿼리는 일괄 처리 모드에서 실행됩니다. 이전에는 일괄 처리 실행으로 다중 스레드 쿼리만 실행했습니다.

  • 메모리 최적화 테이블 쿼리는 rowstore 또는 columnstore 인덱스의 데이터에 액세스할 때 SQL InterOp 모드에서 병렬 계획을 가질 수 있습니다.

지원 가능성

이러한 시스템 보기는 columnstore의 새로운 기능입니다.

이러한 메모리 내 OLTP 기반 DMV는 columnstore에 대한 업데이트를 포함합니다.

제한 사항

  • 메모리 내 테이블의 경우 columnstore 인덱스에는 모든 열이 포함되어야 합니다. columnstore 인덱스가 필터링된 조건을 가질 수 없습니다.
  • 메모리 내 테이블의 경우 columnstore 인덱스에 대한 쿼리는 메모리 내 기본 모드가 아닌 InterOP 모드에서만 실행됩니다. 병렬 실행이 지원됩니다.

알려진 문제

적용 대상: SQL Server, Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics 전용 SQL 풀

  • 현재 압축된 columnstore 세그먼트의 LOB 열(varbinary(max), varchar(max) 및 nvarchar(max)는 DBCC SHRINKDATABASE 및 DBCC SHRINKFILE의 영향을 받지 않습니다.

SQL Server 2014(12.x)

SQL Server 2014(12.x)는 클러스터형 columnstore 인덱스가 기본 스토리지 형식으로 도입되었습니다. 이렇게 하면 일반 로드뿐만 아니라 업데이트, 삭제 및 삽입 작업이 허용되었습니다.

  • 테이블은 클러스터형 columnstore 인덱스(columnstore 인덱스)를 기본 테이블 스토리지로 사용할 수 있습니다. 테이블에는 다른 인덱스가 허용되지 않지만 클러스터형 columnstore 인덱스를 업데이트할 수 있으므로 일반 로드를 수행하고 개별 행을 변경할 수 있습니다.
  • 비클러스터형 columnstore 인덱스도 이제 일괄 처리 모드에서 실행할 수 있는 추가 연산자를 제외하고 SQL Server 2012(11.x)와 동일한 기능을 계속 사용합니다. 다시 만들기 및 파티션 전환의 사용을 제외하고 여전히 업데이트는 불가능합니다. 비클러스터형 columnstore 인덱스는 메모리 내 테이블이 아닌 디스크 기반 테이블에서만 지원됩니다.
  • 클러스터형 및 비클러스터형 columnstore 인덱스에는 데이터를 추가로 압축하는 보관 압축 옵션이 있습니다. 보관 옵션은 메모리와 디스크에서 모두 데이터 크기를 줄이는 데 유용하지만 쿼리 성능이 저하됩니다. 이는 자주 액세스하지 않는 데이터에 적합합니다.
  • 클러스터형 columnstore 인덱스 및 비클러스터형 columnstore 인덱스는 매우 유사하게 작동합니다. 즉, 같은 열 형식 스토리지 형식, 같은 쿼리 처리 엔진 및 같은 동적 관리 뷰 집합을 사용합니다. 차이점은 주 인덱스 형식과 보조 인덱스 형식이며 비클러스터형 columnstore 인덱스는 읽기 전용입니다.
  • 이러한 연산자는 다중 스레드 쿼리에 대해 일괄 처리 모드로 실행됩니다. 검사, 필터, 프로젝트, 조인, 그룹화 기준 및 합집합 모두.

SQL Server 2012(11.x)

SQL Server 2012(11.x)는 비클러스터형 columnstore 인덱스를 rowstore 테이블의 다른 인덱스 형식으로 도입하고 columnstore 데이터에 대한 쿼리에 대한 일괄 처리를 도입했습니다.

  • rowstore 테이블에는 비클러스터형 columnstore 인덱스가 하나 있을 수 있습니다.
  • columnstore 인덱스는 읽기 전용입니다. columnstore 인덱스를 만든 후에는 , 및 UPDATE 작업별로 INSERTDELETE테이블을 업데이트할 수 없습니다. 이러한 작업을 수행하려면 인덱스를 삭제하고 테이블을 업데이트하고 columnstore 인덱스를 다시 작성해야 합니다. 파티션 전환을 사용하여 테이블에 추가 데이터를 로드할 수 있습니다. 파티션 전환의 장점은 columnstore 인덱스 삭제 및 다시 작성 없이 데이터를 로드할 수 있다는 것입니다.
  • columnstore 인덱스는 데이터의 복사본을 저장하기 때문에 항상 추가 스토리지가 필요하며, 일반적으로 rowstore보다 10% 더 필요합니다.
  • 일괄 처리는 2배 이상의 쿼리 성능을 제공하지만 병렬 쿼리 실행에만 사용할 수 있습니다.