Amazon Redshift가 클러스터에 임시 테이블을 생성했는데, 그 이유를 알고 싶습니다. 또한 이러한 테이블이 노드에서 사용 가능한 메모리 공간을 사용하는지 알고 싶습니다.
해결 방법
Amazon Redshift는 데이터 정의 언어(DDL) 및 데이터 조작 언어(DML) 작업의 중간 쿼리 처리 결과를 저장하기 위해 임시 테이블을 생성합니다. Amazon Redshift는 이러한 테이블을 pg_temp_1 이름 지정 규칙을 사용하여 별도의 세션별 스키마에 저장합니다. 이 스키마에는 이름을 지정할 수 없습니다. 구체화된 뷰 새로 고침도 임시 테이블을 사용하여 중간 쿼리 결과를 저장합니다.
사용자는 CREATE TABLE 문에서 TEMPORARY 및 TEMP 키워드를 사용하여 임시 테이블을 만들 수도 있습니다.
중요: **#**으로 시작하는 테이블 이름을 지정하면 Amazon Redshift가 테이블을 임시 테이블로 생성합니다. 명령 예시:
create table #newtable (id) as select * from oldtable;
임시 테이블은 현재 세션 내에서만 표시됩니다. 세션이 종료되면 Amazon Redshift는 해당 세션에서 임시 테이블을 자동으로 삭제합니다.
클러스터에서 데이터 공유를 활성화하면 클러스터를 소비자로 설정할 수 있습니다. 이 시나리오에서 Amazon Redshift는 최종 사용자가 생산자 클러스터에서 검색하는 데이터 블록을 저장할 임시 객체를 생성합니다.
기본적으로 데이터베이스 사용자는 PUBLIC 그룹의 자동 멤버십을 통해 임시 테이블을 만들 수 있는 권한을 보유합니다. 이 권한을 차단하려면 다음 쿼리를 실행하여 PUBLIC 그룹에서 TEMP 권한을 취소하십시오.
Revoke TEMPORARY | TEMP on DATABASE db_name from GROUP PUBLIC;
참고: db_name을 데이터베이스 이름으로 바꾸십시오.
그런 다음, 임시 테이블 생성을 허용하려는 사용자 또는 사용자 그룹에 TEMP 권한을 명시적으로 부여합니다.
임시 테이블 스토리지 이해
임시 테이블은 컴퓨팅 노드의 로컬 스토리지를 사용합니다. 세션이 종료되고 Amazon Redshift가 임시 테이블을 삭제하면 Amazon Redshift는 스토리지를 노드로 다시 해제합니다. 임시 테이블은 다음 스토리지 요구 사항을 준수합니다.
- 임시 테이블은 클러스터의 전체 스토리지 할당을 사용하지만, 스토리지는 일시적이며 영구 데이터 스토리지 비용에 영향을 주지 않습니다.
- 임시 테이블이 사용하는 스토리지 양은 데이터 크기와 쿼리의 복잡성에 따라 달라집니다.
- 대규모 임시 테이블이 필요한 크고 복잡한 쿼리가 있는 경우 클러스터 스토리지 공간이 일시적으로 급증할 수 있습니다.
참고: 기본적으로 Amazon Redshift는 영구 테이블과 동일한 자동 압축을 임시 테이블에 적용합니다. 임시 테이블은 효율적인 쿼리 처리를 위해 설계되었으며 중간 결과를 저장하여 쿼리 성능을 향상합니다.
관련 정보
STV_TBL_PERM
STL_SAVE