다음을 통해 공유


sys.column_store_row_groups(Transact-SQL)

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

세그먼트별로 columnstore 인덱스 정보를 제공합니다.

클러스터형 columnstore 인덱스의 sys.column_store_row_groups 경우 물리적으로 저장된 총 행 수(삭제된 것으로 표시된 행 포함)에 대한 열과 삭제된 것으로 표시된 행 수에 대한 열이 있습니다. 삭제된 행의 비율이 높고 다시 작성해야 하는 행 그룹을 결정하는 데 사용합니다 sys.column_store_row_groups .

열 이름 데이터 형식 설명
object_id int 이 인덱스가 정의된 테이블의 ID입니다.
index_id int columnstore 인덱스의 ID입니다.
partition_number int 로 식별 row_group_id되는 행 그룹을 보유하는 테이블 파티션입니다. 조sys.partitions인하는 데 사용합니다partition_number.
row_group_id int 이 행 그룹과 연결된 행 그룹 번호입니다. 이 숫자는 파티션 내에서 고유합니다.

-1 = 메모리 최적화 테이블의 꼬리입니다.
delta_store_hobt_id bigint hobt_id 델타 저장소의 OPEN 행 그룹에 대한 것입니다.

행 그룹이 델타 저장소에 없으면 NULL입니다.

메모리 최적화 테이블의 꼬리에 대한 NULL입니다.
state tinyint 행 그룹 상태를 설명하는 숫자입니다.

0 = INVISIBLE

1 = OPEN

2 = CLOSED

3 = COMPRESSED

4 = TOMBSTONE
state_description nvarchar(60) 행 그룹의 상태에 대한 설명:

INVISIBLE - 델타 저장소의 데이터에서 빌드되는 과정에서 숨겨진 압축 세그먼트입니다. 읽기 작업은 보이지 않는 압축 세그먼트가 완료될 때까지 델타 저장소를 사용합니다. 그런 다음 새 세그먼트가 표시되고 원본 델타 저장소가 제거됩니다.

OPEN - 새 행을 허용하는 읽기/쓰기 행 그룹입니다. 열려 있는 행 그룹은 여전히 rowstore 형식이며 columnstore 형식으로 압축되지 않습니다.

CLOSED - 채워졌지만 튜플 이동기 프로세스에 의해 아직 압축되지 않은 행 그룹입니다.

COMPRESSED - 채워지고 압축된 행 그룹입니다.
total_rows bigint 행 그룹에 물리적으로 저장된 총 행입니다. 삭제된 행은 여전히 저장될 수 있습니다. 행 그룹의 최대 행 수는 1,048,576개입니다.
deleted_rows bigint 삭제된 것으로 표시되지만 저장된 상태로 유지되는 행 그룹의 총 행 수입니다. 이 값은 항상 0 델타 행 그룹에 대한 값입니다.

비클러스터형 columnstore 인덱스의 경우 이 값은 삭제 버퍼에 저장된 삭제된 행을 포함하지 않습니다. 자세한 내용 및 삭제 버퍼에서 삭제된 행 수를 찾으려면 sys.internal_partitions 참조하세요.
size_in_bytes bigint 델타 저장소 및 columnstore 행 그룹 모두에 대해 이 행 그룹의 모든 데이터 크기(메타데이터 또는 공유 사전 포함 안 됨)입니다.

설명

클러스터형 또는 비클러스터형 columnstore 인덱스가 있는 각 테이블의 각 파티션에 대해 각 columnstore 행 그룹에 대해 하나의 행을 반환합니다.

행 그룹에 있는 행 수와 행 그룹의 크기를 확인하는 데 사용합니다 sys.column_store_row_groups .

행 그룹의 삭제된 행 수가 전체 행의 큰 비율로 증가하면 테이블의 효율성이 떨어집니다. columnstore 인덱스 다시 작성하여 테이블 크기를 줄여 테이블을 읽는 데 필요한 디스크 I/O를 줄입니다. columnstore 인덱스 다시 작성하려면 문의 절을 ALTER INDEX 사용합니다REBUILD.

업데이터 가능한 columnstore는 먼저 rowstore 형식이며 델타 테이블이라고도 하는 열린 행 그룹에 새 데이터를 삽입합니다. 열려 있는 행 그룹이 가득 차면 해당 상태가 .로 변경됩니다 CLOSED. 닫힌 행 그룹은 튜플 이동기에 의해 columnstore 형식으로 압축되고 상태가 변경됩니다 COMPRESSED. Tuple mover는 정기적으로 켜지는 백그라운드 프로세스로, 닫힌 열 그룹 중 columnstore 행 그룹으로 압축할 수 있는 그룹이 있는지 확인합니다. 또한 튜플 이동기는 모든 행이 삭제되는 모든 행 그룹을 할당 취소합니다. 할당 취소된 행 그룹은 로 표시됩니다 TOMBSTONE. 튜플 이동기를 즉시 실행하려면 문의 절을 ALTER INDEX 사용합니다REORGANIZE.

columnstore 행 그룹이 채워지면 압축되고 새 행 수락을 중지합니다. 압축된 그룹에서 행을 삭제하면 행은 그대로 유지되지만 삭제된 것으로 표시됩니다. 압축된 그룹에 대한 업데이트는 압축된 그룹에서 삭제로 구현되고 열려 있는 그룹에 삽입됩니다.

사용 권한

테이블에 대한 권한이 있는 경우 VIEW DEFINITION 테이블에 대한 정보를 반환합니다.

사용자가 소유하고 있거나 사용 권한을 부여 받은 보안 개체에 대해서만 카탈로그 뷰의 메타데이터를 볼 수 있습니다. 자세한 내용은 메타데이터 표시 유형 구성을 참조하세요.

예제

다음 예제에서는 뷰 및 다른 시스템 뷰를 조 sys.column_store_row_groups 인하여 클러스터형 columnstore 인덱스에 대한 정보를 반환합니다. 열은 percent_full 행 그룹의 효율성에 대한 추정값입니다.

SELECT i.object_id,
       OBJECT_SCHEMA_NAME(i.object_id) AS schema_name,
       OBJECT_NAME(i.object_id) AS table_name,
       i.name AS index_name,
       i.type_desc AS index_type_desc,
       rg.partition_number,
       rg.row_group_id,
       rg.state_description,
       rg.total_rows,
       rg.deleted_rows,
       rg.size_in_bytes,
       100 * (rg.total_rows - ISNULL(rg.deleted_rows, 0)) / total_rows AS percent_full
FROM sys.indexes AS i
     INNER JOIN sys.column_store_row_groups AS rg
         ON i.object_id = rg.object_id
        AND i.index_id = rg.index_id
WHERE INDEXPROPERTY(i.object_id, i.name, 'IsClustered') = 1
ORDER BY schema_name, table_name, index_name, row_group_id;

자세한 내용은 columnstore 인덱스의 조각화 확인을 참조하세요.