동적 테이블 성능 최적화를 위한 모범 사례¶
동적 테이블의 성능을 최적화하려면 시스템을 이해하고, 다양한 아이디어를 실험하고, 결과에 따라 반복해야 합니다. 예:
비용, 데이터 지연, 응답 시간 요구 사항에 따라 데이터 파이프라인을 개선하는 방법을 개발합니다.
다음 작업을 구현합니다.
작고 고정된 데이터 세트로 시작하여 쿼리를 빠르게 개발합니다.
이동 중인 데이터로 성능을 테스트합니다.
데이터 세트를 확장하여 요구 사항을 충족하는지 확인합니다.
조사 결과에 따라 워크로드를 조정합니다.
필요에 따라 반복하고, 성과에 가장 큰 영향을 미치는 작업을 우선시합니다.
또한, 다운스트림 지연을 사용하여 테이블 간의 새로 고침 종속성을 효율적으로 관리하고, 필요할 때만 새로 고침이 실행되도록 보장합니다.
참고
쿼리를 실행하면 동적 테이블은 일반 Snowflake 테이블과 유사한 성능을 보입니다. 자세한 내용은 Snowflake의 성능 최적화하기 섹션을 참조하십시오.
전체 새로 고침 성능¶
전체 새로 고침 동적 테이블은 CREATE TABLE … AS SELECT(CTAS라고도 함) 와 유사하게 수행됩니다. 전체 새로 고침은 다른 Snowflake 쿼리와 마찬가지로 최적화가 가능합니다.
증분 새로 고침 성능¶
동적 테이블에 대한 최적의 증분 새로 고침 성능을 달성하려면:
소스와 동적 테이블 모두에 대해 새로 고침 사이의 변경 사항을 최소한으로 유지합니다. 이상적으로는 전체 데이터 세트의 5% 미만으로 유지합니다.
행 수뿐만 아니라 수정된 마이크로 파티션의 수를 고려합니다. 증분 새로 고침이 수행해야 하는 작업의 양은 변경된 행뿐만 아니라 이러한 마이크로 파티션의 크기에 비례합니다.
쿼리에서 조인, GROUP BYs, PARTITION BYs와 같은 그룹화 작업을 최소화합니다. 큰 공통 테이블 식(CTEs)을 더 작은 부분으로 나누고 각각에 대한 동적 테이블을 만듭니다. 과도한 집계 또는 조인으로 단일 동적 테이블에 과부하가 걸리지 않도록 합니다.
테이블 변경 사항을 쿼리 키에 맞춰 정렬하여 데이터 지역성을 보장합니다. 예를 들어, 조인의 경우 GROUP BYs, PARTITION BYs 키를 사용합니다. 테이블이 이러한 키로 자연스럽게 클러스터링되지 않은 경우 :ref:`자동 클러스터링<label-cluster_dts>`을 활성화하는 것이 좋습니다.
일반적인 모범 사례¶
일반적인 중복 제거 및 상위 N개 사용 사례의 경우 순위 값이 1일 때 RANK 또는 ROW_NUMBER 순위 윈도우 함수에 최상위 수준 QUALIFY절을 사용합니다. 예:
QUALIFY ROW_NUMBER() OVER (PARTITION BY ... ORDER BY ...) = 1.