동적 테이블 성능 최적화를 위한 모범 사례

동적 테이블의 성능을 최적화하려면 시스템을 이해하고, 다양한 아이디어를 실험하고, 결과에 따라 반복해야 합니다. 예:

  1. 비용, 데이터 지연, 응답 시간 요구 사항에 따라 데이터 파이프라인을 개선하는 방법을 개발합니다.

  2. 다음 작업을 구현합니다.

    1. 작고 고정된 데이터 세트로 시작하여 쿼리를 빠르게 개발합니다.

    2. 이동 중인 데이터로 성능을 테스트합니다.

    3. 데이터 세트를 확장하여 요구 사항을 충족하는지 확인합니다.

  3. 조사 결과에 따라 워크로드를 조정합니다.

  4. 필요에 따라 반복하고, 성과에 가장 큰 영향을 미치는 작업을 우선시합니다.

또한, 다운스트림 지연을 사용하여 테이블 간의 새로 고침 종속성을 효율적으로 관리하고, 필요할 때만 새로 고침이 실행되도록 보장합니다.

참고

쿼리를 실행하면 동적 테이블은 일반 Snowflake 테이블과 유사한 성능을 보입니다. 자세한 내용은 Snowflake의 성능 최적화하기 섹션을 참조하십시오.

전체 새로 고침 성능

전체 새로 고침 동적 테이블은 CREATE TABLE … AS SELECT(CTAS라고도 함) 와 유사하게 수행됩니다. 전체 새로 고침은 다른 Snowflake 쿼리와 마찬가지로 최적화가 가능합니다.

증분 새로 고침 성능

동적 테이블에 대한 최적의 증분 새로 고침 성능을 달성하려면:

  • 소스와 동적 테이블 모두에 대해 새로 고침 사이의 변경 사항을 최소한으로 유지합니다. 이상적으로는 전체 데이터 세트의 5% 미만으로 유지합니다.

  • 행 수뿐만 아니라 수정된 마이크로 파티션의 수를 고려합니다. 증분 새로 고침이 수행해야 하는 작업의 양은 변경된 행뿐만 아니라 이러한 마이크로 파티션의 크기에 비례합니다.

  • 쿼리에서 조인, GROUP BYs, PARTITION BYs와 같은 그룹화 작업을 최소화합니다. 큰 공통 테이블 식(CTEs)을 더 작은 부분으로 나누고 각각에 대한 동적 테이블을 만듭니다. 과도한 집계 또는 조인으로 단일 동적 테이블에 과부하가 걸리지 않도록 합니다.

  • 테이블 변경 사항을 쿼리 키(예: 조인의 경우 GROUP BYs, PARTITION BYs)와 정렬하여 데이터 지역성을 보장합니다. 테이블이 이러한 키에 의해 자연스럽게 클러스터링되지 않는 경우 자동 클러스터링 을 사용하도록 설정하는 것이 좋습니다.