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

최종 업데이트 날짜: 2020년 3월 25일

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.    PG_CLASS_INFO 뷰에서 쿼리를 실행하여 테이블의 현재 분산 스타일을 확인합니다.

select relname, releffectivediststyle from PG_CLASS_INFo where relname = 'rs_example_test'

2.    분산 스타일이 AUTO 분산으로 설정되어 있는지 확인합니다.

select relname, releffectivediststyle from PG_CLASS_INFo where relname = 'rs_test2'
relname | releffectivediststyle
rs_test2 | 10

참고: releffectivediststyle 값이 10 또는 11일 경우, 분산 스타일을 지정하지 않고 테이블이 생성됩니다. 그러면 Amazon Redshift가 분산 스타일을 AUTO 배포에 할당합니다. 분산 스타일이 CREATE TABLE 구문에 지정될 경우 기본적으로 Amazon Redshift가 AUTO 분산을 적용합니다.

3.    AUTO 분산이 비활성화되면 분산 스타일이 지정된 테이블이 생성됩니다. 분산 스타일을 지정하면 COPY ANALYZE가 실행되지 않습니다.

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

create table rs_example_test (id int)diststyle even;

분산 스타일에 대한 자세한 내용은 데이터 분산 스타일 선택을 참조하십시오.

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

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

5.    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 트랜잭션에서 실행되지 않는지 확인합니다.


이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?