STATUPDATE가 꺼져 있을 때 Amazon Redshift가 COPY ANALYZE 프로세스를 실행하는 이유는 무엇인가요?

2분 분량
0

Amazon Redshift에서 COPY 명령을 사용하여 데이터를 새 테이블로 로드하려고 했습니다. 심지어 COMPUPDATE OFF 파라미터도 추가했습니다. 그래도 COPY ANALYZE가 실행되는 이유는 무엇인가요?

간략한 설명

Amazon Redshift에서 테이블을 생성하기 전에 테이블의 배포 스타일을 선택합니다. 테이블에서 배포 스타일을 지정하지 않더라도 기본으로 AUTO 배포가 지정됩니다. 그러면 Amazon Redshift의 AUTO 배포 기능이 COPY ANALYZE 프로세스를 사용하여 테이블이 EVEN 또는 ALL 배포를 사용해야 할지 결정합니다.

참고: COMPUPDATE OFF 파라미터는 여전히 AUTO 배포 스타일을 사용하여 테이블에서 COPY ANALYZE를 실행합니다. STATUPDATE OFF 파라미터는 COPY ANALYZE 명령을 비활성화하거나 제한하지 않습니다.

해결 방법

1.    SHOW TABLE을 실행하여 테이블의 현재 분포 스타일을 확인합니다.

SHOW TABLE [schema_name.]table_name

참고: 배포 스타일이 CREATE TABLE 구문에 지정될 경우 기본적으로 Amazon Redshift가 AUTO 배포를 적용합니다.

2.    AUTO 배포가 켜져 있으면 정의된 배포 스타일로 테이블을 생성합니다. 배포 스타일을 지정하면 COPY ANALYZE가 실행되지 않습니다.

다음 예시에서는 EVEN 배포 스타일이 지정됩니다.

create table rs_example_test (id int)diststyle even;

배포 스타일에 대한 자세한 내용을 알아보려면 데이터 배포 스타일 작업을 참조하세요.

3.    COPY 명령을 사용하여 데이터를 테이블에 로드한 다음, STATUPDATE OFF 파라미터와 함께 추가합니다.

참고: 개별 INSERT 구문을 사용하는 대신 COPY 명령을 사용하여 대량의 데이터를 로드하는 것이 좋습니다. 이렇게 하면 성능 문제가 발생할 위험이 최소화됩니다.

4.    SVL_STATEMENTTEXT 시스템 테이블에서 쿼리를 실행한 다음 세션과 관련된 프로세스 ID(PID)로 필터링합니다.

select userid, xid, pid, trim(label) as label, starttime, endtime, sequence, trim(type) as type, left(text,60) text from svl_statementtext where pid = 26815 order by xid, starttime, sequence;

위의 구문은 COPY ANALYZECOPY 트랜잭션의 일부로 실행되었는지 확인합니다.

출력은 다음과 유사합니다.

userid      xid            pid    label      starttime            endtime               sequence     type      text
100       78915    26815   default      2019-03-19  14:06:19    2019-03-19 14:06:21   0             QUERY      copy rs_test3 from 's3://xxxxx-rs-log/AWSLogs/rs_test2.csv'\
100       78915    26815   default      2019-03-19  14:06:21    2019-03-19 14:06:21   0             UTILITY  COMMIT

이를 통해 COPY ANALYZE가 더 이상 COPY 트랜잭션에서 실행되지 않는지 확인합니다.


관련 정보

스테이징 테이블을 사용하여 병합 실행(Upsert)

AWS 공식
AWS 공식업데이트됨 2년 전
댓글 없음