Delta Lake에 대한 데이터 건너뛰기
참고 항목
Databricks Runtime 13.3 이상에서 Databricks는 델타 테이블 레이아웃에 액체 클러스터링을 사용하는 것이 좋습니다. 클러스터링이 Z 순서 지정과 호환되지 않습니다. 델타 테이블대한 액체 클러스터링 사용
데이터 건너뛰기 정보는 델타 테이블에 데이터를 쓸 때 자동으로 수집됩니다. Azure Databricks의 Delta Lake는 쿼리 시간에 이 정보(최소값 및 최대값, null 개수 및 파일당 총 레코드)를 활용하여 더 빠른 쿼리를 제공합니다.
ZORDER
문에 사용되는 열에 대해 수집된 통계가 있어야 합니다. Z 순서 지정이란?을 참조하세요.
델타 통계 열 지정
기본적으로 Delta Lake는 테이블 스키마에 정의된 처음 32개 열에 대한 통계를 수집합니다. 예측 최적화를 사용하도록 설정하면 파일 건너뛰기 통계가 지능적으로 선택되며 처음 32개 열로 제한되지 않습니다. 예측 최적화는 Unity 카탈로그가 관리하는 테이블에서 통계를 수집하기 위한 명령인 ANALYZE
을 자동으로 실행합니다. Databricks는 데이터 유지 관리를 간소화하고 스토리지 비용을 절감하기 위해 모든 Unity 카탈로그 관리 테이블에 대해 예측 최적화를 사용하도록 설정하는 것이 좋습니다.
Unity 카탈로그 관리 테이블에 대한 예측 최적화를 참조하십시오.
Important
예측 최적화 ANALYZE
는 공개 미리 보기로 제공됩니다. 여기에는 쓰기 중에 지능형 통계 수집이 포함됩니다. 공개 미리 보기에 등록하려면 이 양식을 사용합니다.
예측 최적화를 사용하지 않는 경우 다음 테이블 속성 중 하나를 설정하여 통계 컬렉션을 32열로 제한하는 동작을 수정할 수 있습니다.
Table 속성 | Databricks 런타임 지원 | 설명 |
---|---|---|
delta.dataSkippingNumIndexedCols |
지원되는 모든 Databricks 런타임 버전 | 델타에서 통계를 수집하는 열 수를 늘리거나 줄입니다. 열 순서에 따라 달라집니다. |
delta.dataSkippingStatsColumns |
Databricks Runtime 13.3 LTS 이상 | Delta Lake에서 통계를 수집하는 열 이름 목록을 지정합니다. 대체합니다 dataSkippingNumIndexedCols . |
테이블 속성은 테이블을 만들 때 또는 ALTER TABLE
문을 사용하여 설정할 수 있습니다.
델타 테이블 속성 참조을 보세요.
이러한 속성을 업데이트해도 기존 데이터에 대한 통계가 자동으로 다시 계산되지는 않습니다. 대신 테이블에서 데이터를 추가하거나 업데이트할 때 향후 통계 수집의 동작에 영향을 줍니다. Delta Lake는 현재 통계 열 목록에 포함되지 않은 열에 대한 통계를 활용하지 않습니다.
Databricks Runtime 14.3 LTS 이상에서 테이블 속성을 변경하거나 통계에 대해 지정된 열을 변경한 경우 다음 명령을 사용하여 Delta 테이블에 대한 통계 다시 계산을 수동으로 트리거할 수 있습니다.
ANALYZE TABLE table_name COMPUTE DELTA STATISTICS
참고 항목
긴 문자열은 통계 수집 중에 잘립니다. 특히 열이 쿼리 필터링에 자주 사용되지 않는 경우 통계 컬렉션에서 긴 문자열 열을 제외하도록 선택할 수 있습니다.
Z 순서 지정이란?
참고 항목
Databricks는 모든 새 델타 테이블에 액체 클러스터링을 사용하는 것이 좋습니다. 액체 클러스터링과 함께 사용할 ZORDER
수 없습니다.
Z 순서 지정은 관련 정보를 동일한 파일 집합에 공동 배치하는 ZORDER BY
절에서 정렬할 열을 지정합니다.
OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType)
열이 쿼리 조건자에서 일반적으로 사용되어야 하고 해당 열의 카디널리티가 높은 경우(즉, 고유 값이 많은 경우) ZORDER BY
사용합니다.
여러 열을 ZORDER BY
로 쉼표로 구분된 목록으로 지정할 수 있습니다. 그러나 데이터 지역성의 효과는 열이 더 추가될수록 감소합니다. 수집된 통계가 없는 열에 대한 Z 순서 지정은 비효율적이며 리소스 낭비가 될 수 있습니다. 데이터 건너뛰기에는 최솟값, 최댓값 및 개수와 같은 열 로컬 통계가 필요하기 때문입니다. 스키마의 열 순서를 다시 지정하여 특정 열에서 통계 수집을 구성하거나 통계를 수집할 열 수를 늘릴 수 있습니다.
참고 항목
Z 순서 지정은 idempotent 가 아니지만 증분 작업이 되는 것을 목표로 합니다. 여러 번 실행할 때 Z-순서 지정에 걸리는 시간이 감소한다는 보장은 없습니다. 그러나 Z 순서로 된 파티션에 새 데이터가 추가되지 않은 경우 해당 파티션의 다른 Z 순서는 아무런 영향을 미치지 않습니다.
Z 순서 지정은 튜플 수와 관련하여 균등하게 균형 잡힌 데이터 파일을 생성하는 것을 목표로 하지만 반드시 디스크의 데이터 크기는 아닙니다. 두 측정값은 가장 자주 상관 관계가 있지만 그렇지 않은 경우가 있을 수 있으므로 최적화 작업 시간이 왜곡될 수 있습니다.
예를 들어,
ZORDER BY
날짜이고 최근 레코드가 과거의 레코드보다 훨씬 더 넓은 경우(예: 더 긴 배열 또는 문자열 값),OPTIMIZE
작업의 작업 기간이 편향되고 결과 파일 크기도 왜곡될 것으로 예상됩니다. 그러나 이는OPTIMIZE
명령 자체에 대한 문제일 뿐이며, 후속 쿼리에 부정적인 영향을 주지 않아야 합니다.