sys.column_store_row_groups(Transact-SQL)
적용 대상: SQL Server 2012(11.x) 이상 Azure SQL Managed Instance
관리자가 시스템 관리 결정을 내릴 수 있도록 세그먼트별로 클러스터형 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 보유하는 테이블 파티션의 ID입니다. partition_number 사용하여 이 DMV를 sys.partitions에 조인할 수 있습니다. |
row_group_id | int | 이 행 그룹과 연결된 행 그룹 번호입니다. 파티션 내에서 고유합니다. -1 = 메모리 내 테이블의 꼬리입니다. |
delta_store_hobt_id | bigint | 델타 저장소의 OPEN 행 그룹에 대한 hobt_id. 행 그룹이 델타 저장소에 없으면 NULL입니다. 메모리 내 테이블의 꼬리에 대한 NULL입니다. |
state | tinyint | state_description 연결된 ID 번호입니다. 0 = 보이지 않는 1 = OPEN 2 = CLOSED 3 = 압축됨 4 = 삭제 표시 |
state_description | nvarchar(60) | 행 그룹의 영구 상태 설명: INVISIBLE -델타 저장소의 데이터에서 빌드되는 프로세스의 숨겨진 압축 세그먼트입니다. 읽기 작업은 표시되지 않은 압축된 세그먼트가 완료될 때까지 델타 저장소를 사용합니다. 그런 다음 새 세그먼트가 표시되고 원본 델타 저장소가 제거됩니다. OPEN - 새 레코드를 허용하는 읽기/쓰기 행 그룹입니다. 열려 있는 행 그룹은 여전히 rowstore 형식이며 columnstore 형식으로 압축되지 않았습니다. CLOSED - 튜플 이동기 프로세스에 의해 채워졌지만 아직 압축되지 않은 행 그룹입니다. COMPRESSED - 채워지고 압축된 행 그룹입니다. |
total_rows | bigint | 행 그룹에 물리적으로 저장된 총 행입니다. 일부는 삭제되었을 수 있지만 여전히 저장됩니다. 행 그룹의 최대 행 수는 1,048,576개(16진수 FFFFF)입니다. |
deleted_rows | bigint | 삭제된 것으로 표시된 행 그룹의 총 행 수입니다. DELTA 행 그룹의 경우 항상 0입니다. |
size_in_bytes | bigint | 이 행 그룹에서 DELTA 및 COLUMNSTORE 행 그룹의 모든 데이터 크기(바이트 단위, 메타데이터 또는 공유 사전 제외)입니다. |
설명
클러스터형 또는 비클러스터형 columnstore 인덱스가 있는 각 테이블에 대해 각 columnstore 행 그룹에 대해 하나의 행을 반환합니다.
sys.column_store_row_groups 사용하여 행 그룹에 포함된 행 수와 행 그룹의 크기를 확인합니다.
행 그룹의 삭제된 행 수가 전체 행의 큰 비율로 증가하면 테이블의 효율성이 떨어집니다. columnstore 인덱스 다시 작성하여 테이블 크기를 줄여 테이블을 읽는 데 필요한 디스크 I/O를 줄입니다. columnstore 인덱스 다시 작성하려면 ALTER INDEX 문의 REBUILD 옵션을 사용합니다.
업데이트 가능한 columnstore는 먼저 rowstore 형식이며 델타 테이블이라고도 하는 OPEN 행 그룹에 새 데이터를 삽입합니다. 열려 있는 행 그룹이 가득 차면 상태가 CLOSED로 변경됩니다. 닫힌 행 그룹은 튜플 이동기에 의해 columnstore 형식으로 압축되고 상태는 COMPRESSED로 변경됩니다. Tuple mover는 정기적으로 켜지는 백그라운드 프로세스로, 닫힌 열 그룹 중 columnstore 행 그룹으로 압축할 수 있는 그룹이 있는지 확인합니다. 또한 튜플 이동기는 모든 행이 삭제된 행 그룹을 할당 취소합니다. 할당 취소된 행 그룹은 TOMBSTONE으로 표시됩니다. 튜플 이동기를 즉시 실행하려면 ALTER INDEX 문의 REORGANIZE 옵션을 사용합니다.
다 채워진 columnstore 행 그룹은 압축되며, 새 행을 수락하지 않습니다. 압축된 그룹에서 행이 삭제되면 행은 그대로 유지되지만 삭제된 것으로 표시됩니다. 압축된 그룹에 대한 업데이트는 압축된 그룹에서 삭제로 구현되고 열려 있는 그룹에 삽입됩니다.
사용 권한
테이블에 대한 권한이 있는 경우 VIEW DEFINITION
테이블에 대한 정보를 반환합니다.
사용자가 소유하고 있거나 사용 권한을 부여 받은 보안 개체에 대해서만 카탈로그 뷰의 메타데이터를 볼 수 있습니다. 자세한 내용은 Metadata Visibility Configuration을 참조하세요.
예제
다음 예제에서는 sys.column_store_row_groups 테이블을 다른 시스템 테이블에 조인하여 특정 테이블에 대한 정보를 반환합니다. 계산 PercentFull
열은 행 그룹의 효율성에 대한 추정값입니다. 단일 테이블에 대한 정보를 찾으려면 WHERE 절 앞에 있는 주석 하이픈을 제거하고 테이블 이름을 제공합니다.
SELECT i.object_id, object_name(i.object_id) AS TableName,
i.name AS IndexName, i.index_id, i.type_desc,
CSRowGroups.*,
100*(total_rows - ISNULL(deleted_rows,0))/total_rows AS PercentFull
FROM sys.indexes AS i
JOIN sys.column_store_row_groups AS CSRowGroups
ON i.object_id = CSRowGroups.object_id
AND i.index_id = CSRowGroups.index_id
--WHERE object_name(i.object_id) = '<table_name>'
ORDER BY object_name(i.object_id), i.name, row_group_id;
참고 항목
개체 카탈로그 뷰(Transact-SQL)
카탈로그 보기(Transact-SQL)
SQL Server 시스템 카탈로그 쿼리 FAQ
sys.columns(Transact-SQL)
sys.all_columns(Transact-SQL)
sys.computed_columns(Transact-SQL)
Columnstore 인덱스 가이드
sys.column_store_dictionaries(Transact-SQL)
sys.column_store_segments(Transact-SQL)