STV_TBL_PERM - Amazon Redshift

STV_TBL_PERM

STV_TBL_PERM 테이블에는 사용자가 현재 세션에서 임시로 생성한 테이블을 포함하여 Amazon Redshift의 영구 테이블에 대한 정보가 저장됩니다. 또한 모든 데이터베이스의 전체 테이블에 대한 정보가 저장됩니다.

이 테이블은 STV_TBL_TRANS와 다릅니다. STV_TBL_TRANS 테이블에는 시스템이 쿼리 처리 중 일시적으로 생성하는 데이터베이스 테이블에 대한 정보가 저장됩니다.

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

테이블 열

열 명칭 데이터 유형 설명
slice 정수 테이블에 할당되는 노드 조각
id 정수 테이블 ID.
이름 character(72) 테이블 이름
rows bigint 조각에 포함된 데이터 행의 수
sorted_rows bigint 조각에서 이미 디스크에 정렬된 행의 수. 이 수가 ROWS 수와 일치하지 않으면 테이블을 정리하여 행을 재정렬하십시오.
temp 정수 테이블의 임시 테이블 여부. 0 = false, 1 = true.
db_id 정수 테이블이 생성된 데이터베이스의 ID
insert_pristine 정수 내부용.
delete_pristine 정수 내부용.
백업 정수 클러스터 스냅샷의 테이블 포함 여부를 나타내는 값. 0 = 예, 1 = 아니요. 자세한 내용은 CREATE TABLE 명령의 BACKUP 파라미터를 참조하십시오.
dist_style 정수 조각이 속한 테이블의 배포 스타일입니다. 값에 대한 자세한 내용은 분산 스타일 보기 섹션을 참조하세요. 배포 스타일에 대한 자세한 내용은 분산 스타일 섹션을 참조하세요.
block_count 정수 조각에서 사용하는 블록 수입니다. 블록 수를 계산할 수 없는 경우 값은 -1입니다.

샘플 쿼리

다음은 서로 다른 테이블 ID와 이름 목록을 반환하는 쿼리입니다.

select distinct id, name from stv_tbl_perm order by name; id | name --------+------------------------- 100571 | category 100575 | date 100580 | event 100596 | listing 100003 | padb_config_harvest 100612 | sales ...

다른 시스템 테이블들은 테이블 ID를 사용하기 때문에 특정 테이블의 테이블 ID를 알고 있다면 매우 유용하게 사용할 수 있습니다. 위 예에서 SELECT DISTINCT는 테이블이 다수의 조각으로 분산되면서 중복된 테이블을 제거하기 위해 사용되었습니다.

VENUE 테이블의 각 열에서 사용하는 블록 수를 확인하려면 다음과 같이 쿼리를 입력합니다.

select col, count(*) from stv_blocklist, stv_tbl_perm where stv_blocklist.tbl = stv_tbl_perm.id and stv_blocklist.slice = stv_tbl_perm.slice and stv_tbl_perm.name = 'venue' group by col order by col; col | count -----+------- 0 | 8 1 | 8 2 | 8 3 | 8 4 | 8 5 | 8 6 | 8 7 | 8 (8 rows)

사용 노트

ROWS 열에는 삭제만 되고 아직 정리되지 않은(또는 SORT ONLY 옵션과 함께 정리된) 행의 수가 포함됩니다. 따라서 STV_TBL_PERM 테이블에서 ROWS 열의 SUM 결과는 임의 테이블에 대해 직접 쿼리를 실행했을 때 COUNT(*) 결과와 일치하지 않을 수도 있습니다. 예를 들어 VENUE 테이블에서 행 2개를 삭제한 경우 COUNT(*) 결과가 200이지만 SUM(ROWS) 결과는 여전히 202입니다.

delete from venue where venueid in (1,2); select count(*) from venue; count ------- 200 (1 row) select trim(name) tablename, sum(rows) from stv_tbl_perm where name='venue' group by name; tablename | sum -----------+----- venue | 202 (1 row)

STV_TBL_PERM의 데이터를 동기화하려면 VENUE 테이블에 대한 전체 정리를 실행하십시오.

vacuum venue; select trim(name) tablename, sum(rows) from stv_tbl_perm where name='venue' group by name; tablename | sum -----------+----- venue | 200 (1 row)