모범 사례¶
이 항목에서는 Snowflake에서 Apache Iceberg™ 테이블로 작업할 때의 모범 사례를 제공합니다.
사용 사례에 적합한 충분한 외부 볼륨 만들기¶
각 외부 볼륨은 특정 활성 저장소 위치 과 연결되며, 하나의 외부 볼륨은 여러 개의 Iceberg 테이블을 지원할 수 있습니다. 그러나 필요한 외부 볼륨의 수는 테이블 데이터를 어떻게 저장, 구성하고 보호할 것인지에 따라 달라집니다.
동일한 저장 위치(예: 동일한 S3 버킷) 아래의 하위 디렉터리에 모든 Snowflake-Iceberg 테이블에 대한 데이터와 메타데이터를 저장할 경우 단일 외부 볼륨을 사용할 수 있습니다. Snowflake 관리 테이블에 대해 이러한 디렉터리를 구성하려면 데이터 및 메타데이터 디렉터리 섹션을 참조하십시오.
또는 여러 개의 외부 볼륨을 생성하여 다양한 저장 위치를 각기 다르게 보호할 수 있습니다. 예를 들어, 다음과 같은 외부 볼륨을 생성할 수 있습니다.
외부에서 관리되는 Iceberg 테이블을 위한 읽기 전용 외부 볼륨입니다.
Snowflake 관리 테이블에 대한 읽기 및 쓰기 액세스 권한이 구성된 외부 볼륨입니다.
데이터 로딩을 위해 권장되는 파일 형식 옵션 사용¶
COPY INTO <테이블> 및 Snowpipe 를 사용하여 데이터를 로드하려면 Parquet 데이터 파일에 다음 형식 옵션을 사용합니다.
BINARY_AS_TEXT = FALSE
USE_LOGICAL_TYPE = TRUE
USE_VECTORIZED_SCANNER = TRUE
REPLACE_INVALID_CHARACTERS = TRUE
외부에서 관리되는 테이블을 자주 새로 고치기¶
긴 새로 고침 시간을 방지하고 최신 테이블 데이터를 빠르게 가져오려면 외부 카탈로그를 사용하는 Iceberg 테이블을 자주 새로 고칩니다.
Snowflake는 작업에 시간이 오래 걸릴 것으로 예상되는 경우 테이블 새로 고침을 최적화하려고 시도합니다. 그러나 새로 고침 시간은 궁극적으로 테이블과 연결된 스냅샷 수와 테이블에 속하는 데이터 파일의 수에 따라 달라집니다.
또한 Snowflake 새로 고침 일정을 스냅샷 만료 또는 압축과 같은 테이블 유지 관리 작업과 맞추는 것도 중요합니다. 유지 관리 작업을 수행할 때마다 메타데이터를 새로 고칩니다.
자세한 지침은 테이블 메타데이터 새로 고침 섹션을 참조하십시오.
전체 통계 작성하기¶
Snowflake에서 관리되지 않는 테이블의 쿼리 런타임 성능을 최적화하려면 Parquet 파일 통계가 가능한 한 완벽한지 확인합니다.
사용하는 Parquet 파일 작성기(예: Spark 또는 Trino)가 통계를 작성하도록 구성되어 있는지 확인합니다. 작성기를 최신 버전으로 업데이트해야 할 수도 있습니다.
다음과 같은 통계가 누락되면 쿼리 성능이 저하됩니다.
최소값 및 최대값.
고유 값(NDV) 개수. 고유한 값 개수는 복잡한 조인에서 조인 순서를 결정하는 데 사용됩니다. NDV 통계가 누락되면 조인이 폭발적으로 증가할 수 있습니다.
NULL의 개수가 중요합니다.
웨어하우스 크기 늘리기¶
외부 카탈로그를 사용하는 Iceberg 테이블을 생성하면 Snowflake는 더 빠른 성능을 제공하기 위해 테이블 매니페스트 파일에서 통계를 읽으려고 시도합니다.
매니페스트 파일에 통계가 누락되거나 잘못된 통계가 있는 등 일부 상황에서는 Snowflake가 테이블 데이터 파일에서 통계를 검색합니다. 많은 수의 데이터 파일을 스캔하면 테이블 생성 속도가 느려질 수 있습니다. 테이블 생성 프로세스를 가속화하려면 테이블 파일을 병렬로 스캔할 수 있는 더 큰 웨어하우스를 사용하십시오.
참고
Snowflake는 테이블 열 스캐닝을 병렬화하지 않습니다. 더 큰 규모의 웨어하우스로 전환해도 쿼리 런타임이 더 빨라지지 않습니다.
사용 사례에 맞는 올바른 저장소 직렬화 정책 선택¶
사용 사례에 적합한 STORAGE_SERIALIZATION_POLICY
를 선택합니다. Snowflake 관리 테이블을 생성하거나 Snowflake를 카탈로그로 사용하도록 테이블을 변환할 때 해당 테이블에 대한 저장소 직렬화 정책을 설정합니다. 직렬화 정책은 Snowflake에 테이블 데이터 파일에 대해 어떤 종류의 인코딩 및 압축을 수행할지 알려줍니다.
적합하지 않은 정책으로 인해 테이블이 외부 엔진과 호환되지 않거나 Snowflake에서 성능이 저하될 수 있습니다.
자세한 내용은 CREATE ICEBERG TABLE(Iceberg 카탈로그로서의 Snowflake) 섹션을 참조하십시오.