SVV_DISKUSAGE - Amazon Redshift

SVV_DISKUSAGE

Amazon Redshift는 STV_TBL_PERM 테이블과 STV_BLOCKLIST 테이블을 조인하여 SVV_DISKUSAGE 시스템 뷰를 생성합니다. SVV_DISKUSAGE 뷰에는 데이터베이스의 테이블에 대한 데이터 할당에 관한 정보가 포함되어 있습니다.

다음 예에 나온 것처럼 SVV_DISKUSAGE에 집계 쿼리를 사용하여 데이터베이스, 테이블, 조각 또는 열마다 할당되는 디스크 블록의 수를 결정합니다. 각 데이터 블록이 1MB씩 사용합니다. 또한 STV_PARTITIONS를 사용하여 디스크 사용률에 대한 요약 정보를 볼 수 있습니다.

SVV_DISKUSAGE는 슈퍼 사용자에게만 표시됩니다. 자세한 내용은 시스템 테이블 및 뷰에 있는 데이터의 가시성 단원을 참조하십시오.

참고

이 보기는 프로비저닝된 클러스터를 쿼리할 때만 사용할 수 있습니다.

테이블 열

열 명칭 데이터 유형 설명
db_id 정수 데이터베이스 ID.
이름 character(72) 테이블 이름
slice 정수 테이블에 할당되는 데이터 조각.
col 정수 0부터 시작되는 열 인덱스. 생성하는 모든 테이블에는 INSERT_XID, DELETE_XID, ROW_ID(OID)라는 3개의 숨겨진 열이 추가되어 있습니다. 3개의 사용자 정의 열이 있는 테이블에는 6개의 실제 열이 포함되며, 사용자 정의 열은 내부적으로 0, 1, 2로 번호 지정됩니다. 이 예에서 INSERT_XID, DELETE_XID 및 ROW_ID 열은 각각 3, 4, 5로 번호 지정됩니다.
tbl 정수 테이블 ID.
blocknum 정수 데이터 블록의 ID.
num_values 정수 블록에 포함된 값의 수.
minvalue bigint 블록에 포함된 최솟값.
maxvalue bigint 블록에 포함된 최댓값.
sb_pos 정수 디스크 상의 슈퍼 블록 위치에 대한 내부 식별자.
pinned 정수 블록이 사전 로드의 일환으로 메모리에 고정되어 있는지 여부. 0 = false, 1 = true. 기본값은 false입니다.
on_disk 정수 블록이 디스크에 자동으로 저장되는지 여부. 0 = false, 1 = true. 기본값은 false입니다.
수정됨 정수 블록이 수정되었는지 여부. 0 = false, 1 = true. 기본값은 false입니다.
hdr_modified 정수 블록 헤더가 수정되었는지 여부. 0 = false, 1 = true. 기본값은 false입니다.
unsorted 정수 블록이 정렬되지 않았는지 여부. 0 = false, 1 = true. 기본값은 true입니다.
tombstone 정수 내부용.
preferred_diskno 정수 디스크에 결함이 발생하지 않은 경우, 블록이 있어야 할 디스크 번호. 디스크가 고쳐지면 블록은 이 디스크로 다시 이동합니다.
임시 정수 블록에 임시 테이블 또는 중간 쿼리 결과 같은 임시 데이터가 포함되는지 여부. 0 = false, 1 = true. 기본값은 false입니다.
newblock 정수 블록이 새것인지(true) 또는 디스크에 한번도 커밋되지 않았는지(false) 여부. 0 = false, 1 = true.

샘플 쿼리

SVV_DISKUSAGE는 할당된 디스크 블록당 하나의 행을 포함하므로 모든 행을 선택하는 쿼리는 매우 많은 수의 행을 반환할 수 있습니다. SVV_DISKUSAGE에는 집계 쿼리만을 사용하는 것이 좋습니다.

USERS 테이블의 열 6(EMAIL 열)에 할당된 블록의 최대 개수를 반환합니다.

select db_id, trim(name) as tablename, max(blocknum) from svv_diskusage where name='users' and col=6 group by db_id, name; db_id | tablename | max --------+-----------+----- 175857 | users | 2 (1 row)

다음 쿼리는 SALESNEW라고 하는 10열짜리 큰 테이블의 모든 열에 대해 비슷한 결과를 반환합니다. (열 10부터 12까지의 마지막 3행은 숨겨진 메타데이터 열을 위한 것입니다.)

select db_id, trim(name) as tablename, col, tbl, max(blocknum) from svv_diskusage where name='salesnew' group by db_id, name, col, tbl order by db_id, name, col, tbl; db_id | tablename | col | tbl | max --------+------------+-----+--------+----- 175857 | salesnew | 0 | 187605 | 154 175857 | salesnew | 1 | 187605 | 154 175857 | salesnew | 2 | 187605 | 154 175857 | salesnew | 3 | 187605 | 154 175857 | salesnew | 4 | 187605 | 154 175857 | salesnew | 5 | 187605 | 79 175857 | salesnew | 6 | 187605 | 79 175857 | salesnew | 7 | 187605 | 302 175857 | salesnew | 8 | 187605 | 302 175857 | salesnew | 9 | 187605 | 302 175857 | salesnew | 10 | 187605 | 3 175857 | salesnew | 11 | 187605 | 2 175857 | salesnew | 12 | 187605 | 296 (13 rows)