내용으로 건너뛰기

Amazon Redshift 클러스터의 구체화된 뷰가 새로 고쳐지지 않는 이유는 무엇입니까?

3분 분량
0

Amazon Redshift 클러스터의 구체화된 뷰가 새로 고쳐지지 않습니다.

간략한 설명

다음 시나리오에서는 Amazon Redshift의 구체화된 뷰 새로 고침이 불가능하거나 완료 시간이 길어집니다.

  • 권한 오류로 인해 REFRESH MATERIALIZED VIEW 작업이 불가능합니다.
  • 기본 테이블 동시 VACUUMTRUNCATE 작업은 새로 고침을 차단하고 다음 오류를 반환합니다. "Invalid operation: Materialized view mv_name could not be refreshed as a base table changed physically due to vacuum/truncate concurrently. Please try again".
  • REFRESH MATERIALIZED VIEW를 새로 고칠 수 없습니다.
  • 활성 워크로드가 자동 새로 고침 활동을 차단합니다.

해결 방법

참고: Amazon Redshift Serverless 클러스터의 경우 프로비저닝된 클러스터에서 사용되는 시스템 뷰(STL, STV, SVL, SVV) 대신 SYS 모니터링 뷰를 사용하십시오. 자세한 내용은 SYS 모니터링 뷰로 마이그레이션하기 위한 시스템 뷰 매핑을 참조하십시오.

REFRESH MATERIALIZED VIEW 권한 오류

구체화된 뷰에서 REFRESH MATERIALIZED VIEW 작업을 수행하려면 소유자여야 합니다. 또한 기본 테이블에 대한 SELECT 권한과 스키마에 대한 USAGE 권한이 있어야 합니다.

전체 재계산 작업에는 스키마에 대한 CREATE 권한이 있어야 합니다. 권한을 정의하는 방법에 대한 자세한 내용은 GRANT를 참조하십시오.

자동 새로 고침에 대한 자세한 내용은 구체화된 뷰 자동 새로 고침을 참조하십시오.

REFRESH MATERIALIZED VIEWVACUUM을 기본 테이블에서 동시에 실행하도록 제출하면 다음 오류가 발생합니다. "Invalid operation: Materialized view mv_name could not be refreshed as a base table changed physically due to vacuum/truncate concurrently. Please try again;".

작업이 완료된 후 REFRESH MATERIALIZED VIEW 명령을 다시 제출하십시오.

REFRESH MATERIALIZED VIEW 새로 고침 실패

다음 작업으로 인해 구체화된 뷰 새로 고침이 실패할 수 있습니다.

  • 열의 이름을 바꾸거나 열을 삭제합니다.
  • 열 유형을 변경합니다.
  • 기본 테이블 또는 스키마의 이름을 변경합니다.

참고: 이러한 조건에서 구체화된 뷰는 쿼리할 수 있지만 새로 고칠 수는 없습니다. 제약 조건은 해당 열을 구체화된 뷰에서 사용하지 않는 경우에도 적용됩니다.

오류 메시지 예시:

  • Detail: Procedure <mv_sp_*****_2_1> does not exist.
  • column <column name> does not exist.
  • DETAIL: schema "<schema name>" does not exist.
  • ERROR: Materialized view <my name> is unrefreshable as a base table was renamed.

구체화된 뷰의 새로 고침 활동을 보려면 Amazon Redshift 프로비저닝 클러스터의 경우 SVL_MV_REFRESH_STATUS를 사용하거나 Amazon Redshift Serverless 클러스터의 경우 SYS_MV_REFRESH_HISTORY를 사용하십시오.

구체화된 뷰의 데이터가 오래되었는지 여부를 확인하고 구체화된 뷰 상태 정보를 보려면 STV_MV_INFO, SYS_MV_STATE 또는 SYS_MV_REFRESH_HISTORY를 사용하십시오.

구체화된 뷰를 새로 고칠 수 없는 경우 현재 데이터를 유지하기 위해 해당 뷰를 삭제하고 다시 생성하십시오.

장기 실행 REFRESH MATERIALIZED VIEW 작업

REFRESH MATERIALIZED VIEW 명령은 클러스터에서 일반 쿼리로 실행됩니다.

쿼리 실행을 확인하려면 다음 작업을 수행하십시오.

  • 데이터에 대한 활성 쿼리를 확인하려면 STV_INFLIGHT를 사용하십시오.
  • 현재 WLM 쿼리 상태를 모니터링하려면 STV_WLM_QUERY_STATE를 사용하십시오.
  • 컴퓨팅 노드의 활성 쿼리 및 쿼리 단계를 검토하려면 STV_EXEC_STATE를 사용하십시오.

REFRESH MATERIALIZED VIEW 작업을 모니터링하려면 다음 시스템 뷰를 사용하십시오.

  • 데이터베이스의 테이블에 대한 현재 업데이트를 보려면 STV_LOCKS를 사용하십시오.
  • WLM의 서비스 클래스 구성을 보려면 STV_WLM_SERVICE_CLASS_CONFIG를 사용하십시오.
  • 구체화된 뷰가 증분 새로 고침을 받았는지 아니면 전체 새로 고침을 받았는지 확인하려면 SVL_MV_REFRESH_STATUS를 사용하십시오.

REFRESH MATERIALIZED VIEW 성능이 느린 경우 쿼리 성능 개선을 참조하십시오.

활성 워크로드 중 숨겨진 새로 고침 상태

Amazon Redshift는 자동 새로 고침보다 워크로드에 우선순위를 부여합니다. 이 우선순위 지정은 자동 새로 고침을 중지하여 워크로드 성능을 유지하고 일부 구체화된 뷰에 대한 업데이트를 지연할 수 있습니다. 일부 상황에서는 구체화된 뷰에 대한 보다 예측 가능한 새로 고침 동작이 필요할 수 있습니다.

예측 가능한 새로 고침 동작을 촉진하려면 다음 작업을 수행하십시오.

  • REFRESH MATERIALIZED VIEW를 수동으로 실행합니다.
  • Amazon Redshift 스케줄러 API 또는 콘솔을 통해 새로 고침을 예약합니다.
AWS 공식업데이트됨 8달 전