STV_TBL_PERM
STV_TBL_PERM 테이블에는 사용자가 현재 세션에서 임시로 생성한 테이블을 포함하여 Amazon Redshift의 영구 테이블에 대한 정보가 저장됩니다. 또한 모든 데이터베이스의 전체 테이블에 대한 정보가 저장됩니다.
이 테이블은 STV_TBL_TRANS와 다릅니다. STV_TBL_TRANS 테이블에는 시스템이 쿼리 처리 중 일시적으로 생성하는 데이터베이스 테이블에 대한 정보가 저장됩니다.
STV_TBL_PERM은 슈퍼 사용자에게만 표시됩니다. 자세한 내용은 시스템 테이블 및 뷰에 있는 데이터의 가시성 단원을 참조하십시오.
테이블 열
열 명칭 | 데이터 유형 | 설명 |
---|---|---|
slice | 정수 | 테이블에 할당되는 노드 조각 |
id | 정수 | 테이블 ID. |
name | 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)